Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Acceso

Estas en el tema de Acceso en el foro de PHP en Foros del Web. Quiero que al intentar entrar una persona si no tiene el campo de contraseña o lo tiene mal le salta un mensaje de erro, a ...
  #1 (permalink)  
Antiguo 03/03/2014, 14:14
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Acceso

Quiero que al intentar entrar una persona si no tiene el campo de contraseña o lo tiene mal le salta un mensaje de erro, a lo igual que con el usuario.
Y si ese usuario tiene en un campo de la BD "no" le salta otro mensaje de error, y si todo es correcto lo redireccionaria a una pagina..

El error que tengo es que no me detecta bien si tiene un no o si.. y no lo redirecciona tampoco

Tengo esto.. (luego aría el proceso a cambiarlo a mysqli) No se donde estoy fallando la verdad

Código PHP:
if ($_POST['uss']) { 
$uss=$_POST['uss']; 
$pass=$_POST['pass']; 
if (
$pass==NULL) { 
echo 
"La contraseña no fue enviada"
}else{ 
if (
$uss==NULL) { 
echo 
"El usuario no fue enviado"
}else{ 
$checkvalido mysql_query("SELECT uss,pass,Validado FROM new WHERE uss = '$uss', pass = '$pass' and Validado like '%si%'");  
$valido_exist mysql_num_rows($checkvalido);  
if (
$valido_exist>0) {
echo 
"tu campo validado es NO"
}else{ 
$query mysql_query("SELECT uss,pass FROM new WHERE uss = '$uss'") or die(mysql_error()); 
$data mysql_fetch_array($query); 
if(
$data['pass'] != $pass) { 
echo 
"Contraseña incorrecta incorrecta"
}else{ 
$query mysql_query("SELECT uss,pass FROM new WHERE uss = '$uss'") or die(mysql_error()); 
$row mysql_fetch_array($query); 
$_SESSION["s_uss"] = $row['uss']; 
header("Location: carpeta/index.php"); 
  #2 (permalink)  
Antiguo 03/03/2014, 14:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Acceso

La primer consulta está mal, no olvides depurarla también con mysql_error() no te vas a dar cuenta jamás.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 03/03/2014, 14:21
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Acceso

Cambio esto:

Código PHP:
if ($_POST['uss']) { 
$uss=$_POST['uss']; 
$pass=$_POST['pass']; 
if (
$pass==NULL) { 
echo 
"La contraseña no fue enviada"
}else{ 
if (
$uss==NULL) { 
echo 
"El usuario no fue enviado"
}else{ 
Por este otro:

Código PHP:
if ($_POST['uss']) { 
$uss=$_POST['uss']; 
$pass=$_POST['pass']; 
if(
$uss==NULL or $pass==NULL) { 
echo 
"El usuario o la contraseña no fue enviada echo " mysql_error(). "\n"
}else{ 

Última edición por RaulCDT; 03/03/2014 a las 14:29 Razón: añado mysql_error()
  #4 (permalink)  
Antiguo 03/03/2014, 14:31
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Acceso

La verdad que no me estoy dando cuenta donde estoy teniendo fallando.. o que deberia cambiar para que me funcionase
  #5 (permalink)  
Antiguo 03/03/2014, 14:34
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Acceso

Te lo dijo pateketrueke, en la primera consulta SQL, la sintaxis no es correcta, usa la funcion mysql_error para poder recibir el error que te da mysql.

Un saludo
  #6 (permalink)  
Antiguo 03/03/2014, 14:46
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Acceso

Ahora si me funciona añadiendole esto (conociendome seguro que algo mas tengo seguro, pero de los errores se aprende):

Código PHP:
Ver original
  1. if (isset($_POST["uss"])) {
  2. $uss=$_POST['uss'];
  3. $pass=$_POST['pass'];
  4. if($uss==NULL or $pass==NULL) {
  5. echo "El usuario o la contraseña no fue enviada " . mysql_error(). "\n";
  6. }else{

Ahora me quedaría ver donde tengo el error también en lo siguiente que tengo, que si tengo un campo "no" mande el mensaje de error y si tiene "si" siga..:

Código PHP:
}else{  
$checkvalido mysql_query("SELECT uss,pass,Validado FROM new WHERE uss = '$uss', pass = '$pass' and Validado like '%si%'");   
$valido_exist mysql_num_rows($checkvalido);   
if (
$valido_exist>0) { 
echo 
"tu campo validado es NO"
Y redireccionar o mandar a una pagina si todo lo anterior esta correcto me falla siempre y no sé por donde guiarme..

Código PHP:
}else{  
$query mysql_query("SELECT uss,pass FROM new WHERE uss = '$uss'") or die(mysql_error());  
$row mysql_fetch_array($query);  
$_SESSION["s_uss"] = $row['uss'];  
header("Location: carpeta/index.php"); 
  #7 (permalink)  
Antiguo 03/03/2014, 15:28
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Acceso

He cambiado

Código PHP:
}else{   
$checkvalido mysql_query("SELECT uss,pass,Validado FROM new WHERE uss = '$uss', pass = '$pass' and Validado like '%si%'");    
$valido_exist mysql_num_rows($checkvalido);    
if (
$valido_exist>0) {  
echo 
"tu campo validado es NO"
por:

Código PHP:
$query mysql_query("SELECT uss,pass,Validado FROM new WHERE uss = '$uss', pass = '$pass', Validado = 'no'") or die(mysql_error()); 
$data1 mysql_fetch_array($query); 
if(
$data1['Validado'] != $Validado) { 
echo 
"tu campo validado es NO..no puede serguir"
y me da este error:

Código:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' pass = 'prueba', Validado = 'no'' at line 1
La verdad que no lo entiendo... alguna sugerencia para lo que me gustaria hacer?
  #8 (permalink)  
Antiguo 03/03/2014, 15:34
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Acceso

Cita:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' pass = 'prueba', Validado = 'no'' at line 1
Tienes un error de sintaxis. Consulta el manual que corresponda con tu versión de MySQL para usar la sintaxis correcta cerca de pass='prueba', Validado='no' en la línea 1.
  #9 (permalink)  
Antiguo 03/03/2014, 15:36
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Acceso

El problema son las comas..., informate del uso correcto de la clausula where

Un saludo
  #10 (permalink)  
Antiguo 03/03/2014, 17:26
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Acceso

Vale de momento me funciona poniendolo así:

Código PHP:
SELECT uss,pass,Validado FROM new WHERE uss '$uss' and pass '$pass' and Validado='no' " 
Lo único que me faltaría seria que cuando todo fuese correcto lo llevase a una pagina, por ejemplo aqui.php

Código PHP:
}else{   
$query mysql_query("SELECT uss,pass FROM new WHERE uss = '$uss'") or die(mysql_error());   
$row mysql_fetch_array($query);   
$_SESSION["s_uss"] = $row['uss'];   
header("Location: carpeta/aqui.php"); 
Porque no me funciona con header?
  #11 (permalink)  
Antiguo 03/03/2014, 17:37
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Acceso

No te da ningún error? pon el código completo de toda la página.

Un saludo
  #12 (permalink)  
Antiguo 04/03/2014, 01:10
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Acceso

Tengo esto (por donde crees que estoy fallando?)a ver si averiguo algo:

Código PHP:
 <?
$dbhost
='localhost'
$dbusername=''
$dbuserpass=''
$dbname='';  


session_start(); 


mysql_connect ($dbhost$dbusername$dbuserpass); 
mysql_select_db($dbname) or die('Cannot select database'); 
if (isset(
$_POST["uss"])) { 

$uss=$_POST['uss']; 
$pass=$_POST['pass']; 
if(
$uss==NULL or $pass==NULL) { 
echo 
"El usuario o la contraseña no fue enviada " mysql_error(). "\n"
}else{ 
$query mysql_query("SELECT uss,pass,Validado FROM new WHERE uss = '$uss' and pass = '$pass' and Validado='no' ") or die(mysql_error()); 
$data1 mysql_fetch_array($query); 
if(
$data1['Validado'] != $Validado) { 
echo 
"Espere a ser validado tiene NO";  
}else{ 
$query mysql_query("SELECT uss,pass FROM new WHERE uss = '$uss'") or die(mysql_error()); 
$data mysql_fetch_array($query); 
if(
$data['pass'] != $pass) { 
echo 
"Contraseña incorrecta"
}else{ 
$query mysql_query("SELECT uss,pass FROM new WHERE uss = '$uss'") or die(mysql_error()); 
$row mysql_fetch_array($query); 
$_SESSION["s_uss"] = $row['uss']; 
header("Location: carpeta/index.php"); 


}  
}
?>
Muchísimas gracias de verdad!
  #13 (permalink)  
Antiguo 04/03/2014, 03:52
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Acceso

He estado haciendo pruebas y bueno he cambiado este:

Código PHP:
}else{  
$query mysql_query("SELECT uss,pass FROM new WHERE uss = '$uss'") or die(mysql_error());  
$row mysql_fetch_array($query);  
$_SESSION["s_uss"] = $row['uss'];  
header("Location: carpeta/pagina.php"); 

Código PHP:
}else{ 
$query mysql_query("SELECT uss,pass FROM new WHERE uss = '$uss'") or die(mysql_error()); 
$row mysql_fetch_array($query); 
$_SESSION["s_uss"] = $row['uss']; 
if(
$row 0header("location: carpeta/pagina.php") or exit("no funciona"); 
Y me muestra el error de no funciona en vez de llevarlo al directorio pagina.php
  #14 (permalink)  
Antiguo 04/03/2014, 04:45
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Acceso

Porque de esta forma no se si lo estaría estructurando bien o exponiendo bien..


Código PHP:
}else{  
$query mysql_query("SELECT uss,pass,validado FROM new WHERE uss = '$uss' and pass = '$pass' and Validado='si'") or die(mysql_error());  
$row mysql_fetch_array($query);  
$_SESSION["s_uss"] = $row['uss'];
if(
$row['Validado'] != $Validado or $row['pass'] != $pass or $row['uss'] != $uss
header("location: carpeta/pagina.php") or exit("no funciona"); 
  #15 (permalink)  
Antiguo 04/03/2014, 07:32
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Acceso

Aun así me da el mensaje de or exit("no funciona"); en vez de mandarlo con el header...
  #16 (permalink)  
Antiguo 04/03/2014, 07:47
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Acceso

Y ya no se si es un error mio, o del servidor o algo porque por ejemplo he probado con otro sistema para entrar para ver su funcionamiento y tampoco lo envia a la pagina que dice..

y tiene esto: mas o menos parecido a lo que yo tengo:

Código PHP:
 $sql mysql_query("SELECT usuario_id, usuario_nombre, usuario_clave FROM usuarios WHERE usuario_nombre='".$usuario_nombre."' AND usuario_clave='".$usuario_clave."'");
            if(
$row mysql_fetch_array($sql)) {
                
$_SESSION['usuario_id'] = $row['usuario_id']; // creamos la sesion "usuario_id" y le asignamos como valor el campo usuario_id
                
$_SESSION['usuario_nombre'] = $row["usuario_nombre"]; // creamos la sesion "usuario_nombre" y le asignamos como valor el campo usuario_nombre
                
header("Location: index.php");
            }else {
?>
                Error, <a href="acceso.php">Reintentar</a> 
Si no esta bien le manda el mensaje de error pero si todo esta bien se queda en blanco.. como me pasa a mi..
  #17 (permalink)  
Antiguo 04/03/2014, 09:46
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Acceso

Seguramente sea porque tienes texto o alguna salida con echo antes del header, no puede haber ninguna etiqueta html ni texto antes de la funcion header, seguramente estes recibiendo algun error pero no se muestra, pon la funcion error_reporting(E_ALL) al principio de tu archivo a ver si se muestran errores o warnings.

Un saludo
  #18 (permalink)  
Antiguo 04/03/2014, 11:54
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Acceso

la verdad que no pone ningún error...

y bueno en la misma hoja tengo algunos includes pero estan cerrados igualmente, y el codigo que hace la funcion para logear el usuario es esa expuesta anteriormente y no tengo ningun html..

Que es este codigo entero:

Código PHP:
Ver original
  1. <?
  2. // Configura los datos de tu cuenta
  3. $dbhost='localhost';
  4. $dbusername='';
  5. $dbuserpass='';
  6. $dbname='';  
  7.  
  8.  
  9. // Conectar a la base de datos
  10. mysql_connect ($dbhost, $dbusername, $dbuserpass);
  11. mysql_select_db($dbname) or die('Cannot select database');
  12. if (isset($_POST["uss"])) {
  13. //Comprobacion del envio del nombre de usuario y password
  14. $uss=$_POST['uss'];
  15. $pass=$_POST['pass'];
  16. if($uss==NULL or $pass==NULL) {
  17. echo "El usuario o la contraseña no fue enviada " . mysql_error(). "\n";
  18. }else{
  19. $query = mysql_query("SELECT uss,pass,Validado FROM new WHERE uss = '$uss' AND pass = '$pass' AND Validado='no' ") or die(mysql_error());
  20. $data1 = mysql_fetch_array($query);
  21. if($data1['Validado_cmNew'] != $Validado_cmNew) {
  22. echo "Espere a ser validado por el administrador";  
  23. }else{
  24. $query = mysql_query("SELECT uss,pass FROM new WHERE uss = '$uss'") or die(mysql_error());
  25. $data = mysql_fetch_array($query);
  26. if($data['pass'] != $pass) {
  27. echo "Contraseña incorrecta";
  28. }else{  
  29. $query = mysql_query("SELECT uss,pass, Validado FROM new WHERE uss = '$uss' and pass = '$pass' and Validado='si'") or die(mysql_error());  
  30. $row = mysql_fetch_array($query);  
  31. $_SESSION["s_uss"] = $row['uss'];
  32. if($row['Validado'] != $Validado or $row['pass'] != $pass or $row['uss'] != $uss)  
  33. header("location: index.php") or exit("no funciona");
  34. }
  35. }
  36. }  
  37. }
  38. ?>
  #19 (permalink)  
Antiguo 04/03/2014, 12:12
 
Fecha de Ingreso: febrero-2014
Ubicación: Murcia
Mensajes: 119
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Acceso

Creo tenerlo solucionado...

He puesto
Código PHP:
Ver original
  1. echo '<SCRIPT LANGUAGE="javascript">
  2.         location.href = "index.php";
  3.         </SCRIPT>';

y de momento me funciona correctamente!

Gracias!!!

Etiquetas: mysql, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:48.