所以我遇到了"管理员登录问题"我一直在努力工作。如果你们可以查看我的代码以了解发生了什么,那将非常有帮助。所有名称都与mysql中的名称相匹配。错误不断出现,说我没有正确的用户名/密码......但我确实做到了!
<?php
if (isset($_POST['login'])){
$con = mysql_connect("localhost", "dxhxxx", "tcqxxx");
if (!$con){
die("Cannot connect:" . mysql_error());
}
mysql_select_db("dxh6110",$con);
$userName = $_POST['username'];
$passWord = $_POST['password'];
$sql = "select * from Churchadmin where username='$userName' AND password='$passWord'";
mysql_query($sql,$con);
if(mysqli_num_rows($run)>0){
$_SESSION['username']=$userName;
$_SESSION['password']=$passWord;
//if all information is good you will go to the next page
echo "<script>window.open('view_prayers.php','_self')</script>";
}
//if password or username is wrong this will give them an alert
else{
echo "<script>alert('Admin details are incorrect!')</script>";
}
}
mysql_close($con);
?>
答案 0 :(得分:1)
首先,您将MySQL库与mysqli_num_rows
使用mysql_num_rows
进行混合。
如果您还没有,还需要开始会话。
还要确保表单元素包含名称属性。
即:<input type="text" name="username">
等。
然后这一行:
mysql_query($sql,$con);
if(mysqli_num_rows($run)>0){
应该读作
$run = mysql_query($sql,$con);
if(mysql_num_rows($run)>0){
没有为其定义$run
变量。
错误报告会抛出未定义的变量运行...通知。
您也可以更改
$run = mysql_query($sql,$con);
到
$run = mysql_query($sql,$con) or die(mysql_error($con));
我注意到您可能以纯文本格式存储密码。如果是这种情况,则非常气馁。
我建议您使用CRYPT_BLOWFISH或PHP 5.5&#39 {s} password_hash()
功能。对于PHP&lt; 5.5使用password_hash() compatibility pack
。
另外,关于SQL注入,use mysqli
with prepared statements或PDO with prepared statements,它们更安全。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告应仅在暂存时完成,而不是生产。