PHP - insertar el id de la session

   
Vista:
Imágen de perfil de Jesus

insertar el id de la session

Publicado por Jesus serviciosdpc@gmail.com (12 intervenciones) el 20/02/2015 20:28:17
Buenas Tardes, amigos estoy diseñando un sistema que incluyen sesiones, trabaja de la siguiente forma: es un sistema de registro de clientes a una caja de ahorro, y servicios funerarios, tengo tres perfiles usuario administrador, usuario que pertenece al personal y el standar. El admin odvio tiene acceso a todo, el personal solo no puede registrar usuarios y el standar puede crear solamente registros mas no consultar ni eliminar, yo uso el admin y todo funciona bien lo que yo quiero es que cuando se crea un registro de los datos del cliente inserte automaticamente en la db (mysql) el id del usuario quien fue el creador de ese registro. realice la tabla relacional id pk de la tabla usuarios al fk de la tabla ahorro y funciona donde no me toma los datos es en php. he intentado de todo pero la verdad no consigo.

ahorro.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ahorro de Socios</title>
</head>
 
<body>
<?php
 
include"conexion.php";
include"conector.php";
 
error_reporting(E_ALL ^ E_NOTICE);
 
$id_usuarios = $_POST['id_usuarios'];
$cuenta = $_POST['cuenta'];
$cooperativa = $_POST['cooperativa'];
$fecha_expiracion = $_POST['fecha_expiracion'];
$fecha_pago = $_POST['fecha_pago'];
$deposito = $_POST['deposito'];
$retiro =  $_POST['retiro'];
$id_registro = $_POST['id_registro'];
 
$sql = ("SELECT id, id_usuarios FROM usuarios u INNER JOIN ahorro a WHERE u.id=a.id_usuarios",$conectar);
 
mysql_query("INSERT INTO ahorro (id_usuarios, cuenta, cooperativa, fecha_expiracion, fecha_pago, deposito, retiro, id_registro) VALUES ('$id_usuarios','$cuenta','$cooperativa','$fecha_expiracion','$fecha_pago','$deposito','$retiro','$id_registro')" ,$conectar);
 
$consulta=('SELECT   id_registro, nombre, apellido FROM registro ORDER BY nombre asc');
$result=mysql_query($consulta);
 
?>

admin_user.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
session_start();
if(!isset($_SESSION['login'])){
  header('Location:../login.html');
}else{
 
}
?>
 
<title>Inicio | Administrador</title>
</head>
<link href="estilo/estilo_usuarios.css" rel="stylesheet" type="text/css"/>
<div id="contenedor">
    <div id="cuerpo">
        <h3>Bienvenido <?php echo $_SESSION["nombre"]." ".$_SESSION["apaterno"]; ?>
        </br>Tu Nivel de Usuario es Administrador</h3>
 
    <body>
        <div id="lateral">
            <ul>
 
                <li><a href="ahorro.php">Ahorro</a></li>
 
            </ul>
        </div>
            <div id="principal">
 
            </div>
                <div id="pie">
                    © 2015 Jesus Duran
                </div>
    </div>
</div>
</body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

insertar el id de la session

Publicado por MMan (59 intervenciones) el 20/02/2015 20:56:11
... creo que los datos de usuario lo obtienes del login.php


<h3>Bienvenido <?php echo $_SESSION["nombre"]." ".$_SESSION["apaterno"]; ?>


al igual que esos datos... guardas el ID de usuario

$_SESSION["usuario_ID"] = usuarios. u.id

entonces cuando quieras grabar tus registros con el id del usuario pues lo agregas desde la session


