如何使用$ _GET?

时间:2012-03-15 17:50:49

标签: php session get fetch

我有以下登录脚本,我在那里使用会话。

<?php
session_start();
if(isset($_SESSION['logged_in'])){
    $id = $_SESSION['id'];
    header("Location: start.php?id=$id");
    exit();
}

if(isset($_POST['submit'])){

    $x1 = $_POST['x1'];
    $x2 = $_POST['x2'];
...
$query = $db->query("SELECT * FROM table WHERE x1='".$x1."' AND x2='".$x2."'");
        if($query->num_rows === 1){

            $row = $query->fetch_object();
            $id = $row->id;

                        $_SESSION['logged_in'] = true;
            $_SESSION['id'] = $id;
            header("Location: start.php?id=$id");

                        3more queries
                        exit();

start.php将只是:

<?php
echo $_GET['id'];
?>

我认为$ _GET ['id']将存储在服务器上,以便显示$ _GET。 fetch_object正在运行。我知道,因为它将在浏览器的“id = $ id”中以正确的方式显示。所以有人会那么友好,可以帮助我。谢谢!

2 个答案:

答案 0 :(得分:5)

$ _GET超全局被定义为URL字符串的一部分:

http://example.org/index.php?foo=bar&baz=1

在index.php中:

echo $_GET['foo']; // bar
echo $_GET['baz']; // 1

因此$ _GET不会存储在服务器上,而是与每个HTTP请求一起传递,就像$ _POST一样,但它会在HTTP标头中传递,而不是简单地附加到URL的末尾。

答案 1 :(得分:2)

$_GET个变量是通过网址传递的变量,即index.php?foo=bar&baz=quxfoo等于barbaz等于qux)。

这些变量不作为会话的一部分存储在服务器上,而是仅存在于该请求中。如果要将信息作为会话的一部分存储在服务器上,则应使用$_SESSION代替当前会话中的{{1}},无论请求如何。