Foros del Web » Programando para Internet » PHP »

¿Por que no me da la ID?

Estas en el tema de ¿Por que no me da la ID? en el foro de PHP en Foros del Web. Hola, estoy intentando que cada usuario tenga su propia página y el caso es que al hacer el login hago un echo para ver si ...
  #1 (permalink)  
Antiguo 04/04/2012, 02:49
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 2 meses
Puntos: 14
¿Por que no me da la ID?

Hola, estoy intentando que cada usuario tenga su propia página y el caso es que al hacer el login hago un echo para ver si me da su ID y no llega, entonces vuelvo al index (con la session todavia abierta) me vuelvo a logear y entonces si me da el ID
Os muestro el código:

Código PHP:
<?php
session_start
();
// mis variables a recibir 


$conexionmysql_connect("host","tabla","password") or die("Error al conectar"); 
mysql_select_db("tabla",$conexion) or die ("Error la seleccionar la base de  datos "); 


$correo=$_POST['correo']; 
$password=$_POST['password']; 
$correouser=$_SESSION['correo'];

if(!empty(
$correo) && !empty($password))  { 
 
$comprobacion mysql_query("SELECT correo, password FROM registrados WHERE correo='$correo' AND password='$password'",$conexion) or die ("Query Fallo".mysql_error());
      if(
mysql_num_rows($comprobacion) == 1) { 
           
$_SESSION['correo']=$correo;

            
$comprobacion mysql_query("SELECT * FROM registrados WHERE correo='$correouser'",$conexion) or die ("Query Fallo".mysql_error());
            if( 
mysql_num_rows($comprobacion) ) {
            
$row mysql_fetch_array($comprobacion);
        
            
$nombre $row["nombre"];
            
$apellidos $row["apellidos"]; 
            
$id=$row["id"];
}
            echo 
"El id es ".$id." ";
           
?>
           
           <a href="perfil.php?<?=$id?>">Paso variable de sesión por URL</a>
           <?php
        
      
}
      else { 
           echo 
"El correo y/o la contraseña no son correctas"
      }
}

?>
Luego, cuando ya me he logeado 2 veces para obtener el ID... Entro en el perfil que es del tipo : perfil.php?id5 y intento poner perfil.php?id4 para ver el perfil del cuatro y no me sale...
Este es el código del perfil.php

Código PHP:
<?php
session_start
();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<title>Perfil</title>
<link rel="stylesheet" href="perfilcss.css" />

</head>

<?php

if(isset($_SESSION['correo'])){

$correouser=$_SESSION['correo'];

$conexionmysql_connect("fdb2.awardspace.com","995851_newco","password") or die("Error al conectar"); 
mysql_select_db("995851_newco",$conexion) or die ("Error al seleccionar la base de  datos "); 
$comprobacion mysql_query("SELECT * FROM registrados WHERE correo='$correouser'",$conexion) or die ("Query Fallo".mysql_error());
if( 
mysql_num_rows($comprobacion) ) {
            
$row mysql_fetch_array($comprobacion);
        
$nombre $row["nombre"];
$apellidos $row["apellidos"]; 
}



?>

<body>

<div id="menu" class="menu" >
<input type="button" class="bmenu" onclick="location.href='perfil.html'" value="Vipefy" />
<input type="button" class="bmenu" onclick="location.href='amigos.html'" value=" Mis amigos" />
<input type="button" class="bmenu" onclick="location.href='destruir.php'" value="Desconexión" />
<input type="button" class="bmenu" onclick="location.href='mensajes.php'" value="Mensajes" />
<input type="button" class="bnombre" value="<?php echo $nombre." ".$apellidos ?>" />
</div>

<?php

$comprobacion 
mysql_query("SELECT curso FROM registrados WHERE correo='$correouser'",$conexion) or die ("Query Fallo".mysql_error());
if( 
mysql_num_rows($comprobacion) ) {
            
$row mysql_fetch_array($comprobacion);
        
$nombre $row["nombre"];
$apellidos $row["apellidos"];
$curso$row["curso"]; 
}

</
div>

<?
php
}else{
?>

<div id="menuvertical" class="menuvertical" />
Alumno de <?php echo " ".$curso." " ?>.
</div>

<?php
}
?>

