可以帮助我使用我的代码,一切看起来都正确检查每行至少10次。我甚至在用户/传递中硬编码查询,但仍然没有。
<?php
include "database.php";
$sql = "SELECT UserName, Password, Language, Editor FROM admin_login WHERE UserName='".$_POST['username']."' AND Password='".$_POST['pwd']."'";
$result = @mysql_query($sql);
$line = @mysql_fetch_assoc($result);
if (mysql_num_rows($result) == 0) {
#unsuccessful login
header('Location: index.php' );
} else {
#login successful, setting up session
ob_clean();
session_start();
$_SESSION['user'] = $line['UserName'];
$_SESSION['pass'] = $line['Password'];
$_SESSION['lang'] = $line['Language'];
$_SESSION['editor'] = $line['Editor'];
#send to editor page
if ($_SESSION['lang'] == 'List') {
header('Location: list.php');
exit;
#send to announcer page
} else if ($_SESSION['lang'] == 'Order') {
header('Location: order.php');
exit;
}
}
?>
答案 0 :(得分:3)
从函数mysql_query和mysql_fetch_assoc中删除@,您将显示错误。
答案 1 :(得分:1)
要遵循的一些步骤:
添加MySQL错误报告,例如(到SQL语句的末尾):
或死(“查询失败:”。mysql_error()。“实际查询:”。$查询)
删除@符号 - 这些会抑制错误。
答案 2 :(得分:1)
这是我的版本:
<?php
include 'database.php';
$sql = "SELECT `UserName`, `Password`, `Language`, `Editor` FROM `admin_login` WHERE `UserName` = '" . mysql_real_escape_string($_POST['username']) . "' AND `Password` = '" . mysql_real_escape_string($_POST['pwd']) . "' LIMIT 1;";
$result = mysql_query($sql);
if ($result === false)
{
// Unsuccessful Login
header('Location: index.php');
}
$user = mysql_fetch_assoc($result);
$_SESSION['user'] = $user;
if ($user['Language'] == 'List')
{
header('Location: list.php');
exit;
}
elseif ($user['Language'] == 'Order')
{
header('Location: order.php');
exit;
}
?>
如果仍然显示一些错误,请在此处复制/粘贴它们,如果没有显示错误且代码仍然无效,请向我们展示您的数据库方案和database.php
文件。
答案 3 :(得分:1)
如前所述,从函数中删除所有@
前缀。这可以消除所有错误。
此外,将以下两行添加到脚本的开头:
error_reporting(E_ALL);
ini_set('display_errors','1');
答案 4 :(得分:0)
您的PHP错误报告可能已设置为关闭。请将其打开或以ini_set('display_errors','1');
放在您遇到此问题的php页面顶部。