2013-07-08 163 views
-1

我试图在窗体中创建PHP日志。我的代码如下。 if-else语句运行不正常。请解决这个问题。无法在登录时检查密码和用户名

$connect = mysql_connect("localhost", "root", ""); //connect 
    mysql_select_db("elective_mgmt", $connect); 
    $username = $_GET["name"]; 
    $password = $_GET["password"]; 
    $query = "SELECT * from verify_student where 
     username='$username' && password='$password'"; 
    $result = mysql_query($query); 
    $row = mysql_fetch_array($result); 
    if (name == $username && password == $password) 
     echo "you are logged in"; 
    else 
     echo "please recheck your password and username"; 
+7

共脏的代码,我不会解决您的问题因为它w生病只是让你更lazier ..相反,我会建议你先学习PHP,并开始编写代码...另请注意,登录将永远不可能没有会话... –

+5

你是开放的SQL注入。另外,通过使用'$ _GET',你可以在URL中加入'password'。 – Sean

+1

var_dump $ username,$ password,$ result的值是什么。 这行是错误的'if(name == $ username && password == $ password)'。想想什么是名字?它来自哪里.. – Ruwantha

回答

0

这里有个问题。

if(name==$username && password==$password) 

应该

if($row['name']==$username && $row['password']==$password) 

OR

if(mysql_num_rows($result) == 1) 

你应该看看 - Why shouldn't I use mysql_* functions in PHP?

+0

实际上,他应该使用'mysql_num_rows()'来检查查询是否返回1,如果是,那么直接返回失败.. –

+0

是的..你是写。我只是纠正语法。 –

+0

@ Mr.Alien .. updated .. :) –

1
$result = mysql_query($query); 
if(mysql_num_rows($result) > 0){ 
echo "you are logged in"; 
} 
    else 
     echo "please recheck your password and username"; 

您可以阿尔斯o通过计算的数量来完成此操作。在你的代码$row是一个数组所以whenver你需要存取权限的数组元素做到这一点$row['name']

+0

@ Moeed,谢谢哥们! –

0

你可以删除你的if/else语句,因为你检查输入已经与你的MySQL查询(名称& &密码),并更换与mysql_num_rows == 1(正如其他人已经提到过)。

看来你是新的PHP和创建日志的形式,所以让我给你一个很好的建议:

  1. 的日志表单输入的值不应通过URL传递,使用方法后改为
  2. 不保存密码的加密(使用SHA512因为MD5被认为是不安全的)
  3. 从来没有使用单一的信息在日志的状态存储在会话
相关问题