-1

我正在尝试进行查询,我可以在其中查看用户名和密码是否可以匹配。如果匹配,那么我将转到管理员页面。我遇到的问题是我认为查询没有给我正确的结果。数据库表名为 admin,它有 adminname 和 passadmin。我在数据库中输入 IS 的用户。密码已加密。

<?php

    $f_user = $_POST['f_user'];
    $f_pass = $_POST['f_pass'];

    $status = authenticate($f_user, $f_pass);

    if ($status == 1)
    {
        include("../connections/config.php");

        session_start();
        //session_register("SESSION_UNAME");
        $_SESSION['SESSION_UNAME'] = $f_user;
        $SESSION_UNAME = $f_user;
        header("Location: unoadmin.php");
        exit();
    }
    else
    {
        $mensa= "Informaci&oacute;n Incorrecta...Int&eacute;ntelo de Nuevo";
        header("Location: register.php?mensa=$mensa");
        exit();
    }

    function authenticate($user, $pass)
    {
        include("../connections/config.php");

        $connection = mysql_connect($mach,$userna,$paso) or die ("Unable to connect!");
        $query = "SELECT * from admin WHERE adminame = '$f_user'";
        mysql_select_db($db);
        $result = mysql_query($query, $connection) or die ("Error in query: $query. " . mysql_error());
        $num_results = mysql_num_rows($result);

        if ($num_results == 1)
        {
            for($i=0; $i < $num_results; $i++)
            {
                $row = mysql_fetch_array($result);
                $pas = $row["passadmin"];
            }
            if(crypt($pass,$pas) == $pas)
            {
                return 1;
            }
            else
            {
                return 0;
            }
        }
        else
        {
            return 0;
        }
    }
?>

有人可以告诉我错误是什么吗?它引导我进入“Informacióncorrecta. Intentelo de nuevo”或英文“错误信息。再试一次”

4

3 回答 3

1

这有点猜测,但您的authenticate函数返回 false (错误消息)

我不确定包含中会发生什么,它建议包含数据库设置。

您正在为用户名使用 2 个不同的变量:是:

function authenticate($user, $pass) // <-- you pass $user
{
   include("../connections/config.php");

   $connection = mysql_connect($mach,$userna,$paso) or die ("Unable to connect!");
   $query = 
    "SELECT * from admin WHERE adminame = '$f_user'"; // <-- you use $f_user

也许不是一个真正的答案,但它渴望发表评论。

于 2012-10-26T13:19:27.230 回答
1

这个问题的一个简单解决方案是将您的用户名和密码放入变量中并将其与数据库匹配,如果结果大于 1 值,它将转到管理页面。例如

    $myusername=addslashes($_POST['username']); 
            $mypassword=addslashes($_POST['password']); 

            $sql="SELECT * FROM admin WHERE username='$myusername' and password=md5('$mypassword')";
$query = mysql_query($sql);
$row = mysql_num_rows($query);
if($row>0) {
  header("location:administrator.php");
}
else {
 echo"Please check username and password";
}
于 2012-10-26T13:26:25.300 回答
0

从您的代码中,您可以:

  • 您提供的用户名在您的数据库中没有此类条目
  • 密码错误

此外,您应该检查您的代码是否有SQL 注入!

请花时间阅读下面的文章,

于 2012-10-26T13:16:31.950 回答