<?php
} else {
?>
Esta sección es para usuarios,
<a href="index.html">click aquí para iniciar sesión</a>

</body>
<?php
}

?>

</html>
La verdad, siento que tengáis que leer todo el código pero no sé donde está el error y estoy un poco desesperado ya con este tema xd ya llevo dos días intentándolo...

Muchas gracias de verdad por el tiempo en leer el post e intentar ayudarme, me ayudáis muchisimo.
  #2 (permalink)  
Antiguo 04/04/2012, 03:14
Avatar de jamie_88  
Fecha de Ingreso: abril-2011
Ubicación: Lima
Mensajes: 161
Antigüedad: 12 años, 10 meses
Puntos: 28
Respuesta: ¿Por que no me da la ID?

intenta con algo asi...

Código PHP:
<?php
$conexion
mysql_connect("host","tabla","password") or die("Error al conectar"); 
mysql_select_db("tabla",$conexion) or die ("Error la seleccionar la base de  datos "); 


$correo=$_POST['correo']; 
$password=$_POST['password']; 
$correouser=$_SESSION['correo'];

if(!empty(
$correo) && !empty($password))  { 
 
$comprobacion mysql_query("SELECT * FROM registrados WHERE correo='$correo' AND password='$password'")
      if(
mysql_num_rows($comprobacion) == 1) { 
            
$row mysql_fetch_array($comprobacion);
            
$nombre $row["nombre"];
            
$apellidos $row["apellidos"]; 
            
$id=$row["id"];
            echo 
"El id es ".$id;
           echo 
"<a href='perfil.php?id=".$id."'>Paso variable de sesión por URL</a>";
        
      }
      else { 
           echo 
"El correo y/o la contraseña no son correctas"
      }
}

?>
  #3 (permalink)  
Antiguo 04/04/2012, 03:24
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 2 meses
Puntos: 14
Respuesta: ¿Por que no me da la ID?

Cita:
Iniciado por jamie_88 Ver Mensaje
intenta con algo asi...

Código PHP:
<?php
$conexion
mysql_connect("host","tabla","password") or die("Error al conectar"); 
mysql_select_db("tabla",$conexion) or die ("Error la seleccionar la base de  datos "); 


$correo=$_POST['correo']; 
$password=$_POST['password']; 
$correouser=$_SESSION['correo'];

if(!empty(
$correo) && !empty($password))  { 
 
$comprobacion mysql_query("SELECT * FROM registrados WHERE correo='$correo' AND password='$password'")
      if(
mysql_num_rows($comprobacion) == 1) { 
            
$row mysql_fetch_array($comprobacion);
            
$nombre $row["nombre"];
            
$apellidos $row["apellidos"]; 
            
$id=$row["id"];
            echo 
"El id es ".$id;
           echo 
"<a href='perfil.php?id=".$id."'>Paso variable de sesión por URL</a>";
        
      }
      else { 
           echo 
"El correo y/o la contraseña no son correctas"
      }
}

?>

Aún comprobando el correo y el password sigue igual, necesita que se loguee dos veces para conocer el ID. Gracias por la ayuda igualmente, te lo agradezco mucho.
  #4 (permalink)  
Antiguo 04/04/2012, 03:40
Avatar de jamie_88  
Fecha de Ingreso: abril-2011
Ubicación: Lima
Mensajes: 161
Antigüedad: 12 años, 10 meses
Puntos: 28
Respuesta: ¿Por que no me da la ID?

osea en la linea:

echo "El id es ".$id;

no te sale el valor de $id?

has intentado en lugar de usar !empty usar isset?
if((isset($correo)) && (isset($password)))


la ultima cosa...

en el form para el login esta en la misma pagina del script php?

