我有以下登录脚本,我在那里使用会话。
<?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”中以正确的方式显示。所以有人会那么友好,可以帮助我。谢谢!
答案 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=qux
(foo
等于bar
,baz
等于qux
)。
这些变量不作为会话的一部分存储在服务器上,而是仅存在于该请求中。如果要将信息作为会话的一部分存储在服务器上,则应使用$_SESSION
代替当前会话中的{{1}},无论请求如何。