Foros del Web » Programando para Internet » PHP »

Problema con el codigo

Estas en el tema de Problema con el codigo en el foro de PHP en Foros del Web. hola a todos. Tengo un gran problema: Tengo un codigo php para loguearme en una sesion. el Error que tengo es que cuando lo pruebo ...
  #1 (permalink)  
Antiguo 04/05/2010, 11:46
 
Fecha de Ingreso: abril-2010
Mensajes: 12
Antigüedad: 14 años
Puntos: 0
Pregunta Problema con el codigo

hola a todos.

Tengo un gran problema: Tengo un codigo php para loguearme en una sesion. el Error que tengo es que cuando lo pruebo me sale la pantalla en blanco :S y no se porque. He estado buscando informacion por todos los lados y nada. Os dejo el codigo por si vosotros encontrais el error.


Codigo PHP:

<?
$dbhost='127.0.0.1';
$dbusername='root';
$dbuserpass='';
$dbname='web';


session_start();


mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die('Cannot select database');

//1
if ($_POST['username'])
{
$username=$_POST['usuario'];
$password=$_POST['password'];

//2
if ($password==NULL)
{
echo "La password no fue enviada";
}
else
{
$query = mysql_query("SELECT usuario,password FROM usuario WHERE usuario = '$username'") or die(mysql_error());
$data = mysql_fetch_array($query);

//3
if ($data['password'] != $password)
{
echo "Login incorrecto";
}
else
{
$query = mysql_query("SELECT usuario,password FROM usuario WHERE usuario = '$username'") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION['$_usuario'] = $row['usuario'];
echo "Has sido logueado correctamente ".$_SESSION['$_usuario'];

} //3

} //2

} //1
?>
  #2 (permalink)  
Antiguo 04/05/2010, 11:51
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Problema con el codigo

Haz un var_dump a la variable $data a ver que te trae
Código PHP:
Ver original
  1. $data = mysql_fetch_array($query);
  2. var_dump($data);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 04/05/2010, 11:56
 
Fecha de Ingreso: abril-2010
Mensajes: 12
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con el codigo

Cita:
Iniciado por abimaelrc Ver Mensaje
Haz un var_dump a la variable $data a ver que te trae
Código PHP:
Ver original
  1. $data = mysql_fetch_array($query);
  2. var_dump($data);


Hola, e probrado eso. Pero nada. Cuando abro la pagina sale otra vez todo en blanco.
  #4 (permalink)  
Antiguo 04/05/2010, 12:02
Avatar de newboy_master  
Fecha de Ingreso: enero-2008
Ubicación: Granada
Mensajes: 882
Antigüedad: 16 años, 3 meses
Puntos: 46
Respuesta: Problema con el codigo

No creo que funcione pero prueba esto:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $dbhost='127.0.0.1';
  4. $dbusername='root';
  5. $dbuserpass='';
  6. $dbname='web';
  7.  
  8. mysql_connect ($dbhost, $dbusername, $dbuserpass) or die (mysql_error());
  9. mysql_select_db($dbname) or die('Cannot select database');
  10.  
  11. //1
  12. if ($_POST['username'])
  13. {
  14. $username=$_POST['usuario'];
  15. $password=$_POST['password'];
  16.  
  17. //2
  18. if ($password==NULL)
  19. {
  20. echo "La password no fue enviada";
  21. }
  22. else
  23. {
  24. $query = mysql_query("SELECT usuario,password FROM usuario WHERE usuario = '$username'") or die(mysql_error());
  25. $data = mysql_fetch_array($query);
  26.  
  27. //3
  28. if ($data['password'] != $password)
  29. {
  30. echo "Login incorrecto";
  31. }
  32. else
  33. {
  34. $query = mysql_query("SELECT usuario,password FROM usuario WHERE usuario = '$username'") or die(mysql_error());
  35. $row = mysql_fetch_array($query);
  36. $_SESSION['$_usuario'] = $row['usuario'];
  37. echo "Has sido logueado correctamente ".$_SESSION['$_usuario'];
  38.  
  39. } //3
  40.  
  41. } //2
  42.  
  43. } //1
  44. ?>

He puesto "session_start()" el primero, y luego que mande un error sino conecta a la DB para ver cuál es el problema.

Salu2.
__________________
@jslirola - Programador Web Freelance.
  #5 (permalink)  
Antiguo 04/05/2010, 12:08
 
