2012-08-09 51 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