php - 通过 URL 传递变量信息的替代方法

标签 php mysql

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

表 1 存储用户信息(姓名电子邮件等),表 2 存储用户小部件,表 3 存储这些单独小部件的配置。

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

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

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

最佳答案

是的,您可以使用 sessions .

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

例如,在第一个页面加载时:

session_start();
$_SESSION['uid'] = 123;

默认情况下,用户会收到一个识别 session 的 cookie,但不包含其他信息。

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

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

session_start()将读取用户的 cookie,找到 session 信息(默认情况下存储在临时文件位置)并使用您上次看到它们时存储的信息填充 $_SESSION

关于php - 通过 URL 传递变量信息的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1183556/

相关文章:

php - 如何使用 AJAX (jQuery) 下载从 TCPDF (PHP) 生成的 PDF 文件?

带有发起者 ip 的 php curl post

javascript - Jquery Bootstrap 在点击时显示和隐藏跨度

mysql - 如何获取每组倒数第二条记录?

MySQL 未知列 'password_last_changed'

PHP 使用 LEFT JOIN 时如何按结果数组进行分组

php - Microsoft 使用 PHP 和 PDO Access

php - SQL 语法错误 ZF1

mysql - 如何从特殊记录中查找最后记录的计数

mysql - mysql 中超过 2500 个表