Fecha de Ingreso: abril-2010
Mensajes: 12
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con el codigo

Cita:
Iniciado por newboy_master Ver Mensaje
No creo que funcione pero prueba esto:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $dbhost='127.0.0.1';
  4. $dbusername='root';
  5. $dbuserpass='';
  6. $dbname='web';
  7.  
  8. mysql_connect ($dbhost, $dbusername, $dbuserpass) or die (mysql_error());
  9. mysql_select_db($dbname) or die('Cannot select database');
  10.  
  11. //1
  12. if ($_POST['username'])
  13. {
  14. $username=$_POST['usuario'];
  15. $password=$_POST['password'];
  16.  
  17. //2
  18. if ($password==NULL)
  19. {
  20. echo "La password no fue enviada";
  21. }
  22. else
  23. {
  24. $query = mysql_query("SELECT usuario,password FROM usuario WHERE usuario = '$username'") or die(mysql_error());
  25. $data = mysql_fetch_array($query);
  26.  
  27. //3
  28. if ($data['password'] != $password)
  29. {
  30. echo "Login incorrecto";
  31. }
  32. else
  33. {
  34. $query = mysql_query("SELECT usuario,password FROM usuario WHERE usuario = '$username'") or die(mysql_error());
  35. $row = mysql_fetch_array($query);
  36. $_SESSION['$_usuario'] = $row['usuario'];
  37. echo "Has sido logueado correctamente ".$_SESSION['$_usuario'];
  38.  
  39. } //3
  40.  
  41. } //2
  42.  
  43. } //1
  44. ?>

He puesto "session_start()" el primero, y luego que mande un error sino conecta a la DB para ver cuál es el problema.

Salu2.

buenas.

Es que directamente no me sale ni "error en la conexion a la bd" cuando abro la pagina, sale en blanco.
  #6 (permalink)  
Antiguo 04/05/2010, 12:43
 
Fecha de Ingreso: febrero-2010
Mensajes: 39
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Problema con el codigo

Código PHP:
Ver original
  1. <?
  2.  
  3. $dbname='web';
  4.  
  5. //1
  6. if (isset($_POST['username'])){
  7.  
  8.     echo "HE ENTRADO EN EL ALGORITMO";  // habias comprovado que recivieras algo? =)
  9.    
  10.     $username = $_POST['usuario'];
  11.     $password = $_POST['password'];
  12.  
  13.     //2
  14.     if ($password==NULL){
  15.         echo "La password no fue enviada";
  16.     }else{
  17.         $conection = mysql_connect('localhost','root','');
  18.         $db_select = mysql_select_db($dbname,$conection);
  19.  
  20.         $query = mysql_query("SELECT usuario,password FROM usuario WHERE usuario = '".$username."'");
  21.         $data = mysql_fetch_array($query);
  22.    
  23.         //3
  24.         if ($data['password'] != $password){
  25.             echo "Login incorrecto";
  26.         }else{
  27.    
  28.             session_start();
  29.            
  30.             $query = mysql_query("SELECT usuario,password FROM usuario WHERE usuario = '".$username."'");
  31.             $row = mysql_fetch_array($query);
  32.            
  33.             $_SESSION['$_usuario'] = $row['usuario'];
  34.             echo "Has sido logueado correctamente ".$_SESSION['$_usuario'];
  35.    
  36.         } //3
  37.     } //2
  38. }else{ //1
  39.     echo "AI PUES NOMASITO CORRIJAME SI ME EQUIVOCO PUEEEEES";
  40. }
  41. ?>

Puedes postear el formulario con el que envias los datos profa¿
  #7 (permalink)  
Antiguo 04/05/2010, 12:46
 
Fecha de Ingreso: abril-2010
Mensajes: 12
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con el codigo

<form action=".php" method="POST" enctype="text/plain">

<table border="0" bgcolor="#000000" width="250" align="center">
<tr>
<td>
<h2 align="center"><font color="white"> <u>Introduce tus datos</u></H2>
<center>
Usuario: <br><br>
<input type="text" name="caja" size="30">
<br><br>

Contrase&ntilde;a:<br><br>
<input type="password" name="caja" size="30">
<br><br>

<a href="usu.php"> <input type="submit" name="boton" value="Enviar"></a>
</td>
</tr>


</center>
</form>


aqui lo tienes
  #8 (permalink)  
Antiguo 04/05/2010, 12:47
 