osea
<form>
login...
<input type="subtmit" name="login">
</form>
<?php
script
?>
???
  #5 (permalink)  
Antiguo 04/04/2012, 04:04
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 2 meses
Puntos: 14
Respuesta: ¿Por que no me da la ID?

Cita:
Iniciado por jamie_88 Ver Mensaje
osea en la linea:

echo "El id es ".$id;

no te sale el valor de $id?

has intentado en lugar de usar !empty usar isset?
if((isset($correo)) && (isset($password)))


la ultima cosa...

en el form para el login esta en la misma pagina del script php?

osea
<form>
login...
<input type="subtmit" name="login">
</form>
<?php
script
?>
???

Me dice : El ID es

se queda en blanco... Luego, tengo el formulario en el index.php y este te redirige al comprueba.php q es este script php y he probado lo del isset y todavía sigue igual. Gracias por todo en serio.
  #6 (permalink)  
Antiguo 04/04/2012, 04:08
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 15 años, 11 meses
Puntos: 326
Respuesta: ¿Por que no me da la ID?

En vez de poner

Código PHP:
echo "El id es ".$id
Pon:
Código PHP:
echo '<pre>';
print_r($row);
echo 
'</pre>'
Así vemos qué te devuelve la consulta exactamente! (Peganos el resultado xDD)
__________________
>> Eleazan's Source
>> @Eleazan
  #7 (permalink)  
Antiguo 04/04/2012, 05:12
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 2 meses
Puntos: 14
Respuesta: ¿Por que no me da la ID?

Cita:
Iniciado por Eleazan Ver Mensaje
En vez de poner

Código PHP:
echo "El id es ".$id
Pon:
Código PHP:
echo '<pre>';
print_r($row);
echo 
'</pre>'
Así vemos qué te devuelve la consulta exactamente! (Peganos el resultado xDD)
Mira, si lo pruebo a la primera (y con ninguna sesión iniciada) se me queda la página en blanco, pero si lo pruebo a la segunda vez (ya está la sesión iniciada) entonces me sale esto:
Array
(
[0] => 5
[id] => 5
[1] => prueba
[nombre] => prueba
[2] => registro
[apellidos] => registro
[3] => prueba
[correo] => prueba
[4] => password
[password] => password
[5] =>
[curso] =>
)

Quizás es que en el comprueba.php no puede iniciar la sesión y mostrar el ID a la vez o algo así, no sé lo que puede ser. Gracias :)
  #8 (permalink)  
Antiguo 04/04/2012, 05:34
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 1 mes
Puntos: 89
Respuesta: ¿Por que no me da la ID?

1 º:

Crea un pagina logout.php para limpiar la session y puedas realizar las pruebas correspondientes.

Contenido logout.php:
Código PHP:
<?php
session_start
();
session_unset();
session_destroy();
header('Location: index.php');

?>
2 º:

En la comprobacion del correo (login), llama todos los datos de interes, y agregalos al la variable $_SESSION.

Por ejemplo veo que llamas al nombre apellido y id dos veces. Es mas facil, si en el SELECT incluis todo lo que necesitas y Seteas $_SESSION de la siguiente manera:
Código PHP:
<?php 
$_SESSION 
$row;
?>
3 º:
Tu codigo:
Cita:
<a href="perfil.php?<?=$id?>">Paso variable de sesión por URL</a>
No es necesario enviar por URL el ID, ademas 3 puntos...
a) Seteas el ID por session.
b) Enviar el ID por URL (mas de un usuario) es una mala idea.
c) Estas pasando mal la URL tendria que ser perfil.php?id=<?php echo $id;?>.

4 º:
Seteas $_SESSION['correo'] = $correo.
$correo es una variable enviada por el Usuario, nunca validas y para el colmo estas verificando isset($_SESSION['correo']).

OTRA: si estas en hosting, tenes que verificar si o si, que session_start() sea la linea 1 de cualquier hoja.
__________________
Mono programando!
twitter.com/eguimariano
  #9 (permalink)  
