Foros del Web » Programando para Internet » PHP »

PHP OO No veo el error

Estas en el tema de No veo el error en el foro de PHP en Foros del Web. Hola, tengo un problema con el login de este código. Este código selecciona de la db el user, la pass y la activacion. Si el ...
  #1 (permalink)  
Antiguo 10/04/2014, 14:13
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
No veo el error

Hola, tengo un problema con el login de este código. Este código selecciona de la db el user, la pass y la activacion. Si el campo de activación es "0", pasa a la siguiente, luego selecciona el user y la pass de la db y si existen te logueas. Pero en mi caso pongo un usuario correcto y no se me loguea -,-

login.php:

Código PHP:
<?php
session_start
();
require_once(
'./config/funciones.php');
conectar('noseascotilla''noseascotilla''noseascotilla''noseascotilla');
 
include(
"mantenimiento.php");

//Variables
$username strip_tags($_POST['username']);
$password strip_tags(sha1($_POST['password']));
$activado strip_tags($_POST['activado']); 

$query = @mysql_query('SELECT * FROM users WHERE 
user="'
.mysql_real_escape_string($username).'",
pass="'
.mysql_real_escape_string($password).'"
AND activado="'
.mysql_real_escape_string($activado).'"');

//Correcte fins aqui

if($existe = @mysql_fetch_object($query))
{
  if(
$existe["activado"] != 1) {
    echo 
'Primero activa tu cuenta entrando a tu correo';
}else{
    
$_SESSION['logged'] = 'yes';
    
$_SESSION['username'] = $username;
    echo 
'<script>window.location="ofserker.php"</script>';
}
}else{
    echo 
'El usuario y/o pass son incorrectos.';    
}
?>
  #2 (permalink)  
Antiguo 10/04/2014, 14:21
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
Respuesta: No veo el error

No se ve nada mal.

Yo haría:

1.- Meter en variable los contenidos de

Cita:
mysql_real_escape_string($username)
mysql_real_escape_string($password)
e imprimirlos para verificar el contenido de lo que se esta comparando contra la base de datos.
  #3 (permalink)  
Antiguo 10/04/2014, 14:38
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: No veo el error

Una pregunta, la vatiable $usuario que hace el metodo post para que sirve?
  #4 (permalink)  
Antiguo 10/04/2014, 14:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No veo el error

Como te dicen, pero yo incluso reemplazaría esa cosa que usas por:
Código PHP:
Ver original
  1. $sql = "SELECT * FROM users ";
  2. $sql .= "WHERE user='".addslashes($username)."'";
  3. $sql .= "AND pass='".addslashes($password)."' ";
  4. $sql .= "AND activado='".addslashes($activado)."'";
  5. // Verificamos:
  6. echo $sql;
  7. $query = mysql_query($sql);

