Foros del Web » Programando para Internet » PHP »

problema con acceso a la bd

Estas en el tema de problema con acceso a la bd en el foro de PHP en Foros del Web. Hola amig@s!! Resulta que me está pasando una cosa muy extraña y creo que es de la configuración del servidor, de apache o de php, ...
  #1 (permalink)  
Antiguo 22/02/2010, 05:03
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
problema con acceso a la bd

Hola amig@s!!

Resulta que me está pasando una cosa muy extraña y creo que es de la configuración del servidor, de apache o de php, no ando segura del todo.

La cosa es que intento hacer una consulta a mi base de datos mysql desde una funcion php

Código PHP:
$conexion conectar();
    
$consulta "Select id From emp_users Where username = '$usuario' And password = '$pss'";
$resultado mysql_query($consulta$conexion) or die("Error de conexión a la base de datos");
    
$my_error mysql_error($conexion);
    echo
"<br/>$my_error<br/>";
    
$filas mysql_num_rows($resultado);
    echo
"<br/>Filas: ".$filas."<br/>"
En la función conectar no hay faio ninguno, accede correctamente a la bd.
Para asegurarme aún más creé la variable $my_error que tampoco me devuelve nada, así que error de conexión descartado.
El problema está en que si hago la consulta desde el phpMyAdmin me devuelve el valor que quiero que me devuelva, que es el id de 1 fila. Entonces mysql_num_rows debería ser 1 y no 0 como me da.

Sabeis a qué puede deberse eso? qué parametros están mal configurados de qué fichero base??

Muchas gracias!!
  #2 (permalink)  
Antiguo 22/02/2010, 05:10
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: problema con acceso a la bd

Haz un

echo $consulta;

y mira a ver si recoge bien los datos $usuario y $pss

¿no sera $pass?
  #3 (permalink)  
Antiguo 22/02/2010, 05:13
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema con acceso a la bd

¿Cómo recoges la función conectar()? Quiero decir, qué contiene? Tal vez ahí esté el problema.
Has probado a cambiarlo para descartar problemas?
Código PHP:
Ver original
  1. $conexion = mysql_connect("localhost","user","pass");
  2. mysql_select_db("basededatos", $conexion);
  3.     $consulta = "SELECT id FROM emp_users WHERE username = '".$usuario."' AND password = '".$pss."'";
  4. $resultado = mysql_query($consulta, $conexion) or die("Error de conexi&oacute;n a la base de datos" . mysql_error());
  5.     $filas = mysql_num_rows($resultado);
  6.     echo"<br/>Filas: ".$filas."<br/>";
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #4 (permalink)  
Antiguo 22/02/2010, 05:27
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: problema con acceso a la bd

Cita:
Iniciado por Vun Ver Mensaje
Haz un

echo $consulta;

y mira a ver si recoge bien los datos $usuario y $pss

¿no sera $pass?
Lo he hecho, luego lo copio y lo ievo al phpMyAdmin y es cuando todo va correcto, por eso digo que ahi no esta el faio tampoco.

CHuLoSoY, la funcion conectar es la que utilizo en todos mis scripts y es correcta. Además, si fuese esa función me aparecería el error del die, que no me aparece. De todas formas la pongo aquí.

Código PHP:
define('server''xxx.x.x.x');
define ('user''xxxxx');
define ('pass''xxxxx');
define('database''xxxx');
  
