Foros del Web » Programando para Internet » PHP »

Login no me Deja pasar (PHP&MYSQL)

Estas en el tema de Login no me Deja pasar (PHP&MYSQL) en el foro de PHP en Foros del Web. HOLA Y POR LAS REPUESTAS GRACIAS DE ANTEMANO: BUENO RESULTA QUE ANDAMOS APRENDIENDO UN TANTO DE PHP Y MYSQL, Y BUENO HE QUERIDO HACER MI ...
  #1 (permalink)  
Antiguo 31/05/2004, 18:09
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Login no me Deja pasar (PHP&MYSQL)

HOLA Y POR LAS REPUESTAS GRACIAS DE ANTEMANO:

BUENO RESULTA QUE ANDAMOS APRENDIENDO UN TANTO DE PHP Y MYSQL, Y BUENO HE QUERIDO HACER MI LOGIN PERO MI PHP NO ME DEJA PASAR AL MOMENTO DE AUTENTICAR.

AQUI ESTA EL CODIGO
PERO ME IMAGINO QUE TIENE UN ERROR, EL CODIGO LO DEJO EN MANOS DE LOS MAESTROS PARA QUE ME CORRIJAN.. GRACIAS

ESTE ES EL CODIGO
Código:
<?php

// hacemos una conexion a la bd
$conexion = mysql_connect('localhost','root','');

// seleccionamos la Bd
mysql_select_db ("archivo", $conexion);

//realizamos una consulta a la bd
$query = mysql_query("SELECT * FROM usuarios", $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["usuario"]);
$arraypassword = ($array["pass"]);

