Foros del Web » Programando para Internet » PHP »

Validar User & Password

Estas en el tema de Validar User & Password en el foro de PHP en Foros del Web. Hola amigos del foro, estoy desarrollando la interfaz de acceso a un INTRANET desarrollado con PHP + MYSQL. tengo una tabla basica : nombre de ...
  #1 (permalink)  
Antiguo 10/04/2005, 09:24
Avatar de SAGITARIO  
Fecha de Ingreso: febrero-2005
Ubicación: Huancayo
Mensajes: 108
Antigüedad: 12 años, 9 meses
Puntos: 0
Validar User & Password

Hola amigos del foro, estoy desarrollando la interfaz de acceso a un INTRANET desarrollado con PHP + MYSQL.
tengo una tabla basica :
nombre de la tabla : usuario
campos: nombre CHAR(20), clave CHAR(8)

********* formulario de acceso ...
Código PHP:
<BODY>
<
FORM METHOD=POST ACTION="acceso.php">
Usuario
<
INPUT TYPE="text" NAME="usuario">
<
BR>
Clave:
<
INPUT TYPE="password" NAME="clave">

<
INPUT TYPE="submit"name="submit" value="Enviar">
</
FORM>
</
BODY


********** pagina acceso.php
Código PHP:
<? 
$conn 
mysql_connect("localhost","user","passw"); 

mysql_select_db("acceso",$conn); 

$ssql "SELECT * FROM usuario WHERE nombre='$usuario' and clave=MD5('$clave')"

**** 
MI MD5 no me funciona  
$rs 
mysql_query($ssql,$conn); 


