PDA

Ver la Versión Completa : Inicio sesión php y firebird


Poke
12-11-2010, 23:19:05
Hola a todos.. tengo un código de php que encontré que me dice como acceder con un nombre de usuario y contraseña .. pero utiliza la base de datos mysql .. quería pasarla a firebird .. pero me sale unos errores, me reconoce el nombre de usuario pero no la contraseña.. he buscado en el foro y nada solo hay condigo para acceder a mysql. El código es el siguiente:

los datos los recibo desde un formulario




$cnx = conectar();
$stmt = "select * from usuarios where usuario = '$usuario'";
$userQuery = ibase_query($cnx, $stmt);

// revisamos usuario y password
if (ibase_num_fields($userQuery) > 0)
{
// usuario existe, seguimos
if (!$usuario = ibase_fetch_assoc($userQuery))
{
// caso sensitivo, usuario no está presente en bd
$message = "Usuario no Existe";
include("interface.php");
exit;
}

if (!$userQuery['clave'])
{
// no tiene clave en bd, no entra
$message = "No se encontró contraseña para el usuario";
include("interface.php");
exit;
}

if (stripslashes($userQuery['clave']) != $clave)
{
// contraseña es incorrecta
echo 'clave incorrecta';
include("interface.php");
exit;
}
}else{
// usuario no existe del todo.
$message = "Usuario no Existeee ";
include("interface.php");
exit;
}

?>




Si me pueden ayudar en donde estoy mal soy nuevo con php, desde ya gracias…

Poke
20-11-2010, 22:04:15
Holaa alguien que me ayude :confused:… alguien que sepa programación php + firebirtd.. mmm o voy a tener que cambiarme a mysql…:rolleyes:

Casimiro Notevi
20-11-2010, 22:17:52
Especifica claramente qué problema tienes, qué error, etc. es que no somos adivinos, y si dices: "pero me sale unos errores,", con eso no podemos ayudarte mucho.
Recuerda leer nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), gracias.

Poke
20-11-2010, 23:36:24
Perdón x no ser especifico en la pregunto soy novato en esto…


El problema es el siguiente, envio los datos del formulario y este es el código de comprobación de la contraseña, cuando ingreso el nombre de usuario y la contraseña y presiono enviar, al comprobar el nombre de usuario todo bien pero al comprobar la contraseña me dice que no existe, es como que no lee los datos de la tabla..
Pero los datos si están en la base.

Utilizo firebird, tabla usuarios

Descripción tipo
--------------------------------
Id integer
Usuario char
Clave char




Este es el codigo que utilizo...



$cnx = conectar();
$stmt = "select usuario, clave from usuarios where usuario = '$usuario'";
$userQuery = ibase_query($cnx, $stmt);

// revisamos usuario y password
if (ibase_num_fields($userQuery) > 0)
{
// usuario existe, seguimos
if (!$usuario = ibase_fetch_object($userQuery))
{
// caso sensitivo, usuario no está presente en bd
$message = "Usuario no Existe";
include("interface.php");
exit;
}

if (!$userQuery['clave'])
{
// no tiene clave en bd, no entra
$message = "No se encontró contraseña para el usuario..";
include("interface.php");
exit;
}

if (stripslashes($userQuery['clave']) != $clave)
{
// contraseña es incorrecta
echo 'clave incorrecta';
include("interface.php");
exit;
}
}else{
// usuario no existe del todo.
$message = "Usuario no Existeee ";
include("interface.php");
exit;
}

?>








el usurio todo bien pero al comprobar la clave no funciona..






if (!$userQuery['clave'])
{
// no tiene clave en bd, no entra
$message = "No se encontró contraseña para el usuario..";
include("interface.php");
exit;
}



La verdad no sé si este código está bien … la verdad x que los datos están en la tabla lo que es el usuario y la clave.. o si me puede dar algun ejemplo sobre esto... desde ya gracias...

Casimiro Notevi
30-11-2010, 14:32:37
Desconozco php, a ver si algún compañero te puede echar una mano.

roman
30-11-2010, 18:18:24
La variable $userQuery no es más que el identificador del conjunto de resultados que te devuelve ibase_query. La fila correspondiente la tienes en $usuario cuando llamas a ibase_fetch_assoc, así que es esa variable la que tendrías que consultar.

// Saludos

