Foros del Web » Programando para Internet » PHP »

Me muestra errores en la consulta de mi sistema de usuarios

Estas en el tema de Me muestra errores en la consulta de mi sistema de usuarios en el foro de PHP en Foros del Web. Buenos días compañeros! Se me ha presentado un problema y acudo a vosotros! Os explico: Estoy configurando un sistema de usuarios y el archivo login.php ...
  #1 (permalink)  
Antiguo 31/10/2011, 04:18
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Me muestra errores en la consulta de mi sistema de usuarios

Buenos días compañeros! Se me ha presentado un problema y acudo a vosotros!

Os explico:

Estoy configurando un sistema de usuarios y el archivo login.php (Donde se envian los datos del formulario login) contiene lo siguiente;
Código PHP:
<?php
include('../conexion/index.php');

// Detenemos el script si no se han enviado datos.
if(empty($_POST)) die();

// Filtramos y asignamos variable a los datos obtenidos. Para el login solo necesitamos usuario y contraseña
$user filter_input(INPUT_POST'log'FILTER_SANITIZE_SPECIAL_CHARS);
$pass md5($_POST['pwd']); // La contraseña la encriptamos, si es igual a la de registro, el hash será el mismo

// Buscamos el nombre de usuario en la db
$sql_check_user "SELECT idgimnasio,email,contrasena FROM profesionales WHERE email='{$user}'";
if(!
mysql_num_rows($sql_check_user)) header('Location: error.php'); // Cuidado aquí, noten el '!' en la condición

// Con la misma sentencia SQL, comprobamos que el hash de la contraseña sea el mismo
while($row mysql_fetch_array($sql_check_user)) {
    if(
$pass != $row['contrasena']) header('Location: error.php');
}

// Insertartamos una cookie con la id del usuario y otra con un hash en base al usuario y el hash de la contraseña
while($row mysql_fetch_array($sql_check_user)) {
    
// Antes, definiremos la duracion de las cookies. Será una hora ó un año (si el usuario quiere recordar sus datos)
    
$time = (!$_POST['rememberme']) ? time()+3600 time()+31536000;
    
// Ahora si, las cookies
    
setcookie('user_id'$row['idgimnasio'], $time);
    
setcookie('user_hash'md5($row['email'] . $row['contrasena']), $time);
}

header('Location: index.php'); // Redirección cuando el usuario se haya logeado satisfactoriamente
?>
El problema lo tengo en que me da los siguientes errores;
Código:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/s10c91c4/public_html/miweb.dominio/login/login.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at /home/s10c91c4/public_html/pupli.com/login/login.php:13) in /home/s10c91c4/public_html/miweb.dominio/login/login.php on line 13

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/s10c91c4/public_html/miweb.dominio/login/login.php on line 16

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/s10c91c4/public_html/miweb.dominio/login/login.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at /home/s10c91c4/public_html/miweb.dominio/login/login.php:13) in /home/s10c91c4/public_html/miweb.dominio/login/login.php on line 29
Alguien me podría guiar un poquito? llevo toda la mañana sin encontrar el fallo!!

Un saludo muy grande y gracias de antemano.
  #2 (permalink)  
Antiguo 31/10/2011, 05:00
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 7 meses
Puntos: 406
Respuesta: Me muestra errores en la consulta de mi sistema de usuarios

WTF!...

Código PHP:
Ver original
  1. //como lo tienes
  2. $sql_check_user = "SELECT idgimnasio,email,contrasena FROM profesionales WHERE email='{$user}'";
  3. if(!mysql_num_rows($sql_check_user)) header('Location: error.php');
  4.  
  5. //como debería de ser
  6. $sql_query = "SELECT idgimnasio,email,contrasena FROM profesionales WHERE email='{$user}'";
  7. $sql_check_user = mysql_query($sql_query,$conexion) or die(mysql_error());
  8. if(!mysql_num_rows($sql_check_user)) header('Location: error.php');  //mysql_num_rows retorna un numero, no un bolaneo O.o

mysql_num_rows cuenta los registros obtenidos mediante mysql_query, por lo visto es necesario que leas mas información de conexión y consultas a bases de datos, porque no tienes idea de lo mas basico...

Código PHP:
Ver original
  1. while($row = mysql_fetch_array($sql_check_user)) {
  2.     // Antes, definiremos la duracion de las cookies. Será una hora ó un año (si el usuario quiere recordar sus datos)
  3.     $time = (!$_POST['rememberme']) ? time()+3600 : time()+31536000;
  4.     // Ahora si, las cookies
  5.     setcookie('user_id', $row['idgimnasio'], $time);
  6.     setcookie('user_hash', md5($row['email'] . $row['contrasena']), $time);
  7. }

no entiendo para que metes la creación de la cookie en un while... eso solo creará y actualizara tantas veces como registros se obtengan de la base de datos...

Tienes serios problemas con cosas básicas, te recomiendo que busques tutoriales en internet, en la Wiki del foro tienes un buen de ejemplos para que le des una checada
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #3 (permalink)  
Antiguo 31/10/2011, 05:21
sidneyendis
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Me muestra errores en la consulta de mi sistema de usuarios

Gracias Nemutagk!!

Realmente diste en el clavo... el script lo conseguí en un tutorial de internet, pero se ve que no busque en el lugar adecuado ya que aunque me solucionaste eso... ahora me está dando problemas por otros lados (Desistiré de este código y me informaré para crear uno propio).

Gracias por tus criticas constructivas que me han hecho ver que no hay nada como un código propio donde sabes realmente lo que estas haciendo... asi que... manos a la obra.

Gracias nuevamente!

Etiquetas: sistema, usuarios
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 22:08.