- Desde
- 19 Feb 2014
- Mensajes
- 9
CREATE TABLE `usuarios` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(30) COLLATE latin1_spanish_ci NOT NULL,
`usuario` varchar(30) COLLATE latin1_spanish_ci NOT NULL,
`pass` varchar(30) COLLATE latin1_spanish_ci NOT NULL,
`permisos` int(4) NOT NULL,
`email` varchar(30) COLLATE latin1_spanish_ci NOT NULL,
`fecha` date NOT NULL,
PRIMARY KEY (`id`)
)
<?php
$conexion=mysql_connect('db','user','pass') or die('No hay conexión a la base de datos');
$db=mysql_select_db('tabla',$conexion)or die('no existe la base de datos.');
$usuarioIng=$_POST['user'];
$passIng=$_POST['permisos'];
session_start();
$consulta=mysql_query("select * from usuarios");
$puerta='continuar';
while($filas=mysql_fetch_array($consulta)and $puerta='continuar'){
$id=$filas['id'];
$nombre=$filas['nombre'];
$usuario=$filas['usuario'];
$pass=$filas['pass'];
$fecha=$filas['fecha'];
$permiso=$filas['permisos'];
if (isset($usuarioIng)and isset($passIng)){
if ($usuario==$usuarioIng and $passIng==$permiso){
echo '<div class="ok">Bienvenido '.$usuario.'</div>';
$miSession=array('id'=>$id,'nombre'=>$nombre,
'usuario'=>$usuario,'pass'=>$pass,
'fecha'=>$fecha,'permisos'=>$permiso);
//ir a la pagina restringida
$_SESSION['miSession']=$miSession;
?>
<html>
<head>
<meta http-equiv="refresh" content="1; url= ../panel.php">
</head>
</html>
<?php
$puerta='salir';
exit;
}else{
$resutado='no';
}
}
}
if ($resutado=='no'){
echo '<div class="no">Su usuario o contraseña no se encontraron</div>';
?>
<html>
<head>
<meta http-equiv="refresh" content="3; url= acceso.php">
</head>
</html>
<?php
}
?>
<?php
session_start();
if ($_SESSION['miSession']['permisos']==7777){
?>
<?php
}else{
echo '<div class="no">No tiene permisos</div>';
?>
<html>
<head>
<meta http-equiv="refresh" content="3; url= index.php">
</head>
</html>
<?php
}
?>
El problema que le veo es que en la sentencia de SQL del login le dices "tráeme todos los campos y filas de la tabla usuarios", después haces una verificación en "if ($usuario==$usuarioIng and $passIng==$permiso)", en caso de que no coincida la $respuesta es no.
La cuestión es que está dentro de un while y como has llamado a todos los usuarios el seguirá buscando y buscando hasta terminar con la tabla, por lo tanto, seguramente el último usuario de dicha tabla no coincide con los parámetros de la "verificación", por lo tanto, $respuesta es no.
Qué crees que debería hacer?? Hago para que solo busque el campo que necesito??
Al ser solo un usuario podría evitar conectar a MySQL.
$consulta = mysql_query("SELECT * FROM usuarios WHERE usuario='".$_POST['user']."' AND pass='".$_POST['pass']."'");
$filas = mysql_fetch_array($consulta);
if($filas['user']!=""){
$id=$filas['id'];
$nombre=$filas['nombre'];
$usuario=$filas['usuario'];
$pass=$filas['pass'];
$fecha=$filas['fecha'];
$permiso=$filas['permisos'];
$miSession=array('id'=>$id,'nombre'=>$nombre,
'usuario'=>$usuario,'pass'=>$pass,
'fecha'=>$fecha,'permisos'=>$permiso);
//ir a la pagina restringida
$_SESSION['miSession']=$miSession;
header('location: panel.php');
die();
}else{
die('NO tienes acceso');
}
$consulta = mysql_query("SELECT * FROM usuarios WHERE usuario='".$_POST['user']."' AND pass='".$_POST['pass']."'");
$consulta = mysql_query("SELECT * FROM usuarios WHERE usuario='".mysql_real_escape_string($_POST['user'])."' AND pass='".mysql_real_escape_string($_POST['pass'])."'");
Gracias. No, el código no es mio.vos programaste eso?... como se le puede a alguien recorrer toda una tabla comparando campos... imaginate con miles y miles de users...
PHP:$consulta = mysql_query("SELECT * FROM usuarios WHERE usuario='".$_POST['user']."' AND pass='".$_POST['pass']."'"); $filas = mysql_fetch_array($consulta); if($filas['user']!=""){ $id=$filas['id']; $nombre=$filas['nombre']; $usuario=$filas['usuario']; $pass=$filas['pass']; $fecha=$filas['fecha']; $permiso=$filas['permisos']; $miSession=array('id'=>$id,'nombre'=>$nombre, 'usuario'=>$usuario,'pass'=>$pass, 'fecha'=>$fecha,'permisos'=>$permiso); //ir a la pagina restringida $_SESSION['miSession']=$miSession; header('location: panel.php'); die(); }else{ die('NO tienes acceso'); }
Gracias. No, el código no es mio.
Acabo de probar este código, y todo lo demás, y no accede.
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?