if (
mysql_num_rows($rs)!=0){ 
    
session_start(); 
    
session_register("autentificado"); 
    
$autentificado "SI"
    
header ("Location: siguiente.php"); 
}else { 

    
header("Location: pgerror.php"); 

mysql_free_result($rs); 
mysql_close($conn); 
?>
********** PREGUNTA ....
Al ejecutar ese codigo me funciona bien el problema es que no me diferencia entre una minuscuya y MAYUSCULAS.
es decir si mi

usuario es : user y clave: pepe

***** Ingresando al formulario web:
login : user
password: pepe ahi accesa

si hago esto
login : User
password: PEPE tambien accesa

quisiera me den algunas sugerencias
Gracias

Última edición por SAGITARIO; 10/04/2005 a las 16:38
  #2 (permalink)  
Antiguo 10/04/2005, 09:38
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
yo le haria un md5() al password..
  #3 (permalink)  
Antiguo 10/04/2005, 09:48
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 13 años, 1 mes
Puntos: 7
Puedes hacerlo usando BINARY que convierte las letras a su valor numérico:
Código PHP:
"SELECT Name FROM namelist WHERE BINARY nombre='$usuario' and clave='$clave'" 
PS y también sirve lo que te ha dicho SiR.CARAJ0DIDA
  #4 (permalink)  
Antiguo 10/04/2005, 10:15
Avatar de SAGITARIO  
Fecha de Ingreso: febrero-2005
Ubicación: Huancayo
Mensajes: 108
Antigüedad: 12 años, 9 meses
Puntos: 0
Gracias Amigos Tengo Una Duda .....

Bueno con ese codigo logro validar los datos .... Gracias ...

De lo que me percate es de lo siguiente ....cuando ejecuto mi URL hago lo siguiente:

http://localhost/sistema/ <<--- por defecto carga la pagina principal que contiene el index.html (formulario USER & PASSWORD) .

y si el password es correcto direcciona a:

http://localhost/sistema/siguiente.php hasta ahi todo bien .........


Pero que pasa si en la Direccion de URL le doy la siguiente direccion

http://localhost/sistema/siguiente.php ????

tambien accesa ......!!!!

como podria limitar ese acceso ...... con $_COOKIE o existe otra manera de hacerlo.


Gracias por sus SUGERENCIAS...

Salu2

  #5 (permalink)  
Antiguo 10/04/2005, 10:25
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 13 años, 1 mes
Puntos: 7
Pués lo primero que debería haber en la página siguiente.php debería ser algo como esto:
Código PHP:
<?php
session_start 
();
if (!isset(
$_SESSION['autentificado']) || $_SESSION['autentificado'] != 'SI'){
    
header ("Location: index.php");
}
?>
  #6 (permalink)  
Antiguo 10/04/2005, 10:40
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 14 años
Puntos: 0
pintix tiene razon, pero para usar eso entonces cuando validas al usuario tienes que hacer $_SESSION['autentificado']='SI'
Recuerda en cada script que vayas a usar $_SESSION tienes que hacer antes session_start();
  #7 (permalink)  
Antiguo 10/04/2005, 10:57
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 13 años, 1 mes
Puntos: 7
Es verdad kurlax.. como nunca uso session_register no me di cuenta de que él lo usaba, de hecho SAGITARIO deberías cambiar donde pone:
Código PHP:
session_start(); 
session_register("autentificado"); 
$autentificado "SI" 
por:
Código PHP:
session_start(); 
$_SESSION['autentificado'] = 'SI'
por sistema, no uses session_register () ya que puede dar problemas en algunas configuraciones de PHP.

Aparte, antes me olvidé de poner que lo mejor es que el código lo incluyas en un fichero y lo recuperes con include, por que más adelante puedes querer añadir más opciones (como recuperar datos del usuario, su nivel de acceso, etc).
  #8 (permalink)  
Antiguo 10/04/2005, 11:20
Avatar de SAGITARIO  
Fecha de Ingreso: febrero-2005
Ubicación: Huancayo
Mensajes: 108
Antigüedad: 12 años, 9 meses
Puntos: 0
Entonces Quedaria De Esta Manera

Bueno en resumen el codigo seria ... de esta manera !
(para quienes tambien tengan dudas al respecto)

TABLA en MySQL
nombre de la tabla : usuario
campos: nombre CHAR(20), clave CHAR(8)

Primera pagina (Formulario)
Código PHP:

<BODY>
<
FORM METHOD=POST ACTION="acceso.php">
Usuario
<
INPUT TYPE="text" NAME="usuario">
<
BR>
Clave:
<
INPUT TYPE="password" NAME="clave">

<
INPUT TYPE="submit"name="submit" value="Enviar">
</
FORM>
</
BODY
Archivo acceso.php
Código PHP:
<? 
$conn 
mysql_connect("localhost","user","passw"); 

mysql_select_db("acceso",$conn); 

$ssql "SELECT * FROM usuario WHERE BINARY nombre='$usuario' and clave=MD5('$clave')"

$rs mysql_query($ssql,$conn); 


if (
mysql_num_rows($rs)!=0){ 
session_start(); 
$_SESSION['autentificado'] = 'SI'
header ("Location: siguiente.php"); 
}else { 

header("Location: pgerror.php"); 

mysql_free_result($rs); 
mysql_close($conn); 
?>
Bueno hasta ahi todo bien ....
Ingrese los datos al campo CLAVE de la tabla USUARIO con la FUNCION MD5()

y ahora no me acepta la clave debo hacer algun cambio en el Archivo
acceso.php a parte de la que hice !!!! ???

Última edición por SAGITARIO; 10/04/2005 a las 16:40
  #9 (permalink)  
Antiguo 10/04/2005, 18:41
Avatar de SAGITARIO  
Fecha de Ingreso: febrero-2005
Ubicación: Huancayo
Mensajes: 108
Antigüedad: 12 años, 9 meses
Puntos: 0
Bueno Eso Ya Esta !!

Mi error era que en la tabla
USUARIOS
el campo CLAVE tenia CHAR(8) y para usar la FUNCION MD5() tenia que ser de esta manera:
Código PHP:
campo:   clave  VARCHAR(32
y con eso solucioné el problema !!!!

************* BUENO MI DUDA AHORA ES:

Como validad los controles del formulario antes de ser enviados a la pagina
PHP.

  #10 (permalink)  
Antiguo 11/04/2005, 02:56
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Iniciado por SAGITARIO
Como validad los controles del formulario antes de ser enviados a la pagina
Antes de ser enviados?? Entonces corresponde a JavaScript, pero no es del todo seguro una validación de éste tipo, porque se hace del lado del cliente.. y bueno, simplemente no podría tener JS.. y con eso quebró tu sistema. Por el contrario, una validación en PHP será confiable.. pués éste el que en última instancia hace dicha validación y solo depende de sí mismo.

Para ambos casos encontrarás muchos ejemplos si buscas en su respectivo foro... tan solo te dejo dos enlaces
1) En el primero "alguien" dejó algo en JS: http://www.forosdelweb.com/f18/comprobar-campos-formulario-275223/

2) En éste.. hice algo sencillo con PHP: http://www.forosdelweb.com/showthrea...=258911&page=2

Bueno.. espero te sirva, aunque te invito que para cada nueva consulta hacerlo en un nuevo post (después de buscar?)...

Para seguir en el tema... ... permiteme modificar tantito tu código... porque creo que hay cosas importantes.. las comentaré en dicho código:
Código PHP:
<?
session_start
(); // En la primera línea

// si haces una validación de campos vacios.. haz la consulta solo sí no hay tales... ahorras recursos.
$conn mysql_connect("localhost","user","passw");
mysql_select_db("acceso",$conn);

$ssql "SELECT * FROM usuario WHERE BINARY nombre='".$_POST['usuario']."' and clave=MD5('".$_POST['clave']."')"// Usa variables superglobales

$rs mysql_query($ssql,$conn);

if (
mysql_num_rows($rs)!=0){

$_SESSION['autentificado'] = 'SI';
header ("Location: siguiente.php");
exit; 
// buena compañia del header
}else {

header("Location: pgerror.php");
exit;
/* Esto ya no será necesario
mysql_free_result($rs);
mysql_close($conn); */
?>
Claro... dependerá de la versión de tu PHP... pero esto sería más correcto para versiones posteriores a la 4.0.2 (?).

Para más info de variables superglobales... como es común, las FAQ: http://www.forosdelweb.com/showthrea...989#post238989

Espero haberte ayudado... Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #11 (permalink)  
Antiguo 11/04/2005, 09:23
Avatar de SAGITARIO  
Fecha de Ingreso: febrero-2005
Ubicación: Huancayo
Mensajes: 108
Antigüedad: 12 años, 9 meses
Puntos: 0
OK Gracias

Gracias por las sugerencias ...

Salu2.







En crecimiento ....
  #12 (permalink)  
Antiguo 10/06/2005, 10:36
 
Fecha de Ingreso: junio-2005
Mensajes: 41
Antigüedad: 12 años, 6 meses
Puntos: 0
Exclamación hola

hola amigos

saben, la verdad yo estoy realizando algo muy parecido a lo expuesto aqui, he probado de varias maneras pero no me funciona este codigo, lo tengo de esta manera :


<?
session_start();
$conn = mysql_connect("ip","bd","contraseña");

$base=mysql_select_db("bd",$conn);

$ssql = "SELECT * FROM acceso2 WHERE BINARY rut='".$_POST['usuario']."' and clave=MD5('".$_POST['clave']."')";
$rs = mysql_query($ssql,$conn);

if (mysql_num_rows($rs)!=0){

$_SESSION['autentificado'] = 'SI';
header ("Location: form_consulta.php");
exit;
}else {

header("Location: registrarse.php");
exit;
}
mysql_free_result($rs);
mysql_close($conn);
?>

pero lo q no funciona es cuando ingreso rut y contraseña, se verifica en la bd, pero no realiza ninguna accion, ya sea si el rut y la clave son correcto ir a form_consulta.php en caso contrario ir a registrarse.php.......

por fa si me pueden ayudar se los agradeceria mucho
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 13:14.