这是我的代码
<?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");
}
}
?>
它完全在本地服务器上工作,但在实时服务器中却无法工作
没有错误显示
总是其他部分工作
答案 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_rows
为0
?!
答案 1 :(得分:0)
if ( !empty($_POST['username']) && !empty($_POST['userpswd']))
{
}
使用上述if语句或确保发布上一页的“登录”字段。