2013-01-02 129 views
2

林内函数试图将preg_match命令的else函数中使用if功能。如何使用如果其他功能

$month1data从CURL中提取并已检查到工作。

下面的代码是:

global $attempt; 
$attempt = mysql_escape_string($_GET['attempt']); 

if (preg_match('/<td colspan=8(.*)<\/table/s', $month1data, $matches)) { 
    //Content found do stuff here 

    unset ($ch); 
    unset ($cache); 
    unset ($firstmonthdata); 
    unset ($matches); 
} else { // start else preg match 
    if ($attempt = '3') { //start if attempt = 3 

     echo 'failed 3 times - showing error'; 
     echo '<script type="text/javascript"> 
     <!-- 
     window.location = "http://www.website.com/error.php?error=2" 
     //--> 
     </script>'; 

    } // end if attempt = 3 
    else { //start if attempt dont = 3 

     echo 'keep trying for 3 times'; 
     $attempt = $attempt +1; 
     echo '<script type="text/javascript"> 
     <!-- 
     window.location = "http://www.website.com/page.php?email=' . $email . '&password=' . $password . '&attempt=' . $attempt . '" 
     //--> 
     </script>'; 
    }// end if attempt dont 3 else 
} // end else preg match 

但是每当页面加载它直接引导到错误页面:

"http://www.website.com/error.php?error=2" 

我已经看了几个人的职位,但不能看到什么错了,是否有可能以这种方式实现这些方法,或者只是缺少一些东西?

回答

5

它应该是:

if ($attempt === '3') { 
      ^^^ 

您分配3$attempt

甚至更​​好,因为似乎没有数据库参与:

$attempt = (int) $_GET['attempt']; 

... 

if ($attempt === 3) { 

编辑:除此之外,你会过得更好使用会话对这种尝试的检查为游客可以轻松地处理查询串。

+0

感谢你,我无法相信我错过了这一点,说明了为什么你不应该忽视简单的事情! – Jack

+1

@Jack,请参阅http://stackoverflow.com/a/13783985/1592648以获取有关如何避免将来出现此类错误的提示。 = o) –

+1

我会检查出来的,谢谢!这样一个真棒社区:) – Jack

2

if ($attempt = '3') 

应该

if ($attempt == '3') 
+1

谢谢你,我不能相信我错过了这一点,说明你为什么不应该忽视简单的事情! – Jack

+0

不要忘了将其中一个答案标记为正确答案,:) –