Schnelle Frage. Gibt es einen Unterschied zwischenPHP wahr & 'wahr' Unterschied
$success = true;
und
$success = 'true';
Ich weiß, sie sind nicht ‚==
‘ zueinander, aber gibt es einen Unterschied im Umgang mit ihnen?
EDIT: Ich fand, dass die Verwendung von '===' anstelle von '==', wenn Sie sehen, wenn $ Erfolg falsch ist, löste mein Problem. Meine Frage ist jetzt, sollte ich einfach Strings in einem Fall wie unten verwenden und bei '==' bleiben?
$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>";
}
Hier ist ein Teil der Klasse ..
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;
}
}
Sie können es viel einfacher halten, da Sie nur daran interessiert sind, ob der loginatus gesetzt ist oder nicht, und es spielt keine Rolle, auf was es eingestellt ist. Der var $ loginsuccess ist standardmäßig immer leer, es sei denn irgendetwas (was auch immer) wird zurückgegeben. Also, in der ProcessLogin() - Funktion, einfach "return true;" anstatt die $ success-Variable zu verwenden. Testen Sie dann nach: if ($ loginsuccess) {// großartig, es hat funktioniert} else {// fail}.Es ist auch am besten, das ursprüngliche Formular zu verwenden, anstatt dasselbe Formular bei fehlgeschlagenem Duplikatcode auszugeben. Wenn Sie etwas ändern müssen, müssen Sie nur das Original/Einzelformular korrigieren. – Alec