2012-08-09 45 views
0

我正在學習如何使用「的setcookie」,但是,我不能讓下面的行工作, 我在這裏貼上我的所有代碼,如果有人能夠給請我幫忙? 不知道原因。 非常感謝。PHP的模具()不工作(簡單的代碼)

else{ die ("hahahahahahahahahahahahahaha"); } 

HTML代碼

<form method="POST" action=""> 
<div class="error"><?php echo $error;?></div> 
<p></p> 
<label>Username: </label><br> 
<input type="text" name="username"><br> 
<label>Password: </label><br> 
<input type="password" name="password"><br> 
<input type="checkbox" name="rememberme"> Remember me<br> 
<input type="submit" name="submit" value="Login"> 

PHP代碼

<? 
if(isset($_POST['submit'])){ 
    //get data 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $rememberme = isset($_POST['rememberme']); 
    echo $rememberme; 


    if($username&&$password){ 
    $login = mysql_query("SELECT * FROM form WHERE username='$username'"); 

    while ($row = mysql_fetch_assoc($login)) 
    { 
     $db_password = $row['password']; 
     if (md5($password)== $db_password) 
     { 
      $logstatus = TRUE; 
      } 
     else{ 
      $logstatus = FALSE; 
      } 
     if ($logstatus == TRUE) 
     { 
      if ($rememberme == "1") 
       setcookie("username", $username, time()+600); 
      else if ($rememberme == "") 
       $_SESSION['username'] = $username; 


     echo " I am here"; 
     } 

     else{ 
      die ("hahahahahahahahahahahahahaha"); //unable to get here 
     } 
    } 

} 

    else{ 
    echo "enter username/password"; 
    } 
} 
?> 
+0

你不需要爲1分貝行 – 2012-08-09 03:48:16

+0

一個while()循環您能得到什麼? – xdazz 2012-08-09 03:49:21

+0

是否將$ logstatus設置爲FALSE?即密碼是否與傳入的密碼相匹配?如果die()沒有被調用,你會看到:echo「我在這裏」; ? – Roger 2012-08-09 03:50:06

回答

0

試試這個代碼,我沒有測試它,但應該工作:)

session_start();//dont forget this :P 
if(isset($_POST['submit'])){ 
    //get data 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    $rememberme = isset($_POST['rememberme']); 
    echo $rememberme;  
if($username&&$password){ 
    $login = mysql_query("SELECT * FROM form WHERE username='$username' AND password='".md5($password)."'"); 


     if (mysql_num_rows($login))//if this returns 1 you are logged in 
     { 
      if ($rememberme == "1") 
       setcookie("username", $username, time()+600); 
      else 
       $_SESSION['username'] = $username; 


       echo " I am here";    

     }else{ 
      die ("Incorrect Username/Password"); //unable to get here 
     } 
    } 

} 

    else{ 
    echo "enter username/password"; 
    } 
} 
+0

感謝您的代碼,不幸的是,我得到這個mysql_num_rows()期望參數1是資源,布爾給出.....否則,它的工作原理! – olo 2012-08-09 04:15:07

+0

然後問題出在你的SQL查詢中,檢查它=) – 2012-08-09 04:20:28

+0

@olo這意味着你的查詢或你的數據庫連接有問題。 '$ login'可能是'(boolean)FALSE'這可能意味着你的[mysql_query()調用失敗](http://us3.php.net/manual/en/function.mysql-query.php#refsect1- function.mysql查詢-returnvalues)。你連接到你的數據庫?在您的示例中,我沒有看到任何表示的內容(儘管您明智地排除這些細節)。 – BrianS 2012-08-09 04:21:21

-1

while循環導致的問題,只需將其刪除。

+0

謝謝,我刪除了,但仍然無法獲得「死()」; – olo 2012-08-09 03:57:16

-1

嗯,我沒有測試的代碼,但嘗試以下可能的幫助。

添加一行:

$logstatus = TRUE; 

前一陣。

理由: 範圍可變的,一旦完成如塊飾面。定義外部的logstatus,同時確保其範圍不會在需要的地方結束。

+0

'while'和if-then-else塊不會在PHP中創建新範圍。 – animuson 2012-08-09 03:58:04