Php 如何使用$\u GET?

Php 如何使用$\u GET?,php,session,get,fetch,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']; ... $que

我有下面的登录脚本,在这里我使用会话

<?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();

将$\u GET superglobal定义为URL字符串的一部分:

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

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

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

$\u GET
变量是通过URL传递的,即
index.php?foo=bar&baz=qux
foo
等于
bar
baz
等于
qux


这些变量不是作为会话的一部分存储在服务器上,而是仅与该请求一起存在。如果要将信息作为会话的一部分存储在服务器上,则应使用
$\u session
,该会话将存在于当前会话中,而不考虑请求。

start.php上的内容?空,空,0,您好,谢谢您的回答。好的,不会显示任何内容。这只是一个空页面。好的,我猜$u GET将通过URL提交。当“id”将被存储到URL中,然后应该显示它我想还是我错了?您是否尝试过手动转到start.php?id=1以查看发生了什么情况?如果它显示“1”,则问题不在start.php中。我还注意到,在调用Header('位置:…')后,您似乎正在进行更多的处理(3个以上的查询)。这不是一个好主意。在发送重定向位置后,您应该做的唯一一件事是退出/退出。即使我手动尝试,也不会显示任何内容。我将查询更改到其他位置,但这无法解决问题。是否正在进行URL重写,例如通过.htaccess?除非您指定[QSA]标志。您好,谢谢您的回答,我完全理解。当$\u GET将通过url传递时,start.php应该能够读取它还是不能读取它?当它存储在url中时,为什么回显短语不会显示id?如果您在重定向中将它通过url传递到
start.php
(看起来您正在尝试这样做),那么是的,它将是可读的,否则就不可读了。我认为通过
$\u GET
变量传递会话ID并没有真正的帮助,尽管您已经将它保存到
$\u会话
中。甚至连$\u POST都没有存储。非常模糊的引用。您是否只是查看了我最近的内容以找到(不正确)的内容批评是因为我指出了你的4个深度嵌套的ifs有多迟钝?我从来没有说过POST是存储的。事实上,我明确地说POST是以与GET相同的方式发送的,每个HTTP请求。嗯?我只是发现答案很模糊。不管你是谁,请纠正它。因为我原来的回复被删除了,我会更准确地转发它-它并不模糊。这很清楚。当有人不同意你的回答时,你不应该去寻找3个月前的帖子来批评他是低效的和糟糕的做法。
echo $_GET['foo']; // bar
echo $_GET['baz']; // 1