我的PHP代码出错了。 我的想法是检查数据库中是否存在用户名和密码,然后将其重定向到URL。
在这里输入代码我创建了两个页面。一个是索引,另一个是重定向。 重定向代码给出了问题。
<!DOCTYPE html>
<html>
<body>
<?php
//echo $_POST['uname'];
//echo $_REQUEST['uname'];
$uname=$_POST['uname'];
$pwd=$_POST['pwd'];
//echo $_POST['pwd'];
//echo $_REQUEST['pwd'];
//echo $uname;
//echo $pwd;
$con = mysql_connect("localhost","root","root");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
$db_found=mysql_select_db("sn", $con);
//$result = mysql_query("SELECT fname,password FROM udata");
if ($db_found)
{
$result = mysql_query("SELECT fname,password FROM udata");
while ( $db_field = mysql_fetch_assoc($result) )
{
if ($db_field['uname']==$uname && $db_field['password']==$pwd)
header( 'Location: www.youtube.com' ) ;
/*print $db_field['fname'] . "<BR>";
print $db_field['lname'] . "<BR>";
print $db_field['uname'] . "<BR>";
print $db_field['password'] . "<BR>";
*/
}
mysql_close($con);
}
else
{
print "Database NOT Found ";
mysql_close($db_handle);
}
?>
</body>
</html>
请帮助我。
答案 0 :(得分:2)
我认为你必须改变这个:
if ($db_field['uname']==$uname && $db_field['password']==$pwd)
到此:
if ($db_field['fname']==$uname && $db_field['password']==$pwd)
答案 1 :(得分:1)
您的代码充满了错误。正确地缩进它应该显示一些缺失的开/关括号:你应该能够自己找到它们!
此外,您直接开始输出HTML页面。但是,稍后您使用
header( 'Location: www.youtube.com' ) ;
如果用户名和密码正确,则将浏览器重定向到另一个页面。在您开始输出HTML页面后,无法发送HTTP标头(没有一些高级技巧)
重定向后,您需要使用exit()
停止程序流程(因为它不再重要)。
假设您的udata
表中有多个用户,则需要在查询中添加搜索条件。有很多可能性,这是一个:
$result = mysql_query("SELECT password FROM udata WHERE fname='$uname'");
现在您可以检查是否返回了记录(如果用户不存在)以及密码是否正确。
注意:直接使用$_POST[]
值会使您的应用程序容易受到SQL注入攻击(以及其他攻击)。您需要清理这些输入。
附加说明/专业提示:在数据库中直接存储密码是件坏事(tm)。而是使用哈希和盐(用favorite search engine查找)
正如njk所评论的那样,您不应再使用折旧的mysql_*
函数。
答案 2 :(得分:0)
您遗失了几个{
,您应该在exit();
header('Location: www.youtube.com');
<?php
$uname=$_POST['uname'];
$pwd=$_POST['pwd'];
$con = mysql_connect("localhost","root","root");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
$db_found=mysql_select_db("sn", $con);
if ($db_found) {
$result = mysql_query("SELECT fname,password FROM udata");
while ( $db_field = mysql_fetch_assoc($result) ) {
if ($db_field['fname']==$uname && $db_field['password']==$pwd) {
header('Location: www.youtube.com');
exit();
}
}
mysql_close($con);
} else {
print "Database NOT Found ";
mysql_close($db_handle);
}
?>