Hola, gente.
Leí que las clases en la versión 5 de PHP están mejoradas (o los objetos). Bueno, quise hacer una sección de Login usando clases pero tengo un problema... no se cómo regresar valores.
Mis archivos son:
* index.html - Ahí está el formulario donde pide el nombre de usuario y la clave.
* index.php - Esta página recibe los datos del formulario para comprobar si los
datos son correctos y redireccionar a la página para usuarios
registrados.
* autoload.php - Tiene la función __autoload($clase) para incluir la clase necesaria.
* Login.php - Esta página tiene la clase
Login que se encarga de comprobar si existe el usuario, si existe regresa como valor el nombre de usuario de la base de datos, en caso contrario regresa la frase "Usuario inexistente".
Bien, el código de la página index.php es el siguiente:
<?php
require("../includes/database.php"); // Con esto no tengo problema
require("classes/autoload.php");
$username = $_POST['username'];
$lowerUser = strtolower($username);
$password = $_POST['password'];
$login = new Login($lowerUser, $password);
if($login != "Usuario inexistente") {
$_SESSION['logged'] = $login;
echo "<p align=\"center\">Accesando...</p>\n";
echo "<meta http-equiv=\"refresh\" content=\"2;URL=controlPanel.php\" />\n";
}
else
echo "<p align=\"center\">El nombre de usuario y/o la contraseña no coincide.</p>\n<p align=\"center\"><a href=\"index.html\" target=\"_self\">Click aquí para regresar.</a></p>\n";
mysql_close($connection);
?>
El de la clase Login.php:
<?php
class Login {
function Login($usuario, $clave) {
$usuarioExiste = $this->comprobarUsuario($usuario, $clave);
if($usuarioExiste != "")
return $usuarioExiste;
else
return "Usuario inexistente";
}
function comprobarUsuario($usuario, $clave) {
$sql = "SELECT Usuario,Clave FROM Registro WHERE UsuarioMin = '" . $usuario . "' AND Clave = '" . $clave . "'";
$result = @mysql_query($sql)
or die("<p align=\"center\"><strong>Ocurrió un error con la consulta.</strong></p>\n");
while($row = mysql_fetch_array($result)) {
$rowUser = $row['Usuario'];
$rowPassword = $row['Clave'];
}
if($clave == $rowPassword)
return $rowUser;
else
return "";
}
}
?>
Bien, mi problema es de que cuando creo una instancia de la clase Login, no me regresa los valores como yo esperaba, siempre me regresa la frase "Object id #1". Me refiero a esta parte:
$login = new Login($lowerUser, $password);
Es decir, cuando llega a la parte de if($login != "Usuario inexistente") { (en index.php), la ejecuta porque no lleva la frase "Usuario inexistente"... lo que provoca que se inicie sesión escribiendo lo que sea en el formulario.
¿Qué puedo hacer?