Question rapide. Y at-il une différence entrePHP true & 'true' difference
$success = true;
et
$success = 'true';
Je sais qu'ils ne sont pas « ==
» à l'autre, mais est-il une différence dans leur utilisation?
EDIT: Je trouve que l'utilisation « === » au lieu de « == » en voyant si le succès de $ est faux résolu mon problème. Ma question est maintenant, est-ce que je devrais juste employer des cordes dans un cas comme ci-dessous, et coller avec '=='?
$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>";
}
est ici une partie de la classe ..
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;
}
}
Vous pouvez le garder beaucoup plus simple puisque vous êtes uniquement intéressé par le fait que le loginstatus soit ou non défini, et peu importe ce que vous avez défini. Le var $ loginsuccess sera toujours vide par défaut, à moins que quelque chose (quel que soit) soit retourné. Donc, dans la fonction ProcessLogin(), simplement "return true;" au lieu d'utiliser la variable $ success. Ensuite, testez: if ($ loginsuccess) {// super, ça marche} else {// fail}.Il est également préférable d'utiliser le formulaire d'origine, au lieu de sortir le même formulaire en cas d'échec avec un code en double. Ensuite, lorsque vous avez besoin de changer quelque chose, il vous suffit de corriger le formulaire original/unique. – Alec