變量似乎爲空if語句,但它不能爲空變量似乎爲空if語句,但它不是空
嗨,我是新來的PHP和我試圖做一個簡單的網站,在這裏我可以登錄,註銷並更改我的密碼。該代碼都可以工作,但我有一些向用戶打印錯誤消息的問題。
在更改我的密碼的網站上,我有一個帶有3個輸入字段的表單,第一個插入舊密碼,第二個插入新密碼,最後一個確認新密碼。
代碼:
<form action="changepw.php" method="post">
<input id="oldPassword" type="password" class="form-control" name="oldPassword" placeholder="Aktuelles Passwort" required="">
<input id="password" type="password" name="password" class="form-control" placeholder="Neues Passwort" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" required="">
<input id="password2" type="password" name="password2" class="form-control" placeholder="Passwort wiederholen" required="">
<button type="submit" class="btn btn-info c-btn">Passwort wechseln</button>
</form>
我的PHP代碼如下開始:
$error = '';
session_start();
if(isset($_SESSION['loggedin'])){
changepassword();
}
else {
header('Location: index.php');
}
在功能changepassword()
,我檢查,如果提交表單時,如果是的,我的密碼繼續更改。如果來自oldPassword
輸入字段的輸入與數據庫中的密碼不匹配,則變量$error
將被設置爲'錯誤密碼'(此工作正常,我使用echo
進行了測試)。當我
<?php
if(!empty($error)){
echo "<div class='alert alert-danger' role='alert'>$error</div>";
}
?>
的問題是,$error
似乎每次都爲空,甚至:
在HTML後來,我把這段代碼打印錯誤消息,如果它不是空的設置錯誤信息。
奇怪的是,我在我的登錄文件中使用這種方法的確切原因,以檢查密碼是否正確,並且其工作沒有任何問題。
看起來像一個範圍問題,你改變函數內的$ error的值,但在全局範圍內它仍然是空的。 – JrmC