PHP MySQL查询输出

时间:2012-10-26 13:08:00

标签: php mysql

我正在尝试查询,我可以看到用户名和密码是否匹配。如果匹配,那么我将转到管理员页面。我遇到的问题是我认为查询没有给我正确的结果。数据库表名为admin,它有adminame和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ón错误地.Intentelo de nuevo”或英语“错误的信息。再试一次”

3 个答案:

答案 0 :(得分:1)

这是一个猜测,但你的authenticate函数返回false(错误消息)

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

您使用2个不同的vars作为用户名:is:

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

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

答案 1 :(得分: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";
}

答案 2 :(得分:0)

从你的代码中你得到:

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

此外,您应该检查代码SQL injections!

请花点时间阅读以下文章,