Usuarios y contraseñas con PHP y Mysql

Hola.. Por favor me podrías.. Ayudar..:( en la validación de un usuario...
Mira utilizee este código.. Pero me sale error...
Página de entrada (login.php):
------------------------------
<html>
<head>
...
</head>
<body>
<form name='formulario' method='post' action='validar.php'>
Usuario:
<input type='text' name='usuario'>
<br>
Contraseña: <input type='password' name='contrasenia'> <br>
<input type='submit' name='Registrar' value='Registrar'>
</form>
</body>
</html>
Página de validación (validar.php):
-----------------------------------
<?php
session_start();
if (!isset( $_POST['usuario'] )) {
header("Location: login.php");
} else {
$id = mysql_connect("localhost", "root", "");
mysql_select_db("BaseDatos", $id);
$consulta = "SELECT * FROM Usuarios WHERE usuario = '{$_POST['usuario']}' AND contrasenia = '{$_POST['contrasenia']}'";
$datos = mysql_query($consulta, $id);
$numDatos = @mysql_num_rows($datos);
if ($numDatos <= 0) {
echo "Error: usuario o contraseña incorrectos. O usuario no dado de alta.<br>";
} else {
$_SESSION['User'] = $_POST['usuario'];
header("Location: " . Mysql_result($datos, 0, 3); // registro 0, campo 3, que será la página personal del usuario
}
}
?>
Página personal del usuario:
----------------------------
<?php
session_start();
if (!isset($_SESSION['User'])) {
header("Location: login.php");
}
// Mostrar aqui la página personal del usuario
?>
mi bd
CREATE TABLE IF NOT EXISTS `usuarios` (
  `id` bigint(7) NOT NULL AUTO_INCREMENT,
  `usuario` char(100) NOT NULL,
  `contrasenia` char(100) NOT NULL,
  `personal` char(100) NOT NULL,
  KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
--
-- Volcar la base de datos para la tabla `usuarios`
--
INSERT INTO `usuarios` (`id`, `usuario`, `contrasenia`, `personal`) VALUES
(1, 'fiore5152', '123456', 'fiorella');
Si pudieras...:( me puedes dar otro ejemplo.. O sino.. Ayudarme.. En el codigoo.. Please
Respuesta
1
No compruebas que la llamada SQL devuelva una ejecución correcta. Probablemente falla porque la sentencia es incorrecta. Escríbela así:
$consulta = "SELECT * FROM Usuarios WHERE usuario = '$_POST[usuario]' AND contrasenia = '$_POST[contrasenia]'";
o así:
$consulta = "SELECT * FROM Usuarios WHERE usuario = '" . $_POST['usuario'] ."' AND contrasenia = '" . $_POST['contrasenia'] . "'";
Gracias por responderme..:( mira.. hice estos cambios pero =... sale lo mismo.. el mismo error ayudame.. por favor..:(
Parse error: parse error in C:\wamp\www\logg\validar.php on line 23
este es el validar.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>
<body>
<?php
session_start();
if (!isset( $_POST['usuario'] )) {
header("Location: login.php");
} else {
$id = mysql_connect("localhost", "root", "");
mysql_select_db("log", $id);
$consulta = "SELECT * FROM Usuarios WHERE usuario = '" . $_POST['usuario'] ."' AND contrasenia = '" . $_POST['contrasenia'] . "'";
$datos = mysql_query($consulta, $id);
$numDatos = @mysql_num_rows($datos);
if ($numDatos <= 0) {
echo "Error: usuario o contraseña incorrectos. O usuario no dado de alta.<br>";
} else {
$_SESSION['User'] = $_POST['usuario'];
header("Location: " . mysql_result($datos, 0, 3); // registro 0, campo 3, que será la página personal del usuario
}
}
?>
</body>
</html>
este es el index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>
<body>
<?php
session_start();
if (!isset($_SESSION['User'])) {
header("Location: login.php");
}
// Mostrar aqui la página personal del usuario
ioooooooooooooo
?>
</body>
</html>
Con la base de datos que te mostré.. me ayudas.. por favor...:( igual gracias de todos modos...
y este el login.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>
<body>
<form name='formulario' method='post' action='validar.php'>
Usuario:
<input type='text' name='usuario'>
<br>
Contraseña: <input type='password' name='contrasenia'> <br>
<input type='submit' name='Registrar' value='Registrar'>
</form>
</body>
</html>
Hombre tener el error desde luego ayuda bastante. Te está diciendo que tienes un error sintáctico en la línea 23.
Concretamente te falta un paréntesis de cierre en la línea:
header("Location: " . mysql_result($datos, 0, 3);
que debería ser:
header("Location: " . mysql_result($datos, 0, 3));
GRacias.. por toda la ayuda.. que me tas dando.. eres lo máximo.. ah!:P soy mujer.. no hombre.. bueno..:( quería.. ver si me podías.. seguir ayudando.. mira modifique.. o.o el paréntesis que faltaba.. pero ahora.. me sale algo.. loco..
Cuando pongo el usuario.. mal me sale que el usuario esta mal.. ahí todo correcto
pero cuando pongo el usuario bien!... nome sale ningún código de error sino.. esta página..:(: http://localhost/logg/validar.php con esto como si no lo encontrara.. ayuda.. por favor
No se encontró la página
Puede que la página solicitada ya no exista haya cambiado de nombre o no esté disponible temporalmente.
Pruebe lo siguiente:
Si escribió la dirección de la página en la barra de direcciones, compruebe que esté escrita correctamente.
Abra la página principal de localhosty busque vínculos a la información que desea.
Haga clic en el botón Atrás para intentar otro vínculo.
Haga clic en Búsqueda para buscar información en Internet.
HTTP 404 - Archivo no encontrado
Internet Explorer
Simplemente lo que ocurre es que estás direccionando a la página del usuario según el dato que has obtenido de la base de datos. Comprueba ese valor que parece que no corresponde a una página existente:
Header("Location: " . mysql_result($datos, 0, 3)); // registro 0, campo 3, que será la página personal del usuario
Disculpa.. de nuevo por las molestias... no entiendo esto ultimo que me dices.. como que toy redirigiendol... a otra.. ¿página qué no existes? osea.. debería crear otra página!.. y como se que va a direccionar a esa otra página...=( me podrías ayudar.. y disculpame.. por quitarte.. tu tiempo.. por tonterías:(
gracias besos..
fiorella león
En la línea que te he copiado, la función header está enviando una orden para cambiar de página. La página a la que cambiará (si existe) es el tercer campo del registro leído (que es lo que devuelve la función mysql_result()
Por lo tanto, deberías comprobar qué valor tiene ese campo y asegurarte que la página existe.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas