我正在構建一個微站點,並且在密碼重置行爲時遇到了問題。調試PHP驗證腳本
有一種形式要求用戶輸入兩次密碼。我不是密碼納粹,唯一的要求是密碼超過5個字符。提交時,表單數據被添加到$ _POST數組中,併發送到我的站點範圍的php函數腳本中的setPass函數。
功能是
function setPass(){
$link= connectDB();
$query= "select * from People where Username='" . $_SESSION['name'] . "' Limit 1";
$result= $link->query($query);
if ($result->num_rows==0){
$_SESSION['status']= 'invaliduser';
header("location: ../index.php");
} else {
$first = $_POST['firstPass'];
$second = $_POST['secondPass'];
if (($first == $second) && (strlen($first) > 5)){
$password = sha1($first);
}
}
}
我要離開了本例中的數據庫插入代碼。
我的問題是,包含在頁面主體中的此腳本echo $_SESSION['name'] . " and password: " . $first;
會輸出用戶名,但會返回unidentified variable: first
警告。當我嘗試訪問變量$password
時,也會發生這種情況。
早期的測試表明,第一個條件是真實的,因爲頁面沒有重定向。
那麼,在else塊中導致執行失敗的原因是什麼?
我沒有在你的代碼中看到'echo'...你想在哪裏「回聲」?你是在你的'setPass'函數裏面還是在外面? – 2012-02-24 19:17:52
我在setPass函數所在的php頁面中添加了一些HTML標頭和主體標籤。這就是echo標籤所在的位置。 – Jason 2012-02-24 19:21:49
是的,如果你想在'setPass'函數之外訪問這些變量,那麼你就超出了範圍。使用全局變量或$ _SESSION,就像下面的答案一樣。 – 2012-02-24 19:25:12