Problema con PHP

Iniciado por Feedeex, 4 Diciembre 2010, 03:19 AM

0 Miembros y 1 Visitante están viendo este tema.

Feedeex

<?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.

xassiz~

Código (php) [Seleccionar]

if (($usuario=="") || ($password==""))

Feedeex

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  :-(

seele

a lo que se refiere pablomi es que pusiste mal el || en la comparacion, pusiste esto

Código (php) [Seleccionar]
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

Feedeex

Hola, gracias por responder. Probé así:

<?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:

xassiz~

Podías ir haciendo caso a lo que te dijo seele, debuggea:
Código (php) [Seleccionar]
<?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");
}
}
 } else die(
"No paso el mysql_num_rows");
 
?>


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.

Feedeex

Cita de: pablomi en  4 Diciembre 2010, 18:23 PM
Podías ir haciendo caso a lo que te dijo seele, debuggea:
Código (php) [Seleccionar]
<?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");
}
}
 } else die(
"No paso el mysql_num_rows");
 
?>


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 :-\

xassiz~

Debuggea, prueba a quitar los headers y cambia los echo por die

Feedeex

Uhmm, es muy raro esto. Debuggue así:

<?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:

xassiz~

Pon else para el primer if