快速的問題。有PHP真和'真'區別
$success = true;
和
$success = 'true';
之間的差異,我知道他們是不是「==
」給對方,但有使用它們有區別嗎?
編輯:我發現,使用'==='而不是'=='當看到$成功是錯誤解決了我的問題。我現在的問題是,我應該在下面的情況下使用字符串,並堅持'=='?
$User->ProcessLogin();
$loginsuccess = $User->ProcessLogin();
if ($loginsuccess == true) {
echo "<big>Success<big><br />";
echo "<p>We are now redirecting you to the member area.</p>";
echo "<meta http-equiv='refresh' content='=2;MyAccountNEW.php' />";
}
elseif ($loginsuccess == false) {
echo "<span class='sorry'><b>Sorry, your account could not be found.</span></b><div id='shopperlogin'> <img class='shopperlogintext' src='images/shopperlogin.png'>
<br />
<form method='post' action='loginNEW.php' name='loginform' id='loginform'>
<fieldset>
<label for='username'>Username:</label><input type='text' name='username' id='username' /><br />
<label for='password'>Password:</label><input type='password' name='password' id='password' /><br />
<input type='submit' name='login' id='login' value='Login' />
</fieldset>
</form></div>";
}
下面是類的一部分..
function ProcessLogin() {
if (!empty($_POST['username']) && !empty($_POST['password'])) {
$username = mysql_real_escape_string($_POST['username']);
$password = md5(mysql_real_escape_string($_POST['password']));
$checklogin = mysql_query("SELECT * FROM users WHERE Username = '".$username."' AND Password = '".$password."'");
if(mysql_num_rows($checklogin) == 1)
{
$row = mysql_fetch_array($checklogin);
$email = $row['EmailAddress'];
$_SESSION['Username'] = $username;
$_SESSION['EmailAddress'] = $email;
$_SESSION['LoggedIn'] = 1;
$this->loggedin = true;
$success = true;
}
else {
$success = false;
}
return $success;
}
}
你可以保持它簡單得多,因爲你只關心登錄狀態是否已設置,並且它與設置無關。默認情況下,var $ loginsuccess將始終爲空,除非返回了某些內容(不管)。所以在ProcessLogin()函數中,只需「返回true」;而不是使用$ success變量。然後測試:if($ loginsuccess){//很好,工作正常} else {//失敗}。最好使用原始表單,而不是使用重複代碼輸出失敗時的相同表單。然後,當需要更改某些內容時,您只需修復原始/單一表單。 – Alec 2009-06-16 20:10:03