Autor
|
Tema: [Resuelto] Ayuda en inicio de sesión, ¿alguna respuesta? (Leído 2,457 veces)
|
uluigi
|
Veréis, he creado un inicio de sesión y al iniciar me dice: Notice: Undefined variable: username in C:\xampp\htdocs\yoursql\index.php on line 56 cuando en realidad está todo bien estructurado, os dejo el código para que le echéis un vistazo: <?php #Librería principal include_once('libraries.php'); #Conexión a la base de datos MySQLi yoursql_connect(); #Si no se ha hecho la sesión nos devolverá al formulario de 'login' if(!isset($_SESSION['username'])) { ?> <!DOCTYPE html><html> <head> <title>localhost / 127.0.0.1</title> <link rel="stylesheet" type="text/css" href="sheet/frame.css"> </head><body id="yoursql"> <div class="logo"></div> <div id="language" class="window"> <label>Idioma de yourSQL:</label> <select id="language"> <option value="es_ES">Español (España)</option> <option value="en_UK" disabled>Inglés</option> <option value="pt_BR" disabled>Portugués (Brasil)</option> </select> </div> <div id="login" class="window"> <form method="post" action="system/path/login.php"> <table id="table-login"> <tr> <td><label for="username">Nombre de usuario:</label></td> <td><input type="text" autocomplete="off" id="username" name="username" class="i_"></td> </tr> <tr> <td><label for="passwd">Contraseña:</label></td> <td><input type="password" id="passwd" name="passwd" class="i_"></td> <tr> <td></td> </tr> </tr> <tr> <td id="rn"><a href="system/path/r.php"><input type="button" name="register" class="b_" value="Añadir cuenta"></a></td> <td id="r"><input type="submit" name="enter" class="b_" value="Acceder"></td> </tr> </table> </form> </div> <?php include_once('system/inc/footer.php'); ?> </body></html> <?php } else { ?> <h2>Bienvenido <?php echo $username; ?></h2> <a href="destroy.php">cerrar sesión</a> <?php } ?>
<?php #Librería principal include_once('../../libraries.php'); #Conexión a la base de datos MySQLi yoursql_connect(); #Si los campos 'username' y 'passwd' están vacíos hacer esto # if(isset($_POST['enter'])) { #Capturar datos del formulario y almacenarlo en variables $passwd = md5($_POST['passwd']); #Consulta de MySQL donde indica seleccionar de la tabla 'users' el campo que tenga de #nombre 'username' y el campo 'passwd' $query = mysql_query("SELECT * FROM users WHERE username = '$username' AND passwd = '$passwd'"); #Validar si el 'username' y 'passwd' existen en la base de datos o no { #Si 'username' y 'passwd' es correcto, entonces validar sesión if($row['username'] == $username && $row['passwd'] == $passwd) { #Crear sesión #Almacenar 'username' en una variable de sesión $_SESSION['username'] = $username; header('Location: ../../index.php'); } else if($row['username'] != $username && $row['passwd'] != $passwd) { #Si la contraseña es incorrecta hacer esto header("Location: ../../index.php"); } #Liberar memoria empleada al realizar la consulta '$query' #Cerrar conexión con la base de datos } } ?>
Espero algún tipo de ayuda, muchas gracias y ¡saludos!
|
|
« Última modificación: 13 Julio 2015, 05:46 am por uluigi »
|
En línea
|
|
|
|
engel lex
|
Si el error es el primero, es porque allí no definiste username, es decir, nunca salio de la variable de sesión a una variable propia
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
uluigi
|
Nada... que no hay manera, ¿podrías decirme exactamente qué línea y dónde ponerla? Es que estoy atascado en esto y me pongo nervioso, ¡un saludo!
|
|
|
En línea
|
|
|
|
engel lex
|
En la línea 56 tienes $username, pero nunca la defines
por lo que veo, tienes el valor que quieres en la variable de sesión
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
Pablo Videla
|
En la línea 56 tienes $username, pero nunca la defines
por lo que veo, tienes el valor que quieres en la variable de sesión
Exactamente, es lo mismo que iba a decir, xD puedes reemplazar la linea 56 por $_SESSION['username']; o bien setearla con la variable de session $username= $_SESSION['username']; <h2>Bienvenido <?php echo $username; ?></h2>
y despues hacer el echo
|
|
|
En línea
|
|
|
|
uluigi
|
Hijos de cristo, a veces me siento imbécil y me lo he pasado por alto, ya funciona bien, dejo el código por si alguien lo quiere usar. Gracias por vuestra ayuda, chicos. index.php<?php #Librería principal include_once('libraries.php'); #Conexión a la base de datos MySQLi yoursql_connect(); if(!isset($_SESSION['username'])) { ?> <!DOCTYPE html><html> <head> <title>localhost / 127.0.0.1</title> <link rel="stylesheet" type="text/css" href="sheet/frame.css"> </head><body id="yoursql"> <div class="logo"></div> <div id="language" class="window"> <label>Idioma de yourSQL:</label> <select id="language"> <option value="es_ES">Español (España)</option> <option value="en_UK" disabled>Inglés</option> <option value="pt_BR" disabled>Portugués (Brasil)</option> </select> </div> <div id="login" class="window"> <form method="post" action="system/path/login.php"> <table id="table-login"> <tr> <td><label for="username">Nombre de usuario:</label></td> <td><input type="text" autocomplete="off" id="username" name="username" class="i_"></td> </tr> <tr> <td><label for="passwd">Contraseña:</label></td> <td><input type="password" id="passwd" name="passwd" class="i_"></td> <tr> <td></td> </tr> </tr> <tr> <td id="rn"><a href="system/path/r.php"><input type="button" name="register" class="b_" value="Añadir cuenta"></a></td> <td id="r"><input type="submit" name="submit_login" class="b_" value="Acceder"></td> </tr> </table> </form> </div> <?php include_once('system/inc/footer.php'); ?> </body></html> <?php } else { $Username = $_SESSION['username']; ?> <h2>Bienvenido <?php echo $Username; ?></h2> <a href="destroy.php">cerrar sesión</a> <?php } ?>
login.php<?php #Librería principal include_once('../../libraries.php'); #Conexión a la base de datos MySQLi yoursql_connect(); #Capturar datos del formulario y almacenarlo en variables $Username = $_POST['username']; #Definido en el formulario 'name="username"' $Passwd = $_POST['passwd']; #Definido en el formulario 'name="passwd"' #Consulta de MySQL donde indica seleccionar de la tabla 'users' la fila #llamada 'username' que contenga el valor de la variable '$Username' $result = mysql_query("SELECT * FROM users WHERE username = '$Username'"); #Validar si el valor de la variable '$Username' de la fila 'username' existe #en la base de datos 'yoursql' { #Si '$Username' es correcto, validar el valor de la variable '$Passwd' if($row['passwd'] == $Passwd) #'Passwd' definido por el nombre de la fila 'passwd' { #Crear sesión #Almacenar valor de '$Username' en una variable de sesión pre-llamada 'username' $_SESSION['username'] = $Username; header('Location: ../../index.php'); } else if($row['username'] != $Passwd) { #Si la contraseña es incorrecta hacer esto header('Location: ../../index.php'); } } #Si la contraseña es incorrecta hacer lo siguiente else if($row['passwd'] != $Passwd) { echo "contraseña incorrecta."; header('Location: ../../index.php'); } #Si el nombre de usuario es incorrecto hacer lo siguiente else { echo "nombre incorrecto."; header('Location: ../../index.php'); } #Liberar memoria empleada al realizar la consulta '$result' #Cerrar conexión con la base de datos ?>
|
|
|
En línea
|
|
|
|
Pablo Videla
|
A todos se nos pasa algo, es normal, a medida que vayas cometiendo errores vas aprendiendo a identificarlos, saludos.
|
|
|
En línea
|
|
|
|
|
|