Poke
02-12-2010, 22:20:04
Hola de nuevo gracias por su atención a mi tema.. y con respecto a lo que comentas roman tienes razón no me di cuenta de ese detalle.. Lo he modificado y va perfecto esa parte.. pero ahora tengo otro inconveniente, al momento de comparar la contraseña no funciona.. la contraseña existe e imprimo de esta manera:


if (stripslashes($usuario['CLAVE']) != $clave)
{
// contraseña es incorrecta
$message = $usuario['CLAVE'] ;
include("interface.php");
exit;
}


Imprimo en el mensaje el dato de la clave extraída de la base de datos y si lo visualizo pero no me compara: investigando encontré algo sobre la función stripslashes (nos devuelve la cadena de texto introducida sin los caracteres de la barra inclinada \)..



Si alguien me puede ayudar para terminar este problemilla que tengo desde ya gracias;)

Poke
02-12-2010, 22:21:31
para mayor entendimiento esto es lo que consulte:


$userQuery = mysql_query("SELECT * FROM usuarios WHERE usuario = '$usuario'") or die(mysql_error());


if (mysql_num_rows($userQuery) > 0) {

$userArray = mysql_fetch_array($userQuery);

if ($usuario != $userArray['usuario']) {
// caso sensitivo, usuario no está presente en bd
$message = "Usuario no Existe";
echo $message;
include("interface.php");
exit;
}
if (!$userArray['clave']) {
// no tiene clave en bd, no entra
$message = "No se encontró contraseña para el usuario";
include("interface.php");
exit;
}
if (stripslashes($userArray['clave']) != $clave) {

$message = "Contraseña es incorrecta";
include("interface.php");
exit;
}
}else{
// usuario no existe del todo.
$message = "Usuario no Existe";
include("interface.php");
exit;
}

?>



Y esto es lo que he intentado hacer


$stmt = "select usuario, clave from usuarios where usuario = '$usuario'";
$userQuery = ibase_query($cnx, $stmt);



// revisamos usuario y password
if (ibase_num_fields($userQuery) > 0)
{
// aqui lo pongo la funcion (ibase_fetch_assoc)
//la funcion (mysql_fetch_array) no existe para firebird

if (!$usuario = ibase_fetch_assoc($userQuery))
{
// caso sensitivo, usuario no está presente en bd
$message = "Usuario no Existe";
include("interface.php");
exit;
}

if (!$usuario['CLAVE'])
{
// no tiene clave en bd, no entra
$message = "No se encontró contraseña para el usuario..";
include("interface.php");
exit;
}

if (stripslashes($usuario['CLAVE']) != $clave)
{
// contraseña es incorrecta
$message = $clave ;
// $message = $clave;
include("interface.php");
exit;
}
}else{
// usuario no existe del todo.
$message = "Usuario no Existeee ";
include("interface.php");
exit;
}



A ver si me pueden ayudar… :)

Poke
05-12-2010, 20:18:57
Problema resuelto... un dolo r de cabeza pera ya estaa....¡¡¡ :cool:

Casimiro Notevi
05-12-2010, 20:47:36
Vaya, te ha costado, pero seguro que ahora lo tienes bien aprendido para la siguiente vez :)

Poke
06-12-2010, 22:49:20
Si gracias casimiero.. pero les seguire molestando por otros problemillas... que la pases bien..;)

Casimiro Notevi
07-12-2010, 01:35:11
Si gracias casimiero.. pero les seguire molestando por otros problemillas... que la pases bien..;)

Muy bien, procuraremos estar por aquí para lo que podamos ayudar :)

georkis
20-12-2010, 19:02:45
Les diré que el campo contraseña del formulario debe tener una encriptación md5 u otros tipo... y a la hora de comparar las contraseña con la base de datos guaooo hay conflicto... asi que hay que poner lo siguiente más o menos así...

[php]
md5($_POST['password'])
[php]

Poke
23-12-2010, 09:25:56
Hola.. Gracias x tu respuesta mira si me pudieras dar un poco más de información sobre la encriptación… me seria de mucha ayuda. He estado investigando y creo que es muy necesario encriptar la contraseña pero no encuentro un ejemplo claro sobre esto…


Si me pudieras dar un pequeño ejemplo me seria de mucha ayuda.. gracias desde ya..¡:)