Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Permitir clave con letra y numeros

Estas en el tema de Permitir clave con letra y numeros en el foro de PHP en Foros del Web. Buenas tardes, una vez mas necesito del saber de los miembros de esta pagina, veran tengo un programa que valida usuario con datos enviados de ...
  #1 (permalink)  
Antiguo 03/11/2014, 10:38
 
Fecha de Ingreso: julio-2014
Mensajes: 116
Antigüedad: 9 años, 9 meses
Puntos: 1
Exclamación Permitir clave con letra y numeros

Buenas tardes, una vez mas necesito del saber de los miembros de esta pagina,
veran tengo un programa que valida usuario con datos enviados de un simple formulario, el validador es:
Código PHP:
Ver original
  1. <?php
  2. ?>
  3. <head>
  4. <title>validar</title>
  5. <script>
  6.     function noexiste(){
  7.         alert("Usuario no existe...");
  8.         window.location = "login.php";
  9.     }
  10.     function bienvenido(){
  11.         alert("Bienvenido...");
  12.         window.location = "user/menu.php";
  13.     }
  14. </script>
  15. </head>
  16.  
  17. <body>
  18. <?php
  19.  
  20.     session_start();
  21.     include("coneV.php");
  22.    
  23.     $user = $_POST["txtUser"];
  24.     $pass = $_POST["txtPass"];
  25.  
  26.     $res = validarUser($user,$pass);
  27.    
  28.     if($row = mysql_fetch_array($res))
  29.    
  30.    
  31.     {
  32.         $_SESSION["user"] = $row["usuario"];
  33.         echo "<script>bienvenido()</script>";
  34.         desconectar();
  35.     }
  36.     else{
  37.         echo "<script>noexiste()</script>";
  38.         desconectar();
  39.     }
  40.    
  41.     ob_end_flush();
  42. ?>
  43. </body>
  44. </html>


Y el archivo "coneV.php" es:

Código PHP:
Ver original
  1. <?php
  2. ?>
  3. <?php
  4. //quitar error de php 5.5
  5. error_reporting(E_ALL ^ E_DEPRECATED);
  6.  
  7. function conectar(){
  8.     $cnn = mysql_connect("localhost", "root", "");
  9.     mysql_select_db("automotora", $cnn);
  10.     return $cnn;
  11. }
  12.  
  13. function validarUser($user, $pass){
  14.     $res = mysql_query("SELECT * FROM usuarios WHERE usuario='".$user."' and clave=".$pass."",conectar());
  15.     return $res;
  16. }
  17. function mostrarAuto(){
  18.     $res = mysql_query("SELECT * FROM vehiculo  WHERE estado='en_venta'",conectar());
  19.     return $res;
  20. }
  21.  
  22. function desconectar(){
  23.     mysql_close(conectar());
  24. }
  25. ?>

normalmente funciona bien...con contraseñas que requieran solo numeros , pero si uso una contraseña con letras recibo esto:

por si no se ve bien la imagen, esta dice "Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\automotoraPHP\validar.php on line 32"

La linea que menciona el error es esta para que no busquen tanto en la primera que puse arriba :
Código PHP:
Ver original
  1. if($row = mysql_fetch_array($res))
  2.     {
  3.         $_SESSION["user"] = $row["usuario"];
  4.         echo "<script>bienvenido()</script>";
  5.         desconectar();
  6.     }
  7.     else{
  8.         echo "<script>noexiste()</script>";
  9.         desconectar();
  10.     }
lineas 32 en adelante.


Espero que no sea mucho pedir, ay que necesito saber como poner clave con letra y numero o fallare mis examenesde nuevo
  #2 (permalink)  
Antiguo 03/11/2014, 10:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Permitir clave con letra y numeros

Si la clave tiene letras y números, es un string, y debe ser evaluado en SQL como string... Pero lo estás poniendo como si fuese un número.
En MySQL las cadena s de texto van siempre entre apostrofos ('):
Mal:
Código PHP:
Ver original
  1. function validarUser($user, $pass){
  2.     $res = mysql_query("SELECT * FROM usuarios WHERE usuario='".$user."' and clave=".$pass."",conectar());
  3.     return $res;
  4. }

Bien:
Código php:
Ver original
  1. function validarUser($user, $pass){
  2.     $res = mysql_query("SELECT * FROM usuarios WHERE usuario='".$user."' and clave='".$pass."'",conectar());
  3.     return $res;
  4. }

Acuérdate que porque PHP sepa que el contenido es un string no implica que MySQ se entere de eso, porque no comparten nada. No son el mismo sistema y no se comunican ese tipo de cosas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/11/2014, 10:58
 
Fecha de Ingreso: julio-2014
Mensajes: 116
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Permitir clave con letra y numeros

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si la clave tiene letras y números, es un string, y debe ser evaluado en SQL como string... Pero lo estás poniendo como si fuese un número.
En MySQL las cadena s de texto van siempre entre apostrofos ('):
Mal:
Código PHP:
Ver original
  1. function validarUser($user, $pass){
  2.     $res = mysql_query("SELECT * FROM usuarios WHERE usuario='".$user."' and clave=".$pass."",conectar());
  3.     return $res;
  4. }

Bien:
Código php:
Ver original
  1. function validarUser($user, $pass){
  2.     $res = mysql_query("SELECT * FROM usuarios WHERE usuario='".$user."' and clave='".$pass."'",conectar());
  3.     return $res;
  4. }

Acuérdate que porque PHP sepa que el contenido es un string no implica que MySQ se entere de eso, porque no comparten nada. No son el mismo sistema y no se comunican ese tipo de cosas.
Gracias por tu ayuda, soy muy torpe en PHP aun

Etiquetas: clave, formulario, html, letra, mysql, numeros, permitir, select, usuarios
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 09:51.