//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: aplicacion.php");
}else {
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
?>
ESPERO ATENTAMENTE SU RESPUESTA
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #2 (permalink)  
Antiguo 31/05/2004, 18:40
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
//definimos un array
$array = mysql_fetch_array($query);

//realizamos un array de los campos que contienen el usuario y la contraseña
$arrayusuario = ($array["usuario"]);
$arraypassword = ($array["pass"]);

de esa forma como lo estas haciendo con $array sólo estás recogiendo el valor del primer registro de la base de datos...

hazlo mejor asi:

//Buscamos dentro de los registros donde el campo usuario sea igual al usuario enviado desde el form y donde el campo password sea igual al password enviado desde el formulario.
$query = mysql_query("SELECT*FROM usuarios WHERE usuario='$_POST[\'usuario\']' AND password='$_POST[\'pass\']'");

//contamos cuantos registros cumplen la condicion anterior
$total = mysql_num_rows($query);

//si el resultado es 0 lo enviamos de vuelta ala portada pk significa que esa combinacion usuario/password no existe
if($total == 0){
//lo mandamos a portada.php
}else{
//de lo contrario iniciamos el login
etc etc etc
}
  #3 (permalink)  
Antiguo 01/06/2004, 08:27
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
gracias por tu respuesta pondre manos a la obra

y gracias.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #4 (permalink)  
Antiguo 01/06/2004, 08:47
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Hola de nuevo despues de haber probado el Script resulta que me dice que tiene un error el cual dice asi..

Parse error: parse error, unexpected T_BAD_CHARACTER, expecting T_STRING or T_VARIABLE or T_NUM_STRING in c:\Archivos de programa\Apache Group\Apache2\htdocs\log\php19.tmp on line 15

y esta es la Linea 15
$query = mysql_query("SELECT*FROM usuarios WHERE usuario='$_POST[\'usuario\']' AND password='$_POST[\'contrasena\']'");


y todo el script quedo de la siguiente manera

Código:
<?php

// hacemos una conexion a la bd
$conexion = mysql_connect('localhost','root','');

// seleccionamos la Bd
mysql_select_db ("archivo", $conexion);

//de esa forma como lo estas haciendo con $array sólo estás recogiendo el valor del primer registro de la base de datos...hazlo mejor asi:

//Buscamos dentro de los registros donde el campo usuario sea igual al usuario enviado desde el form y donde el campo password sea igual al password enviado desde el formulario.
$query = mysql_query("SELECT*FROM usuarios WHERE usuario='$_POST[\'usuario\']' AND password='$_POST[\'contrasena\']'");

//contamos cuantos registros cumplen la condicion anterior
$total = mysql_num_rows($query);

//si el resultado es 0 lo enviamos de vuelta ala portada pk significa que esa combinacion usuario/password no existe
if($total == 0){
//lo mandamos a portada.php
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
session_register("autentificado");
$autentificado = "SI";
header ("Location: aplicacion.php");
}else{
//de lo contrario iniciamos el login
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
?>
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #5 (permalink)  
Antiguo 01/06/2004, 10:00
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Pues es que ...

Lo que pasa es que tu consulta tiene errores de conctaenación. Debería ser así:
Código PHP:
$query mysql_query("SELECT * FROM usuarios WHERE usuario = '".$_POST['usuario']."' AND password = '".$_POST['contrasena']."'"); 
Salu2
__________________
Ing. Reynier Pérez Mira
  #6 (permalink)  
Antiguo 01/06/2004, 10:01
Avatar de Ricardo  
Fecha de Ingreso: febrero-2003
Ubicación: Capital Federal, Argentina
Mensajes: 60
Antigüedad: 21 años, 2 meses
Puntos: 0
Reemplaza la linea 15 de tu codigo por lo siguiente:

$usuario=$_POST['usuario'];
$contrasena=$_POST['contrasena'];

$query = mysql_query("SELECT*FROM usuarios WHERE usuario='$usuario' AND password='$contrasena'");

Y despues contame.

Suerte!!!
__________________
.:: globaldot ::. | diseñoweb
www.globaldot.com.ar
  #7 (permalink)  
Antiguo 01/06/2004, 11:15
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
gracias por todo y bueno el php ya esta funcionando, bueno casi, pero tiene un problema, no reconoce a los usuarios, por ejemplo mi usuario es geovanny, y mi password es avila, lo colo y cuando le doy enter no me reconoce me envia a la pagina que como index con el error de el usuario no existe.

aqui esta el codigo que he aplicado ya con la ssugerencia que ustedes me dieron un con un par de cosas que e encontrado por alli..

Pero Cual es el Error porque no me reconoce el Usuario

Código PHP:
<?php
$conexion 
mysql_connect('localhost','root','');
mysql_select_db ("archivo"$conexion);
$sql="SELECT COUNT(*) FROM usuarios WHERE usuario='".$_POST['usuario']."' AND pass='".$_POST['contrasena']."'";
$resultado=mysql_query($sql) or die(mysql_error());
$total=mysql_result($resultado,0);
if(
$total == 1){
    
session_start();
    
session_register("autentificado");
    
$autentificado "SI";
    
header ("Location: aplicacion.php");
}else {
    
header("Location: index.php?errorusuario=si");
}
mysql_close($conexion);
?>
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #8 (permalink)  
Antiguo 01/06/2004, 11:23
Avatar de Ricardo  
Fecha de Ingreso: febrero-2003
Ubicación: Capital Federal, Argentina
Mensajes: 60
Antigüedad: 21 años, 2 meses
Puntos: 0
Trata de hacer lo que te puse en el post anterior.
__________________
.:: globaldot ::. | diseñoweb
www.globaldot.com.ar
  #9 (permalink)  
Antiguo 01/06/2004, 11:27
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
lo intente pero resulta lo mismo, exactamento lo mismo.. el tipo de error es muy parecido, solo que el ejemplo con el post que me enviaste es todo lo contario deja entrar a cualquiera es como no lo autenticara.

deja entrar a todos, pero si le cambio el if y le pongo ==1 no deja entrar a nadie, y si le pongo == 0 los deja entrar a todos, como le hago.

y este no deja entrar a nadie..

el error es el mismo
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #10 (permalink)  
Antiguo 01/06/2004, 12:00
Avatar de Ricardo  
Fecha de Ingreso: febrero-2003
Ubicación: Capital Federal, Argentina
Mensajes: 60
Antigüedad: 21 años, 2 meses
Puntos: 0
Te recomiendo un sitio para que veas el ejemplo que tienen y funciona.

http://www.desarrolloweb.com/articul....php?manual=37
__________________
.:: globaldot ::. | diseñoweb
www.globaldot.com.ar
  #11 (permalink)  
Antiguo 01/06/2004, 12:57
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
pues de ese manual saque yo el mio, el de password fijo si funciona perfectamente, pero cuando lo aplico en MySql no funciona me la serie de problemas, que estoy pasando..

gracias si alguien tiene un ejemplo ya funcionando con MySql que Funcione..

gracias.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #12 (permalink)  
Antiguo 01/06/2004, 13:09
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
hola mira este es el ejemplo que ponen ellos en el sitio para colocar la opcione de Mysql pero resulta que me da el mismo clavo.. que serra...

este es el ejemplo{ya con las modificaiones para mi base de datos}


Código PHP:
<?php

// hacemos una conexion a la bd
$conexion mysql_connect('localhost','root','');

// seleccionamos la Bd
mysql_select_db ("archivo"$conexion);

//realizamos una consulta a la bd
$query mysql_query("SELECT * FROM usuarios"$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["usuario"]);
$arraypassword = ($array["pass"]);

//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: aplicacion.php");
}else {
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
?>
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #13 (permalink)  
Antiguo 01/06/2004, 13:25
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Prueba así

Prueba así haber:
Código PHP:
<?php
 $conexion 
mysql_connect('localhost','root','');
 
mysql_select_db ("archivo"$conexion);
 
$sql="SELECT COUNT(*) AS cant FROM usuarios WHERE usuario='".$_POST['usuario']."' AND pass='".$_POST['contrasena']."'";
 
$resultado=mysql_query($sql) or die(mysql_error());
 
$fetch mysql_fetch_assoc($resultado);
 if((
$fetch['usuario']==$_POST['usuario']) && ($fetch['pass']==$_POST['contrasena'])){
    
session_start();
    
session_register("autentificado");
    
$autentificado "SI";
    
header ("Location: aplicacion.php");
 }else{
    
header("Location: index.php?errorusuario=si");
 }
 
mysql_close($conexion);
?>
Salu2
__________________
Ing. Reynier Pérez Mira
  #14 (permalink)  
Antiguo 01/06/2004, 13:57
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
hola mira disculpa mi ignorancia soy programador experto en VB6 pero en PHP me falta loq ue sobra en VB, ya coloqu el script y gracias, pero da un error me podes ayudar con el. el error es el siguiente:

Notice: Undefined index: usuario in c:\Archivos de programa\Apache Group\Apache2\htdocs\log\php69.tmp on line 7

Warning: Cannot modify header information - headers already sent by (output started at c:\Archivos de programa\Apache Group\Apache2\htdocs\log\php69.tmp:7) in c:\Archivos de programa\Apache Group\Apache2\htdocs\log\php69.tmp on line 13


y los errores por linea son la linea 7:

if(($fetch['usuario']==$_POST['usuario']) && ($fetch['pass']==$_POST['contrasena'])){

y la linea 13

header("Location: index.php?errorusuario=si");


el todo el codigo que me diste es este

Código PHP:
<?php
$conexion 
mysql_connect('localhost','root','');
mysql_select_db ("archivo"$conexion);
$sql="SELECT COUNT(*) AS cant FROM usuarios WHERE usuario='".$_POST['usuario']."' AND pass='".$_POST['contrasena']."'";
$resultado=mysql_query($sql) or die(mysql_error());
$fetch mysql_fetch_assoc($resultado);
if((
$fetch['usuario']==$_POST['usuario']) && ($fetch['pass']==$_POST['contrasena'])){
    
session_start();
    
session_register("autentificado");
    
$autentificado "SI";
    
header ("Location: aplicacion.php");
}else{
    
header("Location: index.php?errorusuario=si");
}
mysql_close($conexion);
?>
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #15 (permalink)  
Antiguo 01/06/2004, 17:24
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Lo que pasa es ...

Lo que pasa es que delante de un header no puedes poner nada. Se me olvido comentarte eso. LO que puedes hacer es alguna función con los META de HTML que te redireccione para la pagina donde quieres ir.
Salu2
__________________
Ing. Reynier Pérez Mira
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:34.