Fecha de Ingreso: febrero-2010
Mensajes: 39
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Problema con el codigo

Te dejo uno que escribir hace un tiempo atras, rapidito y sin estar muy pulido, pero funcionar, funciona

Este codigo llamalo "login.php"

Código HTML:
Ver original
  1. <form action="comprovarPass.php" method="POST" enctype="text/plain">
  2.  
  3. <table border="0" bgcolor="#000000" width="250" align="center">
  4. <tr>
  5. <td>
  6. <h2 align="center"><font color="white"> <u>Introduce tus datos</u></H2>
  7. <center>
  8. Usuario: <br><br>
  9. <input type="text" name="nick" size="30">
  10. <br><br>
  11.  
  12. Contrase&ntilde;a:<br><br>
  13. <input type="password" name="passwd" size="30">
  14. <br><br>
  15.  
  16. <a href="usu.php"> <input type="submit" name="boton" value="Enviar"></a>
  17. </td>
  18. </tr>
  19.  
  20.  
  21. </center>
  22. </form>


copia el codigo de abajo y ponlo en "comprovarPass.php"
Código PHP:
Ver original
  1. <?PHP
  2.  
  3. //Valores recogidos
  4. $nik = $_POST['nick'];
  5. $pass = $_POST['passwd'];
  6.  
  7. //Parametros nulos?
  8. if (! $nik == '') {
  9.     if (! $pass == '') {
  10.    
  11.         //Conexion
  12.         $conection = mysql_connect('localhost','root','');
  13.         $db_select = mysql_select_db('tu_base_datos',$conection);
  14.        
  15.         //Busqueda de usuario
  16.         $la_sql    = "SELECT * FROM usuarios WHERE nick='".mysql_real_escape_string($nik)."' AND passwd='".mysql_real_escape_string($pass?."'";
  17.         $la_query  = mysql_query($la_sql);
  18.        
  19.         //Aceso de usuario
  20.         if ( mysql_fetch_array($la_query) ) {
  21.             header ("Location: admin.php");
  22.         }else{
  23.             // Parametros incorrectos";
  24.             header ("Location: login.php");
  25.         }
  26.         //Cierre conexion
  27.         mysql_close($conection);
  28.        
  29. //No queremos NULS!    
  30.     }else{ echo "Debes especificar un password"; }
  31. }else{ echo "Debes especificar un nombre de usuario"; }
  32. ?>

si todo funciona bien te ira a admin.php


Enviavas mal los datos del formulario, con PHP recojes el "name" del <input> que usas para enviar nick y pass, tampoco hacias bien el envio del form en su "action"
  #9 (permalink)  
Antiguo 04/05/2010, 12:47
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 14 años, 4 meses
Puntos: 16
Respuesta: Problema con el codigo

Cita:
Iniciado por eamane Ver Mensaje
<form action=".php" method="POST" enctype="text/plain">

<table border="0" bgcolor="#000000" width="250" align="center">
<tr>
<td>
<h2 align="center"><font color="white"> <u>Introduce tus datos</u></H2>
<center>
Usuario: <br><br>
<input type="text" name="caja" size="30">
<br><br>

Contrase&ntilde;a:<br><br>
<input type="password" name="caja" size="30">
<br><br>

<a href="usu.php"> <input type="submit" name="boton" value="Enviar"></a>
</td>
</tr>


</center>
</form>


aqui lo tienes
Lo envias a un archivo llamado ".php"? ¿no hay niingun nombre?
__________________
Tengo una pregunta que a veces me tortura... ¿El loco soy yo o los locos son los demás?
  #10 (permalink)  
Antiguo 04/05/2010, 12:47
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Problema con el codigo

Activa el display_errors, ya sea en el php.ini o en un .htaccess
  #11 (permalink)  
Antiguo 04/05/2010, 14:41
 
Fecha de Ingreso: abril-2010
Mensajes: 12
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con el codigo

Cita:
Iniciado por Dunnow Ver Mensaje
Te dejo uno que escribir hace un tiempo atras, rapidito y sin estar muy pulido, pero funcionar, funciona

Este codigo llamalo "login.php"

Código HTML:
Ver original
  1. <form action="comprovarPass.php" method="POST" enctype="text/plain">
  2.  
  3. <table border="0" bgcolor="#000000" width="250" align="center">
  4. <tr>
  5. <td>
  6. <h2 align="center"><font color="white"> <u>Introduce tus datos</u></H2>
  7. <center>
  8. Usuario: <br><br>
  9. <input type="text" name="nick" size="30">
  10. <br><br>
  11.  
  12. Contrase&ntilde;a:<br><br>
  13. <input type="password" name="passwd" size="30">
  14. <br><br>
  15.  
  16. <a href="usu.php"> <input type="submit" name="boton" value="Enviar"></a>
  17. </td>
  18. </tr>
  19.  
  20.  
  21. </center>
  22. </form>


copia el codigo de abajo y ponlo en "comprovarPass.php"
Código PHP:
Ver original
  1. <?PHP
  2.  
  3. //Valores recogidos
  4. $nik = $_POST['nick'];
  5. $pass = $_POST['passwd'];
  6.  
  7. //Parametros nulos?
  8. if (! $nik == '') {
  9.     if (! $pass == '') {
  10.    
  11.         //Conexion
  12.         $conection = mysql_connect('localhost','root','');
  13.         $db_select = mysql_select_db('tu_base_datos',$conection);
  14.        
  15.         //Busqueda de usuario
  16.         $la_sql    = "SELECT * FROM usuarios WHERE nick='".mysql_real_escape_string($nik)."' AND passwd='".mysql_real_escape_string($pass?."'";
  17.         $la_query  = mysql_query($la_sql);
  18.        
  19.         //Aceso de usuario
  20.         if ( mysql_fetch_array($la_query) ) {
  21.             header ("Location: admin.php");
  22.         }else{
  23.             // Parametros incorrectos";
  24.             header ("Location: login.php");
  25.         }
  26.         //Cierre conexion
  27.         mysql_close($conection);
  28.        
  29. //No queremos NULS!    
  30.     }else{ echo "Debes especificar un password"; }
  31. }else{ echo "Debes especificar un nombre de usuario"; }
  32. ?>

si todo funciona bien te ira a admin.php


Enviavas mal los datos del formulario, con PHP recojes el "name" del <input> que usas para enviar nick y pass, tampoco hacias bien el envio del form en su "action"
Ey muchas gracias porque poco a poco me esta funcionando.. solo que me falla en la linea 4. del comprovarPass.php

Parse error: syntax error, unexpected T_VARIABLE in F:\C6\PHP\www\
  #12 (permalink)  
Antiguo 04/05/2010, 20:46
 
Fecha de Ingreso: febrero-2010
Mensajes: 39
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Problema con el codigo

Supongo que accedes al archivo comprovarPass usando el boton submit del formulario del otro archivo verdad? sino es logico que de ese error, espera que le llege un contenido que no se le ha sido enviado.

Como sea, pon datos en el formulario, dale al boton de submit pero antes haz esto otro:

sustituye las lineas donde asignas $nik y $pass y ponle un echo delante del $_POST[]

a ver que recibes del formulario

otra solucion, aunque seguiria sin ir el codigo en caso de que le llegaran mal los datos seria hacer algo asi

if (isset($_POST['nick'])) {
$nik=$_POST['nick'];
}

lo mismo para el _POST de pass. Aunque eso solo hace que si "si esta dado el valor de POST nick, pon ese valor en la variable $nik" y obviamente lo mismo para la otra

quita del otro archivo, el del form, lo del plain text, dejale solo el nombre action y method

por cierto, en el codigo del formulario hice copy paste del que me diste tu, pero esta bastante mal montado, delante del submit no deberias tener ningun <a>, el tipo sumbit envia los datos al "action" del form declarado en el que se encuentra el submit.

Por otra parte para hacer 4 pruevas yo crearia:

form
input 1 <br>
input 2 <br>
submit
/form

asi te queda un codigo mas limpio, ya luego cuando te funcione le pones las tablas y estilos =)
  #13 (permalink)  
Antiguo 05/05/2010, 01:35
 
Fecha de Ingreso: abril-2010
Mensajes: 12
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con el codigo

Cita:
Iniciado por Dunnow Ver Mensaje
Supongo que accedes al archivo comprovarPass usando el boton submit del formulario del otro archivo verdad? sino es logico que de ese error, espera que le llege un contenido que no se le ha sido enviado.

Como sea, pon datos en el formulario, dale al boton de submit pero antes haz esto otro:

sustituye las lineas donde asignas $nik y $pass y ponle un echo delante del $_POST[]

a ver que recibes del formulario

otra solucion, aunque seguiria sin ir el codigo en caso de que le llegaran mal los datos seria hacer algo asi

if (isset($_POST['nick'])) {
$nik=$_POST['nick'];
}

lo mismo para el _POST de pass. Aunque eso solo hace que si "si esta dado el valor de POST nick, pon ese valor en la variable $nik" y obviamente lo mismo para la otra

quita del otro archivo, el del form, lo del plain text, dejale solo el nombre action y method

por cierto, en el codigo del formulario hice copy paste del que me diste tu, pero esta bastante mal montado, delante del submit no deberias tener ningun <a>, el tipo sumbit envia los datos al "action" del form declarado en el que se encuentra el submit.

Por otra parte para hacer 4 pruevas yo crearia:

form
input 1 <br>
input 2 <br>
submit
/form

asi te queda un codigo mas limpio, ya luego cuando te funcione le pones las tablas y estilos =)

