Foros del Web » Programando para Internet » PHP »

autenticacion mysql

Estas en el tema de autenticacion mysql en el foro de PHP en Foros del Web. Este el codigo que tengo puesto para intentar autentificar usuarios, supongo que esta fatal, me podeis ayudar? Yo tengo un index.htm con un formulario de ...
  #1 (permalink)  
Antiguo 30/05/2003, 08:00
Avatar de zocotoo  
Fecha de Ingreso: febrero-2003
Mensajes: 74
Antigüedad: 21 años, 2 meses
Puntos: 0
autenticacion mysql

Este el codigo que tengo puesto para intentar autentificar usuarios, supongo que esta fatal, me podeis ayudar?


Yo tengo un index.htm con un formulario de donde saco las variables $administrador y $contrasena, las intento comparar con los valores que hay en la tabla usuarios=$tabla11, y....no hace nada de nada. Digamos que el código esta bien pero no consigo que si esta bien o mal la contraseña me vincule con "ok.htm"



<?php

include "../_x_gestor/g_conex.php";
mysql_connect($servidor, $usuario, $password);
$result=mysql_db_query($basedatos,"select * From $tabla11");
while ($row=mysql_fetch_array($result))

if (($administrador=='.$row["usr_login"].')&($contrasena=='.$row["usr_pass"].')){include "ok.htm";

}elseif($administrador!='.$row["usr_login"].'){print"El Administrador no existe";

}elseif ($contrasena!='.$row["usr_pass"].'){ print"La contraseña es incorrecta";

}
mysql_free_result($result)
?>


La conexion a la bade de datos, la tabla y todo lo demas lo hace correctamente, pero ni vincula con "ok.htm"

Que es?
Gracias
__________________
Yip yop Dafunk!!
  #2 (permalink)  
