我正在嘗試最近製作一個小報告管理系統。一切都很順利,直到我遇到這個奇怪的問題。由於代碼包含很多html,因此我只會包含重要的部分。代碼塊沒有執行
基本上這是一個登錄頁面。我將信息存儲在SESSION變量中。
當用戶名和密碼不匹配時,錯誤消息被提供給下面的這個函數進行進一步處理。
編輯:在我的項目的每一頁都包括與下列內容
// 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中的一部分如下所示的config.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 [「犯錯」]},然後再重定向到自身如果$ _SESSION ['err']不爲空,它將顯示一個jquery消息框。
上述代碼在原始表單中無效,但是,如果我確實喜歡下面顯示的代碼,代碼就可以工作。我的意思是整個代碼包括以前沒有用過的條件組件。只要我刪除特定行,條件評估就不起作用。
<?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。
謝謝。
你在腳本的開頭有'session_start()'嗎? – PeeHaa 2012-07-14 15:58:34
我已添加附加信息。問題不在於session變量沒有被設置,而只是在我打印某些東西時才評估if條件。 – Nick 2012-07-14 16:11:53