Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Enlazar a una id después de un login

Estas en el tema de Enlazar a una id después de un login en el foro de PHP en Foros del Web. Buenas! Estoy intentando ponerme serio con mis avances en php. Leyendo sobre crear sistemas de perfiles estoy haciendo ahora algunas cosas por mi cuenta. Lo ...
  #1 (permalink)  
Antiguo 29/03/2016, 15:50
 
Fecha de Ingreso: marzo-2016
Mensajes: 7
Antigüedad: 8 años, 1 mes
Puntos: 0
Enlazar a una id después de un login

Buenas!

Estoy intentando ponerme serio con mis avances en php. Leyendo sobre crear sistemas de perfiles estoy haciendo ahora algunas cosas por mi cuenta.

Lo que intento hacer es enlazar a perfil.php?id=(numero) después de un login.

Código PHP:
    $statement $conexion->prepare('
    SELECT * FROM usuario WHERE username = :username AND password = :password'
);
    
$statement->execute(array(
        
':username' => $username,
        
':password' => $password
    
));
    
    
$resultado $statement->fetch();
    if (
$resultado !== false) {
        
$_SESSION['username'] = $username;
        
header('Location: perfil.php?id=$id['id']'); 
Algo me dice que la última línea es una burrada, por lo menos la parte de id=$id['id']'
Pero por más que busco no veo la forma.

Por otro lado, en perfil.php, tengo esto

Código PHP:
$peticion "SELECT * FROM usuario WHERE id=".$_GET['id']." LIMIT 1";
    
mysqli_query($conexion'SET NAMES "utf8"');
$resultado mysqli_query($conexion$peticion); 
Cuando saco los datos lo hago con un while así:

Código PHP:
while($fila mysqli_fetch_array($resultado)) {
    echo 
"<h2>".$fila['nombre']."</h2>"
Que no se si es la forma correcta, pero me funciona. El caso es que quisiera poder acceder por perfil.php?id=username pero lo hago así y me tira error:

[PHP]
Código PHP:
$peticion "SELECT * FROM usuario WHERE username=".$_GET['id']." LIMIT 1"
Se que serán chorradas, pero tengo google gastado ya

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 29/03/2016, 16:24
 
Fecha de Ingreso: diciembre-2015
Mensajes: 529
Antigüedad: 8 años, 4 meses
Puntos: 39
Respuesta: Enlazar a una id después de un login

Estás en lo cierto.
Código PHP:
Ver original
  1. header('Location: perfil.php?id=$id['id']');

En ningún momento creas a $id. Sería así.

Código PHP:
Ver original
  1. header('Location: perfil.php?id=$resultado['id']');
  #3 (permalink)  
Antiguo 29/03/2016, 16:25
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Enlazar a una id después de un login

y porque no simplemente creas una variable de sesion con ese id y te curas en salud:

Código PHP:
Ver original
  1. $_SESSION['userId'] = $id;
__________________
[email protected]
HITCEL
  #4 (permalink)  
Antiguo 29/03/2016, 16:45
 
Fecha de Ingreso: marzo-2016
Mensajes: 7
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Enlazar a una id después de un login

Gracias por vuestras respuestas.

Realizando el consejo de rodocoyote15, me da el error:
Código:
Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)

Realizando lo que xfxstudios comenta, queda así:

Código PHP:
$resultado $statement->fetch();
    if (
$resultado !== false) {
        
$_SESSION['username'] = $username;
        
$_SESSION['id'] = $id;
        
header("Location: perfil.php?id=$id"); 
Pero se queda vacío, es decir perfil.php?id=

Sigo investigando, aun no manejo del todo bien la lógica, pero creo que igual debo sacar la id en el array, que solo saqué username y password ¿puede ser? aun así me daba error.
  #5 (permalink)  
Antiguo 29/03/2016, 16:46
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Enlazar a una id después de un login

no copies y peques, de donde estas sacando el $id??????
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 30/03/2016, 07:09
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Enlazar a una id después de un login

Creo que tienes serios problemas de conocimientos en los procedimientos... no des por sentado que ya lo comprendiste.. mejor LEETE ESTO.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #7 (permalink)  
Antiguo 30/03/2016, 07:31
 
Fecha de Ingreso: marzo-2016
Mensajes: 7
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Enlazar a una id después de un login

Cita:
Iniciado por loncho_rojas Ver Mensaje
Creo que tienes serios problemas de conocimientos en los procedimientos... no des por sentado que ya lo comprendiste.. mejor [URL="http://php.net/manual/es/mysqli-result.fetch-array.php"]LEETE ESTO[/URL].
No te falta razón, estoy con un videocurso básico y ahora por primera vez estoy trabajando en serio con datos de mysql e intentando cosas que no vienen directamente en los tutoriales.

El caso es que en este videocurso lo hace al estilo $statement->execute(array...etc y antes de otro tutoriales lo hacia de otra forma. Pero como este curso es reciente, pensé que igual era mejor hacerlo así en la actualidad.

Por eso estuve intentando recoger la columna id de la misma forma que recoge el username y password. Por "lógica" lo hice añadiendo un valor más a la cadena, pero debo estar errando en algo.

Código PHP:
    $statement $conexion->prepare('
    SELECT * FROM usuario WHERE username = :username AND password = :password AND id = :id'
);
    
$statement->execute(array(
        
':username' => $username,
        
':password' => $password,
        
':id' => $id
    
)); 
Luego el fetch lo recoge de esta forma:

Código PHP:
 $resultado $statement->fetch(); 
El enlace que me has pasado es justo lo que estaba mirando esta mañana, junto a otros tutoriales de sacar valores de una tabla y almacenarlos a una variable, pero en ninguno lo vi de la forma en la que procede en este videocurso.

Seguiré intentado e investigando un poco más y sino lo hago de la otra forma, era por seguir la misma línea.

Gracias por vuestros comentarios!
  #8 (permalink)  
Antiguo 30/03/2016, 07:45
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Enlazar a una id después de un login

Esta bueno eso de ver varios estilos de programación de una misma cosa. YO me abocaría a lo que dice el manual de PHP, a partir de eso intentar otra cosa... puede que el curso sea de PHP orientado a objetos donde tiene un manejo distinto de datos, y el manual de PHP te muestra algo generico, mas como procedimiento...

Creo que estas en PDO.. asi que sería algo como esto

Código PHP:
Ver original
  1. $sth = $dbh->prepare('SELECT name, colour, calories
  2.                      FROM fruit
  3.                      WHERE calories < ? AND colour = ?');
  4.  
  5. $sth->execute(array(150, 'red'));
  6.  
  7. $red = $sth->fetchAll();

Tambien se podría hacerlo asi cuando tienes un array:
Código PHP:
Ver original
  1. $sql = 'SELECT name, colour, calories
  2.        FROM fruit
  3.        WHERE calories < :calories AND colour = :colour';
  4.  
  5. $sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
  6. $sth->execute(array(':calories' => 150, ':colour' => 'red'));
  7.  
  8. $red = $sth->fetchAll();
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #9 (permalink)  
Antiguo 30/03/2016, 16:07
 
Fecha de Ingreso: marzo-2016
Mensajes: 7
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Enlazar a una id después de un login

Muchas gracias loncho_rojas,

Al final saqué la id por foreach así:

Código PHP:
   $resultado $statement->fetch();
    if (
$resultado !== false) {
        
$_SESSION['username'] = $username;
      
       foreach (
$resultado as $valor){
           
$id $resultado['id'];
           
header("Location: perfil.php?id=$id"); 
Y ha funcionado!! Ha sido probándolo de mil formas que parecían lógicas

Espero que esté bien ese uso
  #10 (permalink)  
Antiguo 30/03/2016, 16:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Enlazar a una id después de un login

De hecho el foreach() es innecesario.

Código PHP:
Ver original
  1. // MAL
  2. foreach ($resultado as $valor){
  3.   $id = $resultado['id'];
  4.   header("Location: perfil.php?id=$id");  
  5. }
  6.  
  7. // BIEN
  8. $id = $resultado['id'];
  9. header("Location: perfil.php?id=$id");
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 30/03/2016, 17:35
 
Fecha de Ingreso: septiembre-2015
Mensajes: 142
Antigüedad: 8 años, 7 meses
Puntos: 13
Respuesta: Enlazar a una id después de un login

tambien lee un poquillo mas sobre esto :

http://php.net/manual/es/pdostatement.fetch.php

y como dijo pateketrueke el foreach en ese caso no , ya que es para loops. suerte!
  #12 (permalink)  
Antiguo 31/03/2016, 08:08
 
Fecha de Ingreso: marzo-2016
Mensajes: 7
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Enlazar a una id después de un login

Ahora lo entiendo mejor, con el fetch ya se recoge, claro no intenté hacerlo sin el foreach.
Gracias por la aclaración y por el enlace, debo tener muy bien planteada la lógica, sino todo será codear a boleo.

Mil gracias a tod@s, se hace más ameno todo jaja

Etiquetas: enlazar, login, mysql, select
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 12:55.