Al introducir datos en un formulario de acceso me da un error por datos incorrectos

<?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
Te sugiero que la validación la hagas dentro del mysql así:
$user=$_POST['usuario'];
$clave=$_POST['contrasena'];
$res=mysql_query("select * from usuario where nombre_usuario='$user' and clave_usuario='$clave'");
if ($res)
   echo "usuario Autenticado<br>";
else
  echo "usuario NO autenticado<br>";
Pruébalo y me cuentas.
Gracias amigo me ha ayudado mucho tengo otra duda:
Tengo este código
<?php
if($_SESSION["autorizacion"]=="si")
{
?>
Y aquí se desplegá el contenido para los usuarios autorizados. Una vez que terminemos de desplegar el contenido, al final de eso abrimos código nuevamente:
<?
}
else
{
¿Echo "Usted no esta autorizado para ver este contenido. Por favor"? > <a href="index.html"><? ¿Echo "Identifiquese"? ></a>.
}
?>
¿La cosa es que ese ultimo cierre?> No me lo acepta la verdad no se mm donde estará el error bueno según el que me lanxa el buscador el error esta en la etiqueta
</html>
Pero ni idea si me ayudas pss me resuelves mucho un saludos
Debes tener cuidado con la sintaxis del php dentro del html, recuerda que el php se "embebe" o se incrusta dentro del html, no al contrario. En tu código
else
{
¿Echo "Usted no esta autorizado para ver este contenido. Por favor"? > <a href="index.html"><? ¿Echo "Identifiquese"? ></a>.
}
?>
debes reemplazarlo por
else{
echo "usted no esta autorizado para ver este contenido. Por favor <a href=\"index.html\">Identifiquese</a>";
}
?>
Para poder ver este tipo de errores, te sugiero un editor que coloree sintaxis, si puedes usa dreamweaver, o si no, te recomiendo pspad, es gratuito y muy bueno, también hay muchos otros en internet.
¿Disculpa la ladilla mi pana es que tengo otro problema fue correcta tu correxion del código pero al introducir nombre de usuario y contraseña todo perfecto busca en la BD comprueb que es correcto entonces me manda a la página 1(de control) esta me dice bienvenido usuario XXXX espere mientras lo redireccionamos (en este caso a la página cuyo contenido esta bloqueado por el ese código que me corregiste pero la cosa es que con todo y que el usuario y contraseña es correcto me dice que no estoy autorixado para ver el contenido sera que no se esta almacenando la contraseña y el usuario y se pierde al cambiar de página?
A ver estos son los códigos finales que tengo:
Voy a obviar la de index.php que es donde esta el formulario
Control.php
<?
session_start();
$_SESSION["user"]=$_POST['usuario'];
$_SESSION["pass"]=$_POST['contraseña'];
$_SESSION["falla"]=0;
?>
<meta http-equiv="refresh" content="3; url=control2.php" />
<?php
$user=$_POST['usuario'];
$pass=$_POST['contraseña'];
if(empty($user))
{
echo "No ha ingresado un nombre de usuario. <br> Sera redirigido de vuelta.";
$_SESSION["falla"]=1;
}
else
{
if(empty($pass))
{
echo "No ha ingresado una clave. <br> Sera redirigido de vuelta.";
$_SESSION["falla"]=1;
}
else
{
$con=mysql_connect("example.com","root","18382405");
mysql_select_db("autorizados",$con);
$sql="SELECT usuario, clave, nombre FROM usuario WHERE usuario='$user'";
$resultado=mysql_query($sql,$con);
if(!$resultado)
{
$error=mysql_error();
print $error;
$_SESSION["falla"]=1;
exit();
}
if(mysql_affected_rows()==0)
{
echo "El usuario no fue encontrado. <br> Sera redirigido de vuelta.";
$_SESSION["falla"]=1;
exit();
}
else
{
$row=mysql_fetch_array($resultado);
$nombre=$row['nombre'];
if($user==$row['usuario'])
{
if($pass==$row['clave'])
{
echo "<b>Bienvenido $nombre</b>. <br> Espere mientras es redirigido";
$_SESSION["nombre"]=$nombre;
}
else
{
echo "Hay un error en la clave. <br> Espere mientras es redirigido";
$_SESSION["falla"]=1;
}
}
else
{
echo "Hay un error en el nombre de usuario. <br> Espere mientras es redirigido";
$_SESSION["falla"]=1;
}
}
}
}
?>
Control2.php
<?
session_start();
if($_SESSION["falla"]==0)
{
$_SESSION["autorizacion"]="si";
header("Location: index.php");
}
else
{
unset($_SESSION["falla"]);
session_destroy();
header("Location: errorlogin.html");
}
?>
Y para finalixar el código con el que se protegen las páginas de acceso restringido que supuestamente va dentro del body
<?
if($_SESSION["autorizacion"]=="si")
{
?>
SI VES ESTE TEXTO SIGNIFICA QUE YA PUEDES VER EL CONTENIDO
<?
}
else{
echo "usted no esta autorizado para ver este contenido. Por favor <a href=\"index.html\">Identifiquese</a>";
}
?>
Te recomiendo los siguientes enlaces para que revises un poco más del tema de autenticación y sesiones:
http://www.scribd.com/doc/8774169/Autenticacion-de-usuarios-y-Sesiones-en-PHP
http://www.desarrolloweb.com/articulos/1009.php
http://www.tufuncion.com/login_autentificacion_php
http://foro.websecurity.es/index.php?topic=40.0

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas