2013-01-02 160 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

不要忘了將其中一個答案標記爲正確答案,:) –