Câu hỏi nhanh. Có một sự khác biệt giữaSự thật PHP & sự khác biệt 'thực sự'
$success = true;
và
$success = 'true';
Tôi biết họ không phải là '==
' với nhau, nhưng có một sự khác biệt trong việc sử dụng chúng?
EDIT: Tôi thấy rằng sử dụng '===' thay vì '==' khi nhìn thấy nếu $ thành công là sai giải quyết vấn đề của tôi. Câu hỏi của tôi bây giờ là, tôi chỉ nên sử dụng dây trong một trường hợp như dưới đây, và gắn bó với '=='?
$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>";
}
Dưới đây là một phần của lớp ..
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;
}
}
Bạn có thể giữ nó đơn giản hơn rất nhiều vì bạn chỉ quan tâm đến việc cài đặt nhật ký có được đặt hay không, và nó không quan trọng nó được đặt là gì. Biến $ loginsuccess sẽ luôn luôn trống theo mặc định, trừ khi một cái gì đó (bất kỳ) được trả về. Vì vậy, trong hàm ProcessLogin(), chỉ cần "trả về true"; thay vì sử dụng biến $ thành công. Sau đó kiểm tra: if ($ loginsuccess) {// tuyệt vời, nó hoạt động} else {// fail}.Nó cũng tốt nhất để sử dụng hình thức ban đầu, thay vì xuất ra cùng một hình thức trên không với mã trùng lặp. Sau đó, khi cần phải thay đổi một cái gì đó, bạn chỉ cần sửa hình thức ban đầu/đơn. – Alec