php 变量 - 将变量传递到另一个 php 页面的最佳方式
php variables - best way to pass variables over to another php page
所以我知道这两种跨 php 页面传递变量的常用方法。
1。 PHP 会话数
我知道 $_SESSION
是一个 php 全局变量,可以在浏览器会话期间跨 php 个页面保存变量。
它运行良好,但我担心的是,如果用户出于某种原因决定键入页面的 url 或进入他们的历史记录并访问 url 页面网站,则可能未设置 $_SESSION 变量,如果它期望用户从集合 route/path.
到达此页面
此外,如果用户进入另一个页面,并且该页面将已定义的 $_SESSION 设置为另一个值,然后决定返回上一个页面,则该页面的 $_SESSION 变量不正确,导致很多错误。
2。 URL通过
这是我认为最可靠的。我对此唯一担心的是,页面可能因长 URL 变得相当混乱。
page1.php?postId={variable goes here}
传递 4,5 或 6 个变量可能会有点混乱,我还需要对它们进行编码或加密。 URL 可能会变得相当长,我不确定我对跨 URL.
传递变量的感觉如何
我的问题:
将变量从一个 php 页面传递到另一个页面的最佳方法是什么。以上两种方法是最好的解决方法,还是我的另一种有效方法。另外,如果效率不是问题,那么什么是最安全的 procedure/method.
感谢您的宝贵时间。
这在很大程度上取决于您要做什么? $_SESSION
变量和 $_GET
变量在 Web 编程中的用途大不相同(尽管,是的,您可以强制在两者之间进行一些调整)。
你需要问自己的问题是“是存储用户信息的变量还是指示网络服务器做某事的变量”如果是前者则使用$_SESSION
如果是后者那么$_GET
.
例如,您不会希望将 loggedon=true
作为 GET
变量传递(忽略安全隐患),因为您必须更新 每个 link 在页面 上附加查询字符串,如您所说,这会导致一些不整洁 URLs。
会话
最常用于存储有关用户的信息。一些例子:
- 登录状态
- 购物篮
- 会话首选项
例如,当用户成功登录时,您需要通过某种方式在页面加载之间记住这一点:
session_start();
$_SESSION["loggedon"] = true;
在每个后续页面请求中,您可以检查:
session_start();
if(!$_SESSION["loggedon"] ?? null){
echo "ERROR: You shouldn't be here!";
exit;
}
请注意,$_SESSION
只能由服务器访问,不能被网站用户直接访问,并且在会话关闭之前一直存在。
GET
另一方面,随每个请求一起发送,通常在您要将 非敏感 信息从用户传递到网络服务器时使用。一些例子:
- 语言偏好
- 用户输入(例如使用搜索引擎时的搜索查询)
- 忘记密码安全代码
假设您有一个烹饪网站和 1000 个食谱。您可能只有一页来显示食谱并在 URL 中传递一个 GET
变量以指示应加载哪个食谱
http://www.mycookingwebsite.com/recipe.php?recipeid=477
请注意,GET
请求对用户可见,可以修改,并显示在历史记录等中。
N.B. 不要将 敏感的 详细信息(例如 username/password)传递给 GET
- 尤其是因为它们会出现在浏览器历史记录中!
您提到将变量从一个页面传递到另一个页面。但是我不太清楚你是说 Server->Server (SESSION
) 还是 Client->Server(GET
)?
这一切结合在一起的一个例子是购物车:
在后端,您有一个数组存储在您的会话中,其中包含购物车中的商品,这在整个会话中都是持久的。在客户端,您可以发送 GET
(大多数人可能会 POST
)请求来告知服务器您要添加到列表中的新产品。
如果您最关心的是用户可能 发现自己处于错误的“阶段”,那么我建议进行一些检查以确保他们处于正确的位置正确的时间。
例如给定一个有 10 个问题的测验...如果用户单击 link 将他们放到第 5 个问题,您检查他们是否已经回答了第 1-4 个问题,然后采取适当的行动取决于答案。
所以我知道这两种跨 php 页面传递变量的常用方法。
1。 PHP 会话数
我知道 $_SESSION
是一个 php 全局变量,可以在浏览器会话期间跨 php 个页面保存变量。
它运行良好,但我担心的是,如果用户出于某种原因决定键入页面的 url 或进入他们的历史记录并访问 url 页面网站,则可能未设置 $_SESSION 变量,如果它期望用户从集合 route/path.
到达此页面此外,如果用户进入另一个页面,并且该页面将已定义的 $_SESSION 设置为另一个值,然后决定返回上一个页面,则该页面的 $_SESSION 变量不正确,导致很多错误。
2。 URL通过
这是我认为最可靠的。我对此唯一担心的是,页面可能因长 URL 变得相当混乱。
page1.php?postId={variable goes here}
传递 4,5 或 6 个变量可能会有点混乱,我还需要对它们进行编码或加密。 URL 可能会变得相当长,我不确定我对跨 URL.
传递变量的感觉如何我的问题:
将变量从一个 php 页面传递到另一个页面的最佳方法是什么。以上两种方法是最好的解决方法,还是我的另一种有效方法。另外,如果效率不是问题,那么什么是最安全的 procedure/method.
感谢您的宝贵时间。
这在很大程度上取决于您要做什么? $_SESSION
变量和 $_GET
变量在 Web 编程中的用途大不相同(尽管,是的,您可以强制在两者之间进行一些调整)。
你需要问自己的问题是“是存储用户信息的变量还是指示网络服务器做某事的变量”如果是前者则使用$_SESSION
如果是后者那么$_GET
.
例如,您不会希望将 loggedon=true
作为 GET
变量传递(忽略安全隐患),因为您必须更新 每个 link 在页面 上附加查询字符串,如您所说,这会导致一些不整洁 URLs。
会话
最常用于存储有关用户的信息。一些例子:
- 登录状态
- 购物篮
- 会话首选项
例如,当用户成功登录时,您需要通过某种方式在页面加载之间记住这一点:
session_start();
$_SESSION["loggedon"] = true;
在每个后续页面请求中,您可以检查:
session_start();
if(!$_SESSION["loggedon"] ?? null){
echo "ERROR: You shouldn't be here!";
exit;
}
请注意,$_SESSION
只能由服务器访问,不能被网站用户直接访问,并且在会话关闭之前一直存在。
GET
另一方面,随每个请求一起发送,通常在您要将 非敏感 信息从用户传递到网络服务器时使用。一些例子:
- 语言偏好
- 用户输入(例如使用搜索引擎时的搜索查询)
- 忘记密码安全代码
假设您有一个烹饪网站和 1000 个食谱。您可能只有一页来显示食谱并在 URL 中传递一个 GET
变量以指示应加载哪个食谱
http://www.mycookingwebsite.com/recipe.php?recipeid=477
请注意,GET
请求对用户可见,可以修改,并显示在历史记录等中。
N.B. 不要将 敏感的 详细信息(例如 username/password)传递给 GET
- 尤其是因为它们会出现在浏览器历史记录中!
您提到将变量从一个页面传递到另一个页面。但是我不太清楚你是说 Server->Server (SESSION
) 还是 Client->Server(GET
)?
这一切结合在一起的一个例子是购物车:
在后端,您有一个数组存储在您的会话中,其中包含购物车中的商品,这在整个会话中都是持久的。在客户端,您可以发送 GET
(大多数人可能会 POST
)请求来告知服务器您要添加到列表中的新产品。
如果您最关心的是用户可能 发现自己处于错误的“阶段”,那么我建议进行一些检查以确保他们处于正确的位置正确的时间。
例如给定一个有 10 个问题的测验...如果用户单击 link 将他们放到第 5 个问题,您检查他们是否已经回答了第 1-4 个问题,然后采取适当的行动取决于答案。