Antiguo 30/05/2003, 10:53
 
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona - España
Mensajes: 270
Antigüedad: 21 años, 4 meses
Puntos: 0
comparalo en el select
mysql_query( "SELECT * FROM tabla WHERE usuario='$usuario'";

perona, no he cerrado parentesis antes del ;
  #3 (permalink)  
Antiguo 30/05/2003, 10:56
Avatar de drcyber  
Fecha de Ingreso: julio-2002
Mensajes: 826
Antigüedad: 21 años, 8 meses
Puntos: 2
Código PHP:
<?php
//CONEX CON TU BD
$ssql "SELECT * FROM usuarios WHERE usr_login='".$_POST['administrador']."' AND usr_pass='".$_POST['constrasena']."'";
$rs mysql_query($ssql);
if(
$row mysql_fetch_array($rs)) {
    include(
"ok.htm");
} else {
    print 
"Datos incorrectos. Por favor intente nuevamente";
}
mysql_free_result($rs);
?>
Nunca le des detalles al usuario sobre si la contraseña o el nombre de usuario es "correcto o incorrecto", simplemente dile que algo anda mal y listo. Asi te evitas rollos con hackers.

Saludos !
__________________
Dr. Cyber
Ingeniarte.com
(soy el mismo Takitei)
  #4 (permalink)  
Antiguo 30/05/2003, 18:43
Avatar de zocotoo  
Fecha de Ingreso: febrero-2003
Mensajes: 74
Antigüedad: 21 años, 2 meses
Puntos: 0
miles de gracias

miles de gracias
lo probaré
y os comentaré
gracias otra vez
__________________
Yip yop Dafunk!!
  #5 (permalink)  
Antiguo 01/06/2003, 06:22
Avatar de zocotoo  
Fecha de Ingreso: febrero-2003
Mensajes: 74
Antigüedad: 21 años, 2 meses
Puntos: 0
Nada, no funciona!!
¿Que hago mal?

Código PHP:
<?php
include "../_x_gestor/g_conex.php";
mysql_connect($servidor$usuario$password);
$ssql mysql_db_query($basedatos,"SELECT * FROM $tabla11 WHERE usr_login='".$_POST['administrador']."' AND usr_pass='".$_POST['constrasena']."'");
$rs mysql_query($ssql);
if(
$row mysql_fetch_array($rs)) {
    include(
"ok.htm");
} else {
    print 
"Datos incorrectos. Por favor intente nuevamente";
}
mysql_free_result($rs);
?>
__________________
Yip yop Dafunk!!
  #6 (permalink)  
Antiguo 01/06/2003, 15:48
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 22 años, 1 mes
Puntos: 55
Me parece recordar que después de un WHERE, si vas a usar dos condiciones separadas por AND, deben ir entre paréntesis:

WHERE (usr_login='".$_POST['administrador']."' AND usr_pass='".$_POST['constrasena']."')"
__________________
www.mundodivx.com || www.mundodivx.org

Pon tu mano en un horno caliente durante un minuto y te parecerá una hora.
Siéntate junto a una chica preciosa durante una hora y te parecerá un minuto.
Eso es la relatividad.
  #7 (permalink)  
Antiguo 01/06/2003, 21:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm ferny .. pues yo no los uso (los parentesis si todo son AND .. u OR .. sólo separo si hay AND y OR ...)

Por lo demas .. si no dices que "error" te dá .. yo no sé como poderte oritentar ..

¿Te dá siempre "Datos incorrectos .. bla bla bla" ...? .. Te dá siempre el "OK" .. o que sucede ? .. Algún error de PHP o de Msyql?

Usa:
Código PHP:
$rs mysql_query($ssql) or die (msyql_error()); 
Para detectar posibles errores de SQL o conexión a tu BD ...

Y haz un:
echo $_POST['administrador'];
(y a la otra variable .. a ver que resultado obtienes .. No sea que trabajes con una versión de PHP -inferior- a la 4.1.0 .. con lo cual no se puede acceder a ese Array Superglobal ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 02/06/2003, 05:05
Avatar de zocotoo  
Fecha de Ingreso: febrero-2003
Mensajes: 74
Antigüedad: 21 años, 2 meses
Puntos: 0
Lps parentesis no son.
Colocandolos o no no funciona.
He colocado :

Código PHP:
<?php
include "../_x_gestor/g_conex.php";
mysql_connect($servidor$usuario$password);
$ssql mysql_db_query($basedatos,"SELECT * FROM usuarios WHERE usr_login='".$_POST['administrador']."' AND usr_pass='".$_POST['constrasena']."'");
echo 
$_POST['administrador'];
echo 
$_POST['contrasena'];
$rs mysql_query($ssql) or die (msyql_error());
if(
$row mysql_fetch_array($rs)) {
    include(
"ok.htm");
} else {
    print 
"Datos incorrectos. Por favor intente nuevamente";
}
mysql_free_result($rs);
?>
Y me da error en la linea donde he colocado
el:

Código PHP:
$rs mysql_query($ssql) or die (msyql_error()); 
Es decir, tendré un error de sintaxis, pero cual?
Además me dice que los datos son incorrectos....
Los echos de la contraseña y el administrador me los hace.
Que puede ser?

Este es el error


Fatal error: Call to undefined function: msyql_error() in entrada.php on line 16

que me da para la linea:

$rs = mysql_query($ssql) or die (msyql_error());
__________________
Yip yop Dafunk!!
  #9 (permalink)  
Antiguo 02/06/2003, 05:13
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Esto no se hace asi:
Código PHP:
$ssql mysql_db_query($basedatos,"SELECT * FROM usuarios WHERE usr_login='".$_POST['administrador']."' AND usr_pass='".$_POST['constrasena']."'");
$rs mysql_query($ssql) or die (msyql_error()); 
O haces el mysql_db_query() o haces mysql_query(). mysql_query() toma como parametro una cadena con la consulta SQL a ejecutar. En tu codigo le estas pasando el resultado de una consulta. Cambia ese codigo por:
Código PHP:
mysql_select_db($basedatos); // si no se usa mysql_db_query() hay que seleccionar la BD con mysql_select_db()
$ssql "SELECT * FROM usuarios WHERE usr_login='".$_POST['administrador']."' AND usr_pass='".$_POST['constrasena']."'"
$rs mysql_query($ssql) or die (msyql_error()); 
Y sobre lo de msyql_error() ... no solo tienes que copiar y pegar el codigo que te dan en estos foros, tambien tienes que poner un poco de tu parte, intentar entenderlo y si te dan una funcion que no conoces, buscala en el manual. Si no la encuentras, puede ser que el que escribio el codigo "metio el dedo" y sea una errata. Pero pensando un poco y teniendo en cuenta que todas las funciones de MySQL empiezan por mysql_ , creo que es facil dar con el error.

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 02/06/2003 a las 05:16
  #10 (permalink)  
Antiguo 02/06/2003, 07:26
Avatar de zocotoo  
Fecha de Ingreso: febrero-2003
Mensajes: 74
Antigüedad: 21 años, 2 meses
Puntos: 0
He leido las leyendas de los enlaces que me has mandado.
Gracias.
Me sirve de gran ayuda vuestra colaboración.
A medida que voy haceindo esto pues voy aprendiendo, y no quiero ser pesado, pero...
Esto sigue sin funcionar.


Código PHP:
<?php
include "../_x_gestor/g_conex.php";
mysql_connect($servidor$usuario$password);
mysql_select_db($basedatos); // si no se usa mysql_db_query() hay que seleccionar la BD con mysql_select_db()
$ssql "SELECT * FROM usuarios WHERE usr_login='".$_POST['administrador']."' AND usr_pass='".$_POST['constrasena']."'";
$rs mysql_query($ssql) or die (msyql_error());
echo 
$_POST['administrador'];
echo 
$_POST['contrasena'];
if(
$row mysql_fetch_array($rs)) {
    include(
"ok.htm");
} else {
    print 
"Datos incorrectos. Por favor intente nuevamente";
}
mysql_free_result($rs);
?>
Que será?
__________________
Yip yop Dafunk!!
  #11 (permalink)  
Antiguo 02/06/2003, 07:29
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Si te sigue dando el error anterior es que todavia no has cambiado msyql_error() por mysql_error().

Y si te da un nuevo error, comenta cual es. Y si lo que pasa es que no devuelve lo que deberia, pon lo que sale.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 02/06/2003, 07:31
Avatar de zocotoo  
Fecha de Ingreso: febrero-2003
Mensajes: 74
Antigüedad: 21 años, 2 meses
Puntos: 0
Como es normal el error me lo da en la linea 15:

Código PHP:
$rs mysql_query($ssql) or die (msyql_error()); 
Si no le pongo el or die...

Me hace los echos de las contraseñas y me dice:

Datos incorrectos. Por favor intente nuevamente

Que debo hacer?
Esta todo mal planteado?
La verdad es que llevo bastante tiempo con esto, soy novato.
He mirado información, foros, etc. Incluso he probado scripts y programas ya hechos pero nada me funciona, que será.
Uso como servidor Lycos, quizá tenga algo que ver?
Gracias
__________________
Yip yop Dafunk!!
  #13 (permalink)  
Antiguo 02/06/2003, 08:06
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Cambia:
Código PHP:
$rs mysql_query($ssql) or die (msyql_error()); 
por
Código PHP:
$rs mysql_query($ssql) or die (mysql_error()); 
A ver si funciona.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #14 (permalink)  
Antiguo 03/06/2003, 04:57
Avatar de zocotoo  
Fecha de Ingreso: febrero-2003
Mensajes: 74
Antigüedad: 21 años, 2 meses
Puntos: 0
Lo siguiente que me dice es esto:
Y esto no sé a que se debe, ya que la conexión con la base de datos la hace correctamente, es capaz de ller los campos de las tablas, etc.
Me da el siguiente error:
Que es esto?

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)


Me pierdo, busco información y no la entiendo.
Me podeis ayudar?
Gracias.

Ademas esto me lo dice independientemente si los datos introducidos como usuario y contraseña sean correctos o no.


Nadie sabe lo que queire decir lo de arriba?
__________________
Yip yop Dafunk!!

Última edición por zocotoo; 03/06/2003 a las 04:57
  #15 (permalink)  
Antiguo 03/06/2003, 08:05
Avatar de BVis  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 104
Antigüedad: 21 años, 5 meses
Puntos: 0
Bien el problema es que no "conectas" con el socket de mysql.

1º Tienes que saber DONDE está ese socket. Mira el archivo 'my.cnf' que te lo indicará.

2º Dos Alternativas:

A. Cada vez que hagas un mysql_connect() indícale donde se encuentra realmente ese socket. Mirate la referencia de la función en php.net.

B. Modifica el php.ini, y en la directiva donde te indica el socket de mysql, le pones el valor que ya conoces...


Ea, un saludo.
__________________
"Yo opino lo mismo que BVis, el de 'forosdelweb' " - Bill Gates
  #16 (permalink)  
Antiguo 03/06/2003, 09:00
Avatar de zocotoo  
Fecha de Ingreso: febrero-2003
Mensajes: 74
Antigüedad: 21 años, 2 meses
Puntos: 0
Simplemente no tengo el archivo my.cnf
Tampoco tengo el archivo php.ini
Además, es posible esto?
Si web esta colgada en un servidor de lycos.
El problema sigue siendo mio?
Que pasa si no tengo estos dos archivos
__________________
Yip yop Dafunk!!
  #17 (permalink)  
Antiguo 03/06/2003, 09:15
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Vaya, lycos. Perfectamente podria ser un problema puntual suyo. No seria raro que se les parase el servidor. ¿Estas seguro que te conectas? Añade el or die() al mysql_conect() y al mysql_select_db().

Y sobre esos ficheros, son de la configuracion del PHP (php.ini) y del MySQL (my.cnf). Solo estan accesibles a los administradores del servidor. Supongo que te lo comentaria por si eras tu el administrador, por ejemplo si tuvieras el servidor instalado en tu equipo local para el desarrollo (lo mas conveniente para aprender).

Por cierto, ¿seguro que has pasado los parametros correctos a mysql_connect()? No vaya ser eso. ¿Tienes otra pagina que si acceda a la base de datos?.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #18 (permalink)  
Antiguo 03/06/2003, 09:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues Lycos dice q tiene una forma peculiar de conectar a sus Base de datos .. ademas que últimamente se caeeeee el servicio mucho ..

la conexión es simplemente:

mysql_connect() .. sin mas parámetros ..

El nombre de tu BD es algo tipo tusitio_db_es o algo así .. Revisa esos datos. Y bueno .. hemos de suponer que en tu panel de control de tu "Lycos" activastes el soporte para Msyql (y PHP que ya se vé que lo hicistes ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 16:55.