buenos dias.

Gracias por todo el tiempo que estas poniendo para ayudarme.
He realizado todo lo anterior que me has puesto. He modificado las cosillas del formulario, e echo los cambios en el codigo php. y aunque lo cambie sigue dando error en esa misma linea 4.


Puse el error de sintaxis como nuevo tema, y me comentaron que esa linea estaba bien pero que el fallo estaba en otra.


<?php
*
//Valores recogidos
$nick = $_POST["usuario"];
$pass = $_POST["password"];
*
//Parametros nulos
if (! $nick == '') { <--- en esta parte
* * if (! $pass == '') {


Deberia de estar de esta manera:

if ($nick != '') {
if ($pass != '') {



Y no se que decirte.. porque no ha cambiado nada. aun con el error linea 4.



Que podemos hacer...
* *
* *
  #14 (permalink)  
Antiguo 05/05/2010, 07:47
 
Fecha de Ingreso: febrero-2010
Mensajes: 39
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Problema con el codigo

AJAJA claro que no ha cambiado nada, ese codigo hace lo mismo xD ya te digo yo que si funciona eso, ahora mismo estoy logeandome en ese proyecto y funciona...

Es raro que te de ese error...

mandame la DB y los codigos en algun mp o algo y cuando tenga un momento lo pruevo en local
  #15 (permalink)  
Antiguo 05/05/2010, 08:12
 
Fecha de Ingreso: febrero-2010
Mensajes: 39
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Problema con el codigo

Código HTML:
Ver original
  1. <form action="comprovarPass.php" method="post">
  2.     Usuario: <input type="text" name="nick" size="30"><br />
  3.     Contrase&ntilde;a:<input type="password" name="passwd" size="30"><br />
  4.     <input type="submit" name="boton" value="Enviar">
  5. </form>

Código PHP:
Ver original
  1. <?PHP
  2.  
  3. //Valores recogidos
  4. $nik  = $_POST['nick'];
  5. $pass = $_POST['passwd'];
  6.  
  7. echo $nick;
  8. echo $pass;
  9.  
  10. //Parametros nulos?
  11. if (! $nik == '') {
  12.     if (! $pass == '') {
  13.    
  14.         //Conexion
  15.         $conection = mysql_connect('localhost','root','');
  16.         $db_select = mysql_select_db('TU_DB',$conection);
  17.  
  18.         //Busqueda de usuario
  19.         $la_sql    = "SELECT * FROM TABLA_USUARIOS WHERE COLUMNA_NICK='".mysql_real_escape_string($nik)."' AND COLUMNA_PASS='".mysql_real_escape_string($pass)."'";
  20.         $la_query  = mysql_query($la_sql);
  21.        
  22.         //Aceso de usuario
  23.         if ( mysql_fetch_array($la_query) ) {
  24.             // Parametros correctos
  25.             header ("Location: admin.php");
  26.         }else{
  27.             // Parametros incorrectos
  28.             header ("Location: login.php");
  29.         }
  30.         //Cierre conexion
  31.         mysql_close($conection);
  32.        
  33. //No queremos NULS!    
  34.     }else{ echo "Debes especificar un password"; }
  35. }else{ echo "Debes especificar un nombre de usuario"; }
  36. ?>

A mi me funciona perfectamente este, lo acabo de provar con una DB mia, solo he cambiado el nombre de la tabla y las columnas de la SQL y el nombre de la conexion a la DB

Etiquetas: Ninguno
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 04:36.