我在php中创建了登录页面的代码。但我需要知道代码是否正确。它没有正常工作。即使我输入了正确的用户名和密码,也会说“你不是有效的用户。请再试一次”。我怎样才能解决这个问题?? 代码如下;
<?php
$uname=$_POST['uname'];
$pwd=$_POST['pwd'];
if ($uname) {
$dhost="localhost";
$dusername="locas";
$dpassword="locas@learn";
$db="locas";
mysql_connect($dhost,$dusername,$dpassword) or die("cannot connect");
mysql_select_db("$db")or die("cannot select db");
echo "$uname<br>";
$result=mysql_query("select user.fname,password.pwd from user,password where user.uid=password.uid and user.fname==$uname");
$row=mysql_fetch_array($result);
if ($row["fname"]==$uname && $row["pwd"]==$pwd) {
echo"you are a valid user.";
} else {
echo" You are not a valid user.Please try agian.";
}
};
?>
答案 0 :(得分:3)
您的查询中有两个问题......
$uname
是字符串。你必须引用它。==
。您正在混合PHP
和mysql
。请改用=
。更新您的查询...
$result=mysql_query("select user.fname,password.pwd from user,password where
user.uid=password.uid and user.fname='$uname'");
你还需要使用mysqli_ *或PDO; mysql_ *函数是 弃用。最重要的是,你有SQL注入漏洞,所以 请不要在生产中使用此代码!
答案 1 :(得分:0)
如果您的查询是正确的,我不确定是否可以正常运行,您应该尝试以下操作;
$row=mysql_num_rows($result);
if ($row>0)
{
echo"you are a valid user.";
}
else
{
echo" You are not a valid user.Please try agian.";
}
};
答案 2 :(得分:0)
select user.fname,password.pwd from user,password where
user.uid=password.uid and user.fname==$uname
在上述查询中,请尝试使用=
代替==
来源:http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html
答案 3 :(得分:0)
您应该通过公共索引加入这两个表。像这样:
SELECT `user`.`fname`,`password`.`pwd` FROM `user`,
INNER JOIN `password` USING (`uid`)
WHERE user.fname='$uname' AND password.pwd = '$pwd'
请务必使用mysql_real_escape_string清理用户名和密码!密码也应该是私有散列(md5或sha-1)。
在查询之后,您只需检查是否得到空结果。
答案 4 :(得分:0)
尝试更新此内容:
$uname = isset($_POST['uname']) ? $_POST['uname'] : '';
$pwd = isset($_POST['pwd']) ? $_POST['pwd'] : '';
并查询:
"SELECT user.fname, password.pwd FROM user,password WHERE user.uid = password.uid and user.fname ='".$uname."'"
答案 5 :(得分:0)
您可以尝试使用user.fname='".mysql_real_escape_string($uname)."'
代替user.fname==$uname
$dhost="localhost";
$dusername="locas";
$dpassword="locas@learn";
$db="locas";
$link = mysql_connect($dhost, $dusername, $dpassword);
if (!$link) {
die('Not connected : ' . mysql_error());
}
// make foo the current db
$db_selected = mysql_select_db($db, $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
$result=mysql_query("select user.fname,password.pwd from user,password where user.uid=password.uid and user.fname='".mysql_real_escape_string($uname)."' ORDER BY uid ASC LIMIT 1 ");
注意:从PHP 5.5.0开始,不推荐使用mysql_*
扩展名,并且将来会将其删除。相反,应该使用MySQLi或PDO_MySQL扩展。