Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Feedeex en 4 Diciembre 2010, 03:19 am



Título: Problema con PHP
Publicado por: Feedeex en 4 Diciembre 2010, 03:19 am
Código:
<?php
include ("conexion.php");
include ("pvpgn_hash.php");
$usuario = strtolower(trim($_POST['usuario']));
$password = strtolower(pvpgn_hash(trim($_POST['password'])));
if ($usuario == "" | $password == "") {
 die();
 } else {
  $consulta = mysql_query("SELECT * FROM bnet where acct_username='$usuario'");
  if (mysql_num_rows($consulta) > 0) {
    while ($row = mysql_fetch_array($consulta)) {
$acct_username = $row['acct_username'];
if ($acct_username == $usuario) {
  $acct_password = $row['acct_passhash1'];
  if ($acct_password == $password) {
   session_start();
   $_SESSION['usuario'] = $usuario;
   $email = $row['acct_email'];
   $_SESSION['email'] = $email;
    header("Location: index.php");
   } else{
   header("Location: index.php?error=1");
   }
} else {
header("Location: index.php?error=0");
   }
  }
 }
}

Funcionar funciona bien, el problema está en que debería redireccionar:

• Si el usuario no existe.
• Si el pass no es correcto.
• Si se produjo el login satisfactoriamente creando una sesión.

Bueno, no me funciona ninguno de los 3 headers, simplemente se queda en la página en blanco.


Título: Re: Problema con PHP
Publicado por: xassiz~ en 4 Diciembre 2010, 13:57 pm
Código
  1. if (($usuario=="") || ($password==""))
  2.  


