Consulta de error en código php que realiza conexión a una base de datos mysql

<?php
// hacemos una conexion a la bd
$conexion = mysql_connect('xxxxx','xxxxx','xxxxx');
// seleccionamos la Bd
mysql_select_db ("usuarios", $conexion);
//realizamos una consulta a la bd
$query = mysql_query("SELECT * FROM usuario WHERE nombre_usuario='usuario' and clave_usuario='password'", $conexion);
//definimos un array
$array = mysql_fetch_array($query);
//realizamos un array de los campos que contienen el usuario y la contraseña
$arrayusuario = ($array["usario"]);
$arraypassword = ($array["password"]);
//vemos si el usuario y contraseña es váildo
//llamamos los arrays en las siguiente linea.
if ($_POST["usuario"]=="$arrayusuario" && $_POST["contrasena"]=="$arraypassword"){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
session_register("autentificado");
$autentificado = "SI";
header ("Location: orderform.php");
}else {
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
?>
El código en si no me lanxa error pero parece que no se asigna donde va a leer los datos porque la tabla(usuario) que contiene la base de datos(usuarios) posee solo 2 campos uno llamado nombre_usuario y otro clave_usuario al introducir los los datos en el formulario de acceso me lanxa el error de datos incorrectos es decir que el usuario no aparece en la base de datos pero si modifico estas dos lineas
$arrayusuario = ($array["usario"]);
$arraypassword = ($array["password"]);
Y las pongo así
$arrayusuario = ($array["nombre_usuario"]);
$arraypassword = ($array["clave_usuario"])
Introduzco el usuario y su clave y puff me deja acceder al sistema pero solo el primer usuario de la base da datos lo puede hacer con los otros me da error :S entonces no se si sera un error de escritura que esta mal estructurado espero que puedas ayudarme un saludos
Ah este es el código de seguridad que coloco en las opaginas que no quiero que el usuario no registrado accese
<?
//Inicio la sesión
session_start();
//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($_SESSION["autentificado"] != "SI") {
    //si no existe, envio a la página de autentificacion
    header("Location: errorlogin.html");
    //ademas salgo de este script
    exit();
}
?>

1 respuesta

Respuesta
1
Lo que estás haciendo ahora no tiene sentido:
Primero ejecutas una SELECT que devuelve datos sólo para un caso concreto y fijo: el del usuario que se llama literalmente 'usuario' y con una contraseña que ha de ser literalmente 'password'. El resultado de esta consulta siempre será el mismo: un registro si es que existe este usuario concreto o nada en caso contrario.
Para que esta sentencia fuese útil, estos literales se deberían substituir por variables, por ejemplo $_POST["usuario"] y $_POST["password"].
Después sólo tendrías que ver si hay resultado (usuario correcto) o no (autenticación fallida).
También has registrado mal la variable de sesión. Este tipo de asignación se hacia en las versiones antiguas de PHP. Ahora deberías hacer:
$_SESSION["autentificado"] = "SI";
Directamente sin el session_register()

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas