Pregunta rápida. ¿Hay una diferencia entrePHP true & 'true' difference
$success = true;
y
$success = 'true';
sé que no '==
' son el uno al otro, pero hay una diferencia en el uso de ellos?
EDIT: encontré que usar '===' en vez de '==' al ver si $ success es falso resolvió mi problema. Mi pregunta ahora es si debería usar cadenas en un caso como el que se muestra a continuación, y seguir con '=='.
$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>";
}
Aquí es parte de la clase ..
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;
}
}
Puedes hacerlo mucho más sencillo ya que solo estás interesado en si está configurado el estado de inicio de sesión o no, y no importa a qué se haya configurado. El var $ loginsuccess siempre estará vacío de manera predeterminada, a menos que se devuelva algo (lo que sea). Entonces, en la función ProcessLogin() simplemente "return true"; en lugar de usar la variable $ success Luego, prueba para: if ($ loginsuccess) {// great, funcionó} else {// fail}.También es mejor usar el formulario original, en lugar de generar el mismo formulario en caso de error con código duplicado. Luego, cuando necesite cambiar algo, solo tendrá que corregir el formulario original/único. – Alec