Foros del Web » Programando para Internet » PHP »

Propagación de sesión y almacenamiento de dato en id de usuario que se propaga.

Estas en el tema de Propagación de sesión y almacenamiento de dato en id de usuario que se propaga. en el foro de PHP en Foros del Web. Saludos amigos/as, les comento lo que estoy realizando: - Tengo un sistema de login y tras acceder con su usuario y contraseña, el usuario va ...
  #1 (permalink)  
Antiguo 20/09/2015, 11:49
 
Fecha de Ingreso: septiembre-2013
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Propagación de sesión y almacenamiento de dato en id de usuario que se propaga.

Saludos amigos/as, les comento lo que estoy realizando:

- Tengo un sistema de login y tras acceder con su usuario y contraseña, el usuario va accediendo a una serie de enlaces. (Los datos de los usuarios están almacenados en una tabla de phpmyadmin denominada "TABLA A" con una clave primaria que es id_usuario).

- El caso es que quiero que el id_usuario se propague cada vez que el usuario pincha en un link de la web. Para ello, a la vez que se compara el nombre de usuario y la contraseña, realizo una consulta para extraer el id_usuario, tal y como muestro a continuación:


Código PHP:

 <?php

ob_start
();
$host "localhost"// Host name 
$username "root"// Mysql username 
$password ""// Mysql password 
$db_name "DB1"// Database name 
$tbl_name "datos_usuarios"// Table name 

// Connect to server and select databse.
mysql_connect("$host""$username""$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword 
$nombreusuario=$_POST['nombreusuario']; 
$contrasena=$_POST['contrasena']; 

// To protect MySQL injection (more detail about MySQL injection)
$nombreusuario stripslashes($nombreusuario);
$contrasena stripslashes($contrasena);
$nombreusuario mysql_real_escape_string($nombreusuario);
$contrasena mysql_real_escape_string($contrasena);
$sql="SELECT * FROM datos_usuarios WHERE nombreusuario='$nombreusuario'and contrasena='$contrasena'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count mysql_num_rows ($result);
$row mysql_fetch_assoc($result);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

// Register $myusername, $mypassword and redirect to file "login_success.php"
$nombreusuario $_SESSION["nombreusuario"];
$contraseña $_SESSION["contrasena"];
$_SESSION['id_usuario'] = $row ['id_usuario'];
header("location:login_success.php");
}
else {
echo 
"Wrong Username or Password";
}
ob_end_flush();
?>
Mis dudas son:

1. ¿Cómo propago el id_usuario a través de los distintos links? He mirado manuales y sé que es con SESIÓN_START pero no lo tengo muy claro, no sé si sería algo así al comienzo de cada enlace (POR FAVOR CORREGÍDMELO)

Código PHP:
<?php session_start();
   
$id_usuario $_SESSION['id_usuario'];
?>
- En el checklogin, introduciría tb este código de sesión star?

2. En un enlace, el usuario tiene que completar un form y los datos/registros introducidos van a una tabla llamada TABLA "B", donde sus campos son:

id_usuario (que se propaga) - Nuevo valor 1 - Nuevo valor 2

El caso es que no me queda claro como hago para que esa id_usuario que se propaga se me almacene tb en esa tabla.


A ver si me pueden echar una mano gracias! espero que me hayan comprendido lo que quiero hacer.
  #2 (permalink)  
Antiguo 20/09/2015, 15:31
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 4 años, 9 meses
Puntos: 263
Respuesta: Propagación de sesión y almacenamiento de dato en id de usuario que se pro

no entendi ni papas amigo, el asunto es que las variables de sesion las asignas al momento de que ingresan a tu aplicación, y las puedes utilizar en cualquier parte del documento mientras la sesion este activa, algo asi:

Código PHP:
Ver original
  1. //inserto la id en una tabla
  2. $insert = $db->query("INSERT INTO tabla (dato1, dato2, dato3) VALUES ('$_session[id_usuario]' , '$dato2' , '$dato3'");
  3.  
  4. //muestro el nombre en un campo
  5. echo $_session['nombre''];
  6.  
  7. //realizo una busqueda
  8. $bus = $db->query("SELECT * FROM clientes WHERE id = '$_session[idusuario]'");
es decir no tienes que propagarlas mediante url porque ellas estan activas en tu sitio mientras estas conectado, asi que no veo el dolor de cabeza en esto
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 21/09/2015, 10:35
 
Fecha de Ingreso: septiembre-2013
Mensajes: 76
Antigüedad: 6 años, 6 meses
Puntos: 0
Respuesta: Propagación de sesión y almacenamiento de dato en id de usuario que se pro

Para que m entiendas mejor; tengo 4 enlaces:

index - login - checklogin (esta página lo la ve el usuario) - enlace tras login success - ejercicio 1

En las páginas de "enlace tras login success" y en ejercicio 1, si propago la sesión usando este código:

Código PHP:

<?php session_start();
    If isset(
$_SESSION ['id_usuario'])
    {
    
$id   $_SESSION ['id_usuario'];
    
    }
    else
    {
    echo 
"no se ha hecho login para entrar."
    
}; 
?>

Me da este error:

Parse error: syntax error, unexpected 'isset' (T_ISSET), expecting '(' in C:\xampp\htdocs\login_successconestilo.php on line 4


Si por el contrario uso esta otra forma:

Código PHP:

<?php
session_start
();
$id_usuario $_SESSION['id_usuario']; 
?>

Obtengo este error:
Notice: Undefined index: id_usuario in C:\xampp\htdocs\sesionstar.php on line 2



POR LO TANTO NO SÉ SI MI ERROR ESTA EN LA FORMA DE PROPAGAR EL id_usuario en session_start y/o también en la página de checklogin donde tras enviar el usuario el nombre de usuario y la contraseña, realizo una consulta de manera simultánea a la base de datos para traer el id_usuario y almacenarlo, para propagarlo en todas las páginas; lo adjunto aquí:

Código PHP:

<?php

ob_start
();
$host "localhost"// Host name 
$username "root"// Mysql username 
$password ""// Mysql password 
$db_name "db1"// Database name 
$tbl_name "datos_usuarios"// Table name 

// Connect to server and select databse.
mysql_connect("$host""$username""$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword 
$nombreusuario=$_POST['nombreusuario']; 
$contrasena=$_POST['contrasena']; 

// To protect MySQL injection (more detail about MySQL injection)
$nombreusuario stripslashes($nombreusuario);
$contrasena stripslashes($contrasena);
$nombreusuario mysql_real_escape_string($nombreusuario);
$contrasena mysql_real_escape_string($contrasena);
$sql="SELECT * FROM datos_usuarios WHERE Nombreusuario='$nombreusuario'and contrasena='$contrasena'";
$id_usuario="SELECT id_usuario FROM datos_usuarios WHERE Nombreusuario='$nombreusuario'and contrasena='$contrasena'";



$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count mysql_num_rows ($result);
$row mysql_fetch_assoc($result);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

// Register $myusername, $mypassword and redirect to file "login_success.php"
$nombreusuario $_SESSION["nombreusuario"];
$contrasena $_SESSION["contrasena"];
$_SESSION['id_usuario'] = $row['id_usuario'];

header("location:login_successconestilo.php");
}
else {
echo 
"Wrong Username or Password";
}
ob_end_flush();
?>

Etiquetas: almacenamiento, dato, mysql, registro, select, sesión, sql, tabla, usuario, 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:20.