Php登录不起作用

时间:2015-11-23 10:29:15

标签: php

这是我的代码

<?php
session_start();
ob_start();
require "../model/configuration.php";
$err=NULL;
if (isset($_POST['login']) && !empty($_POST['username']) && !empty($_POST['userpswd']))
{
    $username=stripslashes($_POST['username']);
    $userpswd=stripslashes($_POST['userpswd']);
    $user_name=mysql_real_escape_string($username);
    $userpassword=mysql_real_escape_string($userpswd);
    $query=$db->execute("select * from users where BINARY user_name='$user_name' and BINARY password='$userpassword' and loginpermission='0' and del_status='0'");
    if($query->num_rows > 0)
    {
        $_SESSION['user']=$user_name;
        $_SESSION['title']="Welcome";
        $stfid=$query->fetch_assoc();
        $_SESSION['user_id']=$stfid['staff_id'];
        header("location:../Pages/welcome_home.php");
    }
    else
    {
        $err="Invalid Login";
        header("location:../index.php?er=$err");
    }
}
?>

它完全在本地服务器上工作,但在实时服务器中却无法工作 没有错误显示
总是其他部分工作

2 个答案:

答案 0 :(得分:1)

您没有初始化并声明变量$db,它在嵌套的if语句之上调用。[1]在以下行添加$query=$db->execute...以上:

$db = new mysqli(<servername>, <username>, <password>);

在添加到嵌套的if语句后面的子句之后,检查是否可以建立与db的连接:

!$db->connect_error(返回布尔值)

在此之后,应该将sql-query处理到数据库服务器。完整的代码应如下所示(服务器名称,用户名和密码的占位符除外):

<?php
    session_start();
    ob_start();
    require "../model/configuration.php";
    $err = NULL;
    $db = NULL;
    if (isset($_POST['login']) && !empty($_POST['username']) && !empty($_POST['userpswd']))
    {
        $username=stripslashes($_POST['username']);
        $userpswd=stripslashes($_POST['userpswd']);
        $user_name=mysql_real_escape_string($username);
        $userpassword=mysql_real_escape_string($userpswd);
        $db = new mysqli( <servername>, <username>, <password>);
        $query=$db->execute("select * from users where BINARY user_name='$user_name' and BINARY password='$userpassword' and loginpermission='0' and del_status='0'");
        if(!$db->connect_error && $query->num_rows > 0)
        {
            $_SESSION['user']=$user_name;
            $_SESSION['title']="Welcome";
            $stfid=$query->fetch_assoc();
            $_SESSION['user_id']=$stfid['staff_id'];
            header("location:../Pages/welcome_home.php");
        }
        else
        {
            $err="Invalid Login";
            header("location:../index.php?er=$err");
        }
    }
    ?>

此外,您可以设置检查,可以在单独的if语句中为单个错误报告建立与数据库服务器的连接。 Fyi:在字符串中添加变量比通过双引号单独添加的变量编译得慢。[2]

参考文献:
[1] http://www.w3schools.com/php/php_mysql_connect.asp
[2] http://phpperformance.de/web-dev/php/variablen-in-string-einbetten-oder-konkatenieren



编辑:
否则,如果在访问不存在的对象时设置error_reporting(E_ALL)没有错误,则sql结果$query->num_rows0?!

答案 1 :(得分:0)

if ( !empty($_POST['username']) && !empty($_POST['userpswd']))
{
}

使用上述if语句或确保发布上一页的“登录”字段。