function 
conectar()
{
    
$conectar=@mysql_connect(serveruserpass) or die('Error de conexion a la base de datos');
                
mysql_select_db(database$conectar);
    return(
$conectar);

Al utilizar un hosting externo a mi empresa creo que han sido los administradores del hosting que no han configurado bien algo. Ya nos pasó hace poco que al hacer el cambio de servidor había parámetros mal configurados y nos faiaba todo el sitio web.

Gracias por las respuestas!!
  #5 (permalink)  
Antiguo 22/02/2010, 05:35
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: problema con acceso a la bd

¿Y esto por ejemplo te muestra bien el valor?

Código PHP:
$conexion conectar();
    
$consulta "Select id From emp_users Where username = '$usuario' And password = '$pss'";
$resultado mysql_query($consulta$conexion) or die("Error de conexi&oacute;n a la base de datos");
echo 
$resultado["username"]; 
  #6 (permalink)  
Antiguo 22/02/2010, 05:56
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: problema con acceso a la bd

Cita:
Iniciado por Vun Ver Mensaje
$conexion = conectar();
$consulta = "Select id From emp_users Where username = '$usuario' And password = '$pss'";
$resultado = mysql_query($consulta, $conexion) or die("Error de conexi&oacute;n a la base de datos");
echo $resultado["username"];
No me devuelve nada...
  #7 (permalink)  
Antiguo 22/02/2010, 06:02
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema con acceso a la bd

Las variables $usuario y $pss de dónde las sacas? Porque no las declaras en ningún lado. Pon más código, así no podemos ayudarte
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #8 (permalink)  
Antiguo 22/02/2010, 06:10
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: problema con acceso a la bd

Ok, a ver, las saco de un formulario. Las recojo en un Index y las mando a la funcion login($usuario, $password).
Desde esa misma funcion imprimo por pantaia la consulta y eso me deja ver que a la función login le iegan las variables correctamente.
No creo que haga falta el código de eso pero si lo quieres ahí va

Código PHP:
En funciones.php

function identificacion()
{
    echo
"
    <table>
        <form name='fidentifica' action='./Index.php' method='post'>
        <tr>
            <td>Usuario: </td>
            <td><input type='text' name='user' value='' /></td>
        </tr>
        <tr>
            <td>Password: </td>
            
            <td><input type='password' name='pss' value='' /></td>
        </tr>
        <tr>
            <td colspan='2' style='text-align:center'><input type='submit' name='bsidentifica' value='Aceptar' /></td>
        </tr>
        </form>
    </table>
    "
;
}

En Index.php

if(isset($bsidentifica))
{
    
$usu $_POST['user'];
    
$pss $_POST['pss'];
        
login($usu$pss);

Luego en login recojo las variables, hago un md5 de $pss y compruebo en la base de datos.
Imprimo la consulta, la copio, la pego en phpMyAdmin y me da resultado. en cambio desde mi script php me da 0 resultados, pero tampoco me da error de conexion.
  #9 (permalink)  
Antiguo 22/02/2010, 06:12
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema con acceso a la bd

supongo que el login() tiene $usuario y no $usu.
login($usuario,$pss)

y NO:

login($usu,$pss)
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #10 (permalink)  
Antiguo 22/02/2010, 06:17
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: problema con acceso a la bd

function login($usuario, $password)
{
$pss = md5($password);
.
.
.
.
}
  #11 (permalink)  
Antiguo 22/02/2010, 06:21
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema con acceso a la bd

Código PHP:
Ver original
  1. if(isset($_POST['bsidentifica']))

No me había fijado en ese detalle
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #12 (permalink)  
Antiguo 22/02/2010, 06:33
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: problema con acceso a la bd

bsidentifica es el botón submit y lo suele coger sin el $_POST, pero voy a probarlo de todas formas...

No he dicho que esta es la única incursión a la base de datos que se hace por ahora en el sitio web. Voy a probar con otras para descartar todo.

Ya lo probé y lo mismo, devuelve 0 filas.

Última edición por aniMAYtions; 22/02/2010 a las 06:35 Razón: ya lo probé
  #13 (permalink)  
Antiguo 22/02/2010, 06:40
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema con acceso a la bd

Porqué la @ en conectar?
Código PHP:
Ver original
  1. $conectar=@mysql_connect(server, user, pass) or die('Error de conexion a la base de datos');
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #14 (permalink)  
Antiguo 22/02/2010, 06:42
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema con acceso a la bd

Por cierto, esto no tiene mucho sentido:
Código PHP:
Ver original
  1. $consulta = "Select id From emp_users Where username = '$usuario' And password = '$pss'";
  2. $resultado = mysql_query($consulta, $conexion) or die("Error de conexi&oacute;n a la base de datos");
  3. echo $resultado["username"];
Es decir, tú sólo sacas el dato id de la bd, y en la última línea imprimes username que no la seleccionas. Porqué no sacas todo? Ya sé que no tiene que ver para que te devuelva cero, pero prueba por si acaso

Código PHP:
Ver original
  1. $consulta = "SELECT * FROM emp_users WHERE username = '$usuario' AND password = '$pss'";
  2. $resultado = mysql_query($consulta, $conexion) or die("Error de conexi&oacute;n a la base de datos" . mysql_error());
  3. echo $resultado["username"];
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #15 (permalink)  
Antiguo 22/02/2010, 06:58
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: problema con acceso a la bd

Si, estaba dormido aun, ni siquiera puse el mysql_fetch_array(), sorry xD
  #16 (permalink)  
Antiguo 22/02/2010, 07:00
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema con acceso a la bd

Perdón, creí que había sido el usuario del post.
Creo que va a tener que mostrar más código, porque así no hay quien vea nada. Las partes que mostró están en teoría bien, a no ser que lo que no mostró esté tocando las pelotas.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #17 (permalink)  
Antiguo 22/02/2010, 07:15
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: problema con acceso a la bd

También me dí cuenta de lo del $_POST["username"] asi que puse el fetch_array y $_POST["id"].
Pero vamos, esto empieza a mosquearme a mi también. He hecho otra consulta y me muestra debidamente el resultado.

Os he mostrado todo el código referente a esa función, es que sencillamente no hay más. Un formulario de inserción de datos(usuario y contraseña), una comprobación de que se pulsó el botón y recogida de datos con $_POST. Una iamada a la función, pasándole los parámetros, que hace la consulta que, incluso estando ésta bien, no devuelve ningún resultado.
Pero ia viendo que otras consultas sí que lo devuelven voy a ver que carajos está faiando en esa función.

Gracias!!
  #18 (permalink)  
Antiguo 22/02/2010, 07:20
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema con acceso a la bd

Entonces sólo se me ocurre que la password tiene mayúsculas o minúsculas mal puestas o así, que cambia el hash md5.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #19 (permalink)  
Antiguo 22/02/2010, 07:28
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: problema con acceso a la bd

bueno, acabo de darme cuenta de que sí, que el password tiene la culpa.

Pero sólo si lo consulto desde php...

La consulta que imprimo sólo preguntando por el password no me devuelve nada en el sitio web, en cambio sí me devuelve la fila correspondiente en el phpMyAdmin...

Raro raro

Bueeeeenoooooooooooooooooooooo!!!!

probé mostrar el password de un usuario en concreto y me ha salido una burrada que no sé ni de dónde sale... Indagaré a ver y ia os cuento.

Gracias por la aiuda!!

Última edición por aniMAYtions; 22/02/2010 a las 07:32 Razón: otra cosita
  #20 (permalink)  
Antiguo 22/02/2010, 07:31
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: problema con acceso a la bd

Cómo guardas la password en la bd?
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #21 (permalink)  
Antiguo 22/02/2010, 07:32
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: problema con acceso a la bd

Mira la edición del otro post plis
  #22 (permalink)  
Antiguo 22/02/2010, 10:16
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: problema con acceso a la bd

Veamos, me he dado cuenta de una cosa que no sé por qué pasa.

Si pregunto desde phpMyAdmin a la tabla por la contraseña de un usuario en concreto, dando el username, obtengo el password resultante de hacer un md5() del password que ingresó el usuario en el momento de su registro.
En cambio, si quiero consultar a la base de datos por ese nmismo password desde mi función en php obtengo una serie de cifras monstruosas que no sé interpretar o retransformar en el md5 del password que insertó el usuario en su momento.

Ahí está el faio. Alguien puede guiarme??

Muchas gracias de nuevo.
  #23 (permalink)  
Antiguo 22/02/2010, 10:25
Avatar de hector2c  
Fecha de Ingreso: noviembre-2007
Ubicación: Perú - Tacna
Mensajes: 979
Antigüedad: 16 años, 4 meses
Puntos: 25
Respuesta: problema con acceso a la bd

aniMAYtions, podrias colocar el código que tienes actualmente??? y el problema, con las soluciones que te han dado el código inicial debe de haber variado...

espero tu respuesta, nus veoms!
__________________
blog: hector2c.wordpress.com
email: [email protected]
  #24 (permalink)  
Antiguo 22/02/2010, 12:09
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: problema con acceso a la bd

Que va, el código sigue siendo el mismo.
Si sigues el hilo de la conversación io no he variado mi código en ningún momento. Pero te lo pongo de todas maneras

Muestro el formulario
Código PHP:
function identificacion()
{
    echo
"
    <table>
        <form name='fidentifica' action='./Index.php' method='post'>
        <tr>
            <td>Usuario: </td>
            <td><input type='text' name='user' value='' /></td>
        </tr>
        <tr>
            <td>Password: </td>
            
            <td><input type='password' name='pss' value='' /></td>
        </tr>
        <tr>
            <td colspan='2' style='text-align:center'><input type='submit' name='bsidentifica' value='Aceptar' /></td>
        </tr>
        </form>
    </table>
    "
;

Recojo los valores y iamo a la función que los procesa
Código PHP:
if(isset($bsidentifica))
{
        
$usu $_POST['user'];
    
$pss $_POST['pss'];
    
login($usu$pss);

La función consulta a la bd
Código PHP:
function login($usuario$password)
{
    
$pss md5($password);
    
$conexion conectar();
    
$consulta "Select password From emp_users Where username = '$usuario'";
    echo
"<br/>$consulta<br/>";
    
$resultado mysql_query($consulta$conexion) or die("Error de conexi&oacute;n a la base de datos");
    
mysql_close($conexion);
    
$fila mysql_fetch_row($resultado);
    echo
"<br/>Pss: ".$fila[0]."<br/>";

He modificado $consulta para que me muestre lo que saca como password. Ahí es donde he visto que obtiene algo muy diferente a lo que se obtiene si la misma consulta se hace desde el phpMyAdmin.

Gracias por tu respuesta.
  #25 (permalink)  
Antiguo 22/02/2010, 13:32
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: problema con acceso a la bd

Bueno, esto ia es para creer en los extraterrestres...

Ahora resulta que hago otra consulta a la base de datos, y la he hecho de 2 formas para que no haia equivocaciones.
Código:
$consulta1 = "Select * From usuarios where username = 'x' ";
$consulta2 = "Select Count(*) From usuarios where username = 'x' ";
.....
$usuarios1 = mysql_num_rows($consulta1);
$usuarios2 = mysql_fetch_row($consulta2);

echo"$usuarios1";
echo"$usuarios2[0]";
Aviso, aquí he obviado la función de conexión y demás que veo innecesarias. La cosa está en que ambas consultas me devuelven 1 si las hago desde php y 0 si las hago en el phpMyAdmin.
El usuario en cuestión NO existe, io borré ese username, que es único ia que es un número de dni.

Vosotros opinareis pero a mi me está entrando ia un dolor de cabeza...
Mañana será otro día.

Hasta mañana!!

Etiquetas: bd
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 01:56.