【发布时间】:2013-03-28 19:49:32
【问题描述】:
我有一个用户登录页面,其操作是“auth.php”
auth.php 看起来像这样:
<?php
session_start();
require_once('database.php');
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM access_getaccountswithinfo WHERE username='".$username."' AND password='".$password."'";
$run = mysql_query($sql);
$row = mysql_fetch_array($run);
if (mysql_num_rows($run) == 1) {
$_SESSION['logged_in'] = true;
$_SESSION['username'] = $row['username'];
$_SESSION['password'] = $row['password'];
$_SESSION['packagename'] = $row['packagename'];
$_SESSION['creation-date'] = $row['creation-date'];
$_SESSION['cap'] = $row['cap'];
$_SESSION['total'] = $row['total'];
$_SESSION['remainingtopup'] = $row['remainingtopup'];
header("location: usage.php");
} else {
header("location: user_login.php");
$message = MSG_INVALID_USERPW;
}
mysql_close($link);
?>
那么这个 auth.php 有一个 Require_once to : database.php database.php 如下:
<?php
$link = mysql_connect('localhost', 'testdatabase', '123456');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
// make testdatabase the current db
$db_selected = mysql_select_db('testdatabase', $link);
if (!$db_selected) {
die ('Can\'t use foo : ' . mysql_error());
}
echo 'Connected successfully';
?>
所以简而言之...您在登录页面上登录,然后使用 auth.php 操作检查用户是否可以在需要 database.php 进行连接的同时进行身份验证,如果用户进行身份验证,则将他们带到页眉设置的 usage.php 页面(“位置:usage.php”);在 auth.php 中。
现在这在我的本地机器上 100% 工作,带有 xampp Apache 和 SQL 服务器。
但是当我将它上传到网络服务器时,我在登录页面上登录,它会将我带到页面“auth.php”并停在那里并根据 database.php 中的回显显示“连接成功”。仅此而已,假设要进行身份验证,然后将我带到usage.php。我检查了数据库名称、表等,都正确,请问有什么想法吗?
【问题讨论】:
-
使用适当的 error_reporting 启用 display_errors,如果您已经发送了输出,则可以查看无法发送标头,除非您默认设置了 output_buferring。
-
如何启用 display_errors?
-
@StephanBotes:通过在网页的 php 代码开头添加此语句来启用显示错误 LINK:php.net/manual/en/function.error-reporting.php
-
请不要使用 mysql_* 函数,它们已被弃用,而是使用 mysqli_*。
-
启用
display_errors可以在:(1) php.ini (2) 在 apache 配置或 .htaccess 文件中使用php_flag,假设这是您使用的网络服务器 (3) 设置在-带有ini_set()的脚本,但请注意最后一个将无法捕获语法错误。