我最近正在尝试制作一个小报表管理系统。一切都很顺利,直到我遇到了这个奇怪的问题。由于代码包含大量 html,我将只包含重要部分。
基本上这是一个登录页面。我将信息存储在 SESSION 变量中。
当用户名和通行证不匹配时,错误消息将提供给以下函数以进行进一步处理。
编辑:我项目中的每个页面都包含一个带有以下内容的 config.php
// Start of config.php
session_start();
error_reporting(E_ERROR);
// ********************* Database Config **********************//
$dbHost = "localhost"; // MySQL host
$dbUser = ""; // MySQL username
$dbPass = ""; // MySQL password
$dbDatabase = ""; // MySQL main database name
login.php 的一部分如下所示。
//START OF PHP CODE//
include("config.php");
function gotError($msg)
{
$_SESSION['err'] = $msg;
header("Location: login.php");
die();
}
//CODE FOR EVALUATION OF DATA//
// END OF THE PHP CODE & BELOW THE HTML WILL START //
并且在同一页面上,在起始php代码下方,是页面的html代码。在 html 之间,有一些 php 代码用于使用上面的数据集。
----------- SOME HTML CODE HERE----
<?php
if(isset($_SESSION['err']))
{
$html.= "<script type='text/javascript'>";
$html.= '$.alert("'.$_SESSION['err'].'");';
$html.= "</script>";
print $html;
}
?>
----------------- SOME HTML CODE HERE--------
现在出现了奇怪的行为。页面将登录数据发布到自身,如果发生错误,则在会话变量 { $_SESSION['err'] } 中设置错误,然后再次重定向到自身,如果出现 jquery 消息框$_SESSION[ 'err' ] 不为空。
上面的代码不能以原始形式工作,但是,如果我喜欢下面显示的代码,代码就可以工作。我的意思是整个代码,包括以前没有工作的条件组件。一旦我删除该特定行,条件评估就不起作用。
<?php
print($_SESSION['err']);
if(isset($_SESSION['err']))
{
$html.= "<script type='text/javascript'>";
$html.= '$.alert("'.$_SESSION['err'].'");';
$html.= "</script>";
print $html;
}
?>
有人知道吗?我正在使用 PHP 版本 5.3.8。
谢谢你。