来自URL的$ _GET只有一次

时间:2014-06-05 10:58:03

标签: php

假设我有以下网址:

http://test/order?id=263&name=John

一个php文件处理URL,我使用$ _GET从URL获取数据并将其绑定到变量:

<?php
    $id = $_GET['id'];
    $name = $_GET['name'];
?>

现在,用户可以更改URL以及随后的变量值。我希望变量被绑定一次,之后不会发生变化。有没有办法用PHP做到这一点?

3 个答案:

答案 0 :(得分:5)

你实际上可以将它们存储在会话中....

1)在页面的最顶部初始化会话

2)检查会话中的值是否存在以及是否创建它。

此时不会考虑进一步的改变,

<?php
session_start();

if (!isset($_SESSION['user'])) {
     $_SESSION['user'] = [
        'id' => (int) $_GET['id'], //Cast the id to int
        'name' =>urldecode($_GET['name']) //url decode the name
     ];
}

现在您已将数据存储在会话中,您可以使用以下方法调用它:

$ _ SESSION [ '用户'] [ 'ID']

$ _ SESSION [ '用户'] [ '名称']

并且它们永远不会被覆盖,如果你想在每次调用时更新它或者如果已经传递了一些参数就改变它你可以在条件中添加一些选项

if (!isset($_SESSION['user']) && $_GET['updateData') == 1) {
     $_SESSION['user'] = [
        'id' => (int) $_GET['id'], //Cast the id to int
        'name' =>urldecode($_GET['name']) //url decode the name
     ];
}

答案 1 :(得分:1)

<?php
start_session();

if(isset($_SESSION['name'])){
    $name = $_SESSION['name'];
    $id = $_SESSION['id'];
} else {
    $_SESSION['id'] = $_GET['id'];
    $id = $_GET['id'];
    $_SESSION['name'] = $_GET['name'];
    $id = $_GET['name'];
}
?>

你可以尝试这样的事情。

答案 2 :(得分:0)

如果您有长会话(登录/注销),只需将这些变量保存在会话或某个文件中,直到会话关闭。您可以在会话中创建数组,并保留所有这些ID以及会话ID。希望有所帮助