Antiguo 04/04/2012, 06:07
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 2 meses
Puntos: 14
Respuesta: ¿Por que no me da la ID?

Cita:
Iniciado por SirDuque Ver Mensaje
1 º:

Crea un pagina logout.php para limpiar la session y puedas realizar las pruebas correspondientes.

Contenido logout.php:
Código PHP:
<?php
session_start
();
session_unset();
session_destroy();
header('Location: index.php');

?>
2 º:

En la comprobacion del correo (login), llama todos los datos de interes, y agregalos al la variable $_SESSION.

Por ejemplo veo que llamas al nombre apellido y id dos veces. Es mas facil, si en el SELECT incluis todo lo que necesitas y Seteas $_SESSION de la siguiente manera:
Código PHP:
<?php 
$_SESSION 
$row;
?>
3 º:
Tu codigo:

No es necesario enviar por URL el ID, ademas 3 puntos...
a) Seteas el ID por session.
b) Enviar el ID por URL (mas de un usuario) es una mala idea.
c) Estas pasando mal la URL tendria que ser perfil.php?id=<?php echo $id;?>.

4 º:
Seteas $_SESSION['correo'] = $correo.
$correo es una variable enviada por el Usuario, nunca validas y para el colmo estas verificando isset($_SESSION['correo']).

OTRA: si estas en hosting, tenes que verificar si o si, que session_start() sea la linea 1 de cualquier hoja.

Creo que voy a desistir porque haciendo todo eso, continua igual el problema, cambiaré el enfoque de la pregunta, para que cada usuario tenga su propia url sin usar htaccess (ya que mi servidor no me lo permite) como lo tendria que hacer?
Porque veo que el problema anterior tiene una solución demasiado complicada... Gracias por la ayuda a todos y por ser tan amables conmigo, gracias.
  #10 (permalink)  
Antiguo 04/04/2012, 06:09
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 1 mes
Puntos: 89
Respuesta: ¿Por que no me da la ID?

ananda en Aportes tenes muchos LOGINS, es la mejor herramienta. Date una vuelta por aca :http://www.forosdelweb.com/f18/aport...as-php-569025/
__________________
Mono programando!
twitter.com/eguimariano
  #11 (permalink)  
Antiguo 04/04/2012, 06:12
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 2 meses
Puntos: 14
Respuesta: ¿Por que no me da la ID?

Cita:
Iniciado por SirDuque Ver Mensaje
ananda en Aportes tenes muchos LOGINS, es la mejor herramienta. Date una vuelta por aca :http://www.forosdelweb.com/f18/aport...as-php-569025/
El login y el comprueba.php ya lo tengo hecho y te redirige a tu zona de perfil pero el problema es que va a una página común del tipo : www.xxx/perfil.php

y de esa manera, un usuario no puede visitar el perfil de otro usuario ya que si pone /perfil.php le saldra su propio perfil, no sé si se me entiende bien, gracias de todos modos.

EDITO: Igualmente de momento voy a mirar algunos aportes a ver que tal, gracias por el link ;)
  #12 (permalink)  
Antiguo 04/04/2012, 06:15
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 1 mes
Puntos: 89
Respuesta: ¿Por que no me da la ID?

Cita:
Iniciado por ananda Ver Mensaje
El login y el comprueba.php ya lo tengo hecho y te redirige a tu zona de perfil pero el problema es que va a una página común del tipo : www.xxx/perfil.php

y de esa manera, un usuario no puede visitar el perfil de otro usuario ya que si pone /perfil.php le saldra su propio perfil, no sé si se me entiende bien, gracias de todos modos.

EDITO: Igualmente de momento voy a mirar algunos aportes a ver que tal, gracias por el link ;)


Bueno lo que intentas hacer es muy facil, si miraras las correciones que te di, podrias solucionar el problema facilmente.

Segun lei, tenias que logearte dos veces.

SUERTE!
__________________
Mono programando!
twitter.com/eguimariano

Etiquetas: html, mysql, sql, tabla, variables, 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 21:27.