管理员登录无法正常工作

时间:2015-04-28 14:55:59

标签: php mysql

所以我遇到了"管理员登录问题"我一直在努力工作。如果你们可以查看我的代码以了解发生了什么,那将非常有帮助。所有名称都与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);

?>

1 个答案:

答案 0 :(得分:1)

首先,您将MySQL库与mysqli_num_rows使用mysql_num_rows进行混合。

  • 那些不同的MySQL函数不会相互混合。

如果您还没有,还需要开始会话。

还要确保表单元素包含名称属性。

即:<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 statementsPDO with prepared statements它们更安全

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应仅在暂存时完成,而不是生产。