No te olvides que MySQL entiende los apóstrofes (') como delimitadores de cadenas, no las comillas ("). Estas últimas sólo funcionan para cadenas si reconfiguras el servidor de MySQL, ya que por default las toma como delimitadores de nombres de objetos de base de datos.

Por otro lado, NO PONGAS EL "@" cuando estás todavía en etapa de desarrollo. Te oculta los mensajes de error. ¿Por qué querrías ocultarlos cuando aún no funciona el script?
De no haberlos ocultado ya te habrías dado cuenta que tenías un error de sintaxis en el SQL...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 10/04/2014, 15:07
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: No veo el error

Si quieres ver donde tengo el proyecto y comprobar el error. Entra a www ofserker.netai.net, registrate y luego dale a login.

Respecto a mostrar eso del login lo hare mañana ya que en mi pais es tarde y mañana hay insti -.-

Me haria mucha ilusion que lo vieras tu.
Atentamente, OfSerket
  #6 (permalink)  
Antiguo 11/04/2014, 10:21
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: No veo el error

Vale, utilize el codigo que me diste:

Código PHP:
<?php
session_start
();
require_once(
'./config/funciones.php');
conectar('a''a''a''a');

include(
"mantenimiento.php");

//Variables
$username strip_tags($_POST['username']);
$password strip_tags(sha1($_POST['password']));
$activado strip_tags($_POST['activado']); 

$query = @mysql_query('SELECT * FROM users WHERE 
user="'
.mysql_real_escape_string($username).'",
pass="'
.mysql_real_escape_string($password).'"
AND activado="'
.mysql_real_escape_string($activado).'"');

//Correcte fins aqui

$sql "SELECT * FROM users ";
$sql .= "WHERE user='".addslashes($username)."'";
$sql .= "AND pass='".addslashes($password)."' ";
$sql .= "AND activado='".addslashes($activado)."'"
// Verificamos:
echo $sql;
$query mysql_query($sql);
?>
Luego me voy al login, me logueo y qui viene cuando me salta el echo, todo sale bien menos en el
Código PHP:
$activado 
. Aqui te paso una imagen.



Atentamente, OfSerker
  #7 (permalink)  
Antiguo 11/04/2014, 10:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No veo el error

Bueno, entonces es evidente que no te está llegando ese valor...
Código PHP:
Ver original
  1. $activado = strip_tags($_POST['activado']);


Por cierto, borra esto, que ya es sólo basura:
Código PHP:
Ver original
  1. $query = @mysql_query('SELECT * FROM users WHERE
  2. user="'.mysql_real_escape_string($username).'",
  3. pass="'.mysql_real_escape_string($password).'"
  4. AND activado="'.mysql_real_escape_string($activado).'"');
Como ya te dije, tiene un error de sintaxis, y como persistes en poner esa cosa "@" ni siquiera recibes el error.
QUITA EL "@" CUANDO ESTES PROGRAMANDO. Sólo te esconde los problemas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 11/04/2014, 13:06
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: No veo el error

Quite eso de la @.

Luego el codigo que me passaste anteriormente:

Código PHP:
$activado strip_tags($_POST['activado']); 
Es el mismo y lo probe cuando no lo sabia y me salia la misma imagen que puse anteriormente:



Si lo pongo sin la @ me sale igual, no lee el user ni la pass.

Atentamente, OfSerker
  #9 (permalink)  
Antiguo 11/04/2014, 13:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No veo el error

No era para que salga otra cosa, sino una buena recomendación.
En cualqueir caso, el problema es que no llega el dato al script, y ESO es lo que debes revisar.
El tema pasa en esta etapa:
Código PHP:
<?php
session_start
();
require_once(
'./config/funciones.php');
conectar('a''a''a''a');

include(
"mantenimiento.php");

// Verificar lo que entra
if (isset($_POST['username']) and isset($_POST['password']) and isset($_POST['activado'])  and $_POST['activado']  != "" AND $_POST['username'] != "" AND $_POST['password'] != "")
{
  
$username strip_tags($_POST['username']);
  
$password strip_tags(sha1($_POST['password']));
  
$activado strip_tags($_POST['activado']); 
  
$sql "SELECT * FROM users ";
  
$sql .= "WHERE user='".addslashes($username)."'";
  
$sql .= "AND pass='".addslashes($password)."' ";
  
$sql .= "AND activado='".addslashes($activado)."'"
  
// Verificamos:
  
echo $sql;
  
$query mysql_query($sql);
}
else 
{echo 
"Error al ingresar los datos. Al menos un dato no se ingreso en el formulario.";
}
?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 11/04/2014, 15:37
 
Fecha de Ingreso: marzo-2014
Mensajes: 168
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: No veo el error

Vale, ahora lo entiendo todo...
La variable $activado selecciona del panel de login si esta activado pero como no hay un campo para eso, no lo selecciona y me salta el error:

'Error al ingresar los datos. Al menos un dato no se ingreso en el formulario.' (Ya que falta el dato activado que como no hay un campo no lo selecciona y dice que un dato no se ingreso).

Me gustaría que me ayudarás ha hacerlo. Se tendria que hacer un:

Código PHP:
$activado SELECT FROM users WHERE activado ""
(Codigo rápido).

Si no se hace asi dime como puedo cambiar esta variable y su contenido.

Atentamente, OfSerker

Etiquetas: mysql, select, sql, variable
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 02:00.