Título: Re: Problema con PHP
Publicado por: Feedeex en 4 Diciembre 2010, 14:09 pm
Hola pablomi, ya había pensado en esa parte pero no es el problema. Sino solo haría un die(); cuando no se pone ni user ni password, y poniendo ambos igual finaliza con un die  :-(


Título: Re: Problema con PHP
Publicado por: seele en 4 Diciembre 2010, 17:21 pm
a lo que se refiere pablomi es que pusiste mal el || en la comparacion, pusiste esto

Código
  1. if ($usuario == "" | $password == "")

sobre tu problema te recomiendo empezar a debugear, empieza a poner echo o print_r dentro de cada condicional para saber donde entra y donde no

saludos


Título: Re: Problema con PHP
Publicado por: Feedeex en 4 Diciembre 2010, 18:01 pm
Hola, gracias por responder. Probé así:

Código:
<?php
include ("conexion.php");
include ("pvpgn_hash.php");
$usuario = strtolower(trim($_POST['usuario']));
$password = strtolower(pvpgn_hash(trim($_POST['password'])));
  $consulta = mysql_query("SELECT * FROM bnet where acct_username='$usuario'");
  if (mysql_num_rows($consulta) > 0) {
    while ($row = mysql_fetch_array($consulta)) {
$acct_username = $row['acct_username'];
if ($acct_username == $usuario) {
echo "Usuario correcto.";
  $acct_password = $row['acct_passhash1'];
  if ($acct_password == $password) {
   echo "Contraseña correcta.";
   session_start();
   $_SESSION['usuario'] = $usuario;
   $email = $row['acct_email'];
   $_SESSION['email'] = $email;
    header("Location: index.php");
   } else{
   echo "Contraseña incorrecta.";
   header("Location: index.php?error=1");
   }
} else {
echo "Usuario incorrecto.";
header("Location: index.php?error=0");
   }
  }
 }

Pero sigue finalizando en blanco, sin mostrar absolutamente ningún echo  :huh:


Título: Re: Problema con PHP
Publicado por: xassiz~ en 4 Diciembre 2010, 18:23 pm
Podías ir haciendo caso a lo que te dijo seele, debuggea:
Código
  1. <?php
  2. include ("conexion.php");
  3. include ("pvpgn_hash.php");
  4. $usuario = strtolower(trim($_POST['usuario']));
  5. $password = strtolower(pvpgn_hash(trim($_POST['password'])));
  6. $consulta = mysql_query("SELECT * FROM bnet where acct_username='$usuario'");
  7. if (mysql_num_rows($consulta) > 0) {
  8.    while ($row = mysql_fetch_array($consulta)) {
  9. $acct_username = $row['acct_username'];
  10. if ($acct_username == $usuario) {
  11. echo "Usuario correcto.";
  12. $acct_password = $row['acct_passhash1'];
  13. if ($acct_password == $password) {
  14. echo "Contraseña correcta.";
  15. $_SESSION['usuario'] = $usuario;
  16. $email = $row['acct_email'];
  17. $_SESSION['email'] = $email;
  18. header("Location: index.php");
  19. } else{
  20. echo "Contraseña incorrecta.";
  21. header("Location: index.php?error=1");
  22. }
  23. } else {
  24. echo "Usuario incorrecto.";
  25. header("Location: index.php?error=0");
  26. }
  27. }
  28. } else die("No paso el mysql_num_rows");
  29. ?>

Pero el caso, es que si has puesto algo en el HTML ya no podrás utilizar header().

Tienes que redireccionar de otra forma, por ejemplo, javascript.


Título: Re: Problema con PHP
Publicado por: Feedeex en 4 Diciembre 2010, 18:27 pm
Podías ir haciendo caso a lo que te dijo seele, debuggea:
Código
  1. <?php
  2. include ("conexion.php");
  3. include ("pvpgn_hash.php");
  4. $usuario = strtolower(trim($_POST['usuario']));
  5. $password = strtolower(pvpgn_hash(trim($_POST['password'])));
  6. $consulta = mysql_query("SELECT * FROM bnet where acct_username='$usuario'");
  7. if (mysql_num_rows($consulta) > 0) {
  8.    while ($row = mysql_fetch_array($consulta)) {
  9. $acct_username = $row['acct_username'];
  10. if ($acct_username == $usuario) {
  11. echo "Usuario correcto.";
  12. $acct_password = $row['acct_passhash1'];
  13. if ($acct_password == $password) {
  14. echo "Contraseña correcta.";
  15. $_SESSION['usuario'] = $usuario;
  16. $email = $row['acct_email'];
  17. $_SESSION['email'] = $email;
  18. header("Location: index.php");
  19. } else{
  20. echo "Contraseña incorrecta.";
  21. header("Location: index.php?error=1");
  22. }
  23. } else {
  24. echo "Usuario incorrecto.";
  25. header("Location: index.php?error=0");
  26. }
  27. }
  28. } else die("No paso el mysql_num_rows");
  29. ?>

Pero el caso, es que si has puesto algo en el HTML ya no podrás utilizar header().

Tienes que redireccionar de otra forma, por ejemplo, javascript.

Comprendo, pero saldría un error de PHP haciendo referencia al header. Y no es lo que sucede, porque ni siquiera llega a los headers :-\


Título: Re: Problema con PHP
Publicado por: xassiz~ en 4 Diciembre 2010, 18:32 pm
Debuggea, prueba a quitar los headers y cambia los echo por die


Título: Re: Problema con PHP
Publicado por: Feedeex en 4 Diciembre 2010, 18:46 pm
Uhmm, es muy raro esto. Debuggue así:

Código:
<?php
include ("conexion.php");
include ("pvpgn_hash.php");
$usuario = strtolower(trim($_POST['usuario']));
$password = strtolower(pvpgn_hash(trim($_POST['password'])));
  $consulta = mysql_query("SELECT * FROM bnet where acct_username='$usuario'");
  if (mysql_num_rows($consulta) > 0) {
    while ($row = mysql_fetch_array($consulta)) {
$acct_username = $row['acct_username'];
if ($acct_username == $usuario) {
die("Usuario incorrecto");
  $acct_password = $row['acct_passhash1'];
  if ($acct_password == $password) {
   die("Contraseña correcta");
   session_start();
   $_SESSION['usuario'] = $usuario;
   $email = $row['acct_email'];
   $_SESSION['email'] = $email;
   } else{
   die("Contraseña incorrecta");
   }
} else {
die("Usuario incorrecto");
   }
  }
 }

Y nada sigue finalizando en blanco :rolleyes:


Título: Re: Problema con PHP
Publicado por: xassiz~ en 4 Diciembre 2010, 19:25 pm
Pon else para el primer if


Título: Re: Problema con PHP
Publicado por: seele en 4 Diciembre 2010, 19:25 pm
activa los errores de php en el php.ini


Título: Re: Problema con PHP
Publicado por: Feedeex en 4 Diciembre 2010, 19:51 pm
Gracias por las ayudas. Borré todo y lo volví a programar de 0 y ya funciona :xD