替代通过URL传递变量信息

mrp*_*atg 1 php mysql

我正在编写一个使用几个不同表的php/mysql应用程序.

表1存储用户信息(名称电子邮件等),表2存储用户窗口小部件,表3存储这些个别窗口小部件的配置.

我现在这样做的方式是,表1有一个自动增量键,我用它来识别特定用户.当他们访问表2时,它会创建一个包含该表自己的密钥ID的行,以及表1中该特定用户的密钥ID"uid".当用户想要为其小部件设置设置时在表3中,它存储我称之为"cxid"或config xid的内容,它是表2中唯一的小部件ID.

这样做的目的是限制哪些用户看到小部件,并且配置显然用于配置目的.

问题是,当我调用个人小部件时,它会传递URL中的uid.这显然是一个安全问题,因为您可以更改它并查看其他人的小部件.但我甚至不想让任何人知道这是怎么做的.有没有办法在不使用URL的脚本之间传递变量,还没有使用表单?

zom*_*bat 5

是的,你可以使用会话.

基本上,您将有关用户的所有必要信息存储到$_SESSION每个页面加载,并在每个页面加载时检索它.

例如,在第一页加载:

session_start();
$_SESSION['uid'] = 123;
Run Code Online (Sandbox Code Playgroud)

默认情况下,用户将收到标识会话的cookie,但不包含其他信息.

在第二页加载时,您可以调用:

session_start();
$x = $_SESSION['uid'];
//$x is now 123
//run a query here!
Run Code Online (Sandbox Code Playgroud)

session_start()将读取用户的cookie,查找会话信息(默认情况下存储在临时文件位置)并填写$_SESSION上次查看时存储的信息.