INSERT INTO ahorro (id_usuarios, ......) VALUES ('$_SESSION("usuario_ID"), .....

--------

y DEBERIAS "sanear" las variables antes de insertarlas en una instruccion SQL para q no te hagan inyeccion sql
-------------

no se si a eso te refieres..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jesus

insertar el id de la session

Publicado por Jesus (12 intervenciones) el 20/02/2015 21:29:06
Hola MMan, Gracias por tu respuesta lo pondre a prueba y estare informando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jesus

insertar el id de la session

Publicado por Jesus (12 intervenciones) el 23/02/2015 00:57:19
hola MMan sabes que realice lo que me dijiste pero al insertar y verificar la base de datos no me guarda ningún registro lo realice de esta forma.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
session_id();
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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ahorro de Socios</title>
</head>
 
<body>
<?php
 
include"conexion.php";
include"conector.php";
// este codigo funciona para imprimir todos los datos de la session iniciada print_r($_SESSION); 
 
error_reporting(E_ALL ^ E_NOTICE);
$_SESSION['usuarios.id'] = $_POST['id_usuarios'];
$cuenta = $_POST['cuenta'];
$cooperativa = $_POST['cooperativa'];
$fecha_expiracion = $_POST['fecha_expiracion'];
$fecha_pago = $_POST['fecha_pago'];
$deposito = $_POST['deposito'];
$retiro =  $_POST['retiro'];
 
$query3 = sprintf("SELECT * FROM usuarios,ahorro WHERE usuarios.id=ahorro.id_usuarios");
 
mysql_query("INSERT INTO ahorro (id_usuarios, cuenta, cooperativa, fecha_expiracion, fecha_pago, deposito, retiro, id_registro) VALUES ('$_SESSION('usuarios.id')','$cuenta','$cooperativa','$fecha_expiracion','$fecha_pago','$deposito','$retiro','$id_registro')" ,$conectar);
 
$consulta=('SELECT   id_registro, nombre, apellido FROM registro ORDER BY nombre asc');
$result=mysql_query($consulta);
 
?>

De antemano muchas gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

insertar el id de la session

Publicado por MMan (59 intervenciones) el 23/02/2015 17:12:46
.. tienes algun modulo de ingreso al sistema ?? ( login.php o algo asi? )

si es asi.... (creo yo que ) el id_usuarios deberias MANEJARLO INTERNAMENTE desde el login.php lo guardas en una session y NO a traves de un formulario de datos como...

$_SESSION['usuarios.id'] = $_POST['id_usuarios'];
---------

otra cosa es que... deberias SANEAR las variables antes de meterlas en una sentencia sql para evitar que te hackeen (inyeccion sql )

aca ejemplos

1
2
3
4
5
6
7
8
$consulta = sprintf("SELECT nombre, apellido, direccion, edad FROM amigos
    WHERE nombre='%s' AND apellido='%s'",
    mysql_real_escape_string($nombre),
    mysql_real_escape_string($apellido));
 
// Ejecutar la consulta
$resultado = mysql_query($consulta);
.....

----------------
dices : "al insertar y verificar la base de datos no me guarda ningún registro"

pero en tu codigo veo que...

INSERT INTO ahorro
SELECT id_registro, nombre, apellido FROM registro

insertas en la tabla ahorros.. y verificas que los datos esten guardados en registro ?
obviamente no los vas a encontrar
--------------------
si estas usando php 5 o posterior con mysql 4.1 o superior... deberias usar mysqli (que es una version mejorada)

http://php.net/manual/en/mysqli.overview.php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jesus

insertar el id de la session

Publicado por jesus (12 intervenciones) el 23/02/2015 17:42:23
Hola MMan gracias por el consejo de sanear las variables la lo pongo a prueba, con respecto a lo del select es una consulta desplegable que me trae el nombre y apellido del cliente desde otra tabla que desea pertenecer a la caja de ahorro y si tengo un formulario de login.php pero el id de la session lo guarde en otro formulario que es el que procesa el login de cada usuario y lo envia a su nivel de usuario correspondiente aqui esta el codigo voy a poner a prueba lo q me dijiste y muchas gracias por brindarme tu tiempo y apoyo.

procesa_login.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
 
 
session_start();
if(!isset($_SESSION['login']) && ($_POST['pass'])){
  header('Location:../login.html');
}else{
 
}
 
 
 
error_reporting(E_ALL ^ E_NOTICE);
 
 
include dirname(dirname(__FILE__))."/config.php";
 
$link=Conectarse();
 
$login = $_POST['login'];
 
$pass = $_POST['pass'];
 
$pass=sha1(md5($pass));
 
$query = sprintf("SELECT usuarios.id,
 
usuarios.login,
 
usuarios.nombre,
 
usuarios.apaterno,
 
usuarios.amaterno,
 
usuarios.email,
 
usuarios.id_nivel
 
FROM usuarios WHERE usuarios.login='%s'&& usuarios.password = '%s'",
 
$login, $pass);
 
$result=mysql_query($query,$link);
 
if(mysql_num_rows($result)){
 
$array=mysql_fetch_array($result);
 
$_SESSION["id_usuario"]= $array["id"];
 
$_SESSION["login"]= $array["login"];
 
$_SESSION["nombre"]= $array["nombre"];
 
$_SESSION["apaterno"]= $array["apaterno"];
 
$_SESSION["amaterno"]= $array["amaterno"];
 
$_SESSION["email"]= $array["email"];
 
$_SESSION["id_nivel"]= $array["id_nivel"];
 
$id_nivel = $array['id_nivel'];
$nombre = $array['nombre'];
 
 
$query2 = sprintf("SELECT * FROM usuarios,nivel WHERE usuarios.id_nivel=nivel.id_nivel");
 
 
if($id_nivel  == 1){
   $id_nivel == "Administrador";
    header("Location:/cooperativa/admin/user_admin.php");
}elseif($id_nivel == 2){
    $id_nivel == "Personal";
    header("Location:/cooperativa/admin/user_personal.php");
}elseif($id_nivel == 3){
    $id_nivel == "Standar";
    header("Location:/proyecto1/admin/user_standard.php");
}
}
 
 
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jesus

insertar el id de la session

Publicado por Jesus (12 intervenciones) el 24/02/2015 15:19:12
Hola MMan siguiendo tus consejos ya lo realice y no me habia dado cuenta y borre el id_registro por eso no me estaba guardando los datos y lo de sanear las variables es lo proximo que voy a hacer muchas gracias por tu ayuda amigo.

1
2
3
4
5
6
7
8
<?php
session_start();
 
$id_usuarios = $_SESSION['id'];
 
mysql_query("INSERT INTO ahorro (id_usuarios) VALUES ('".$_SESSION['id']."')",$conectar);
 
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar