[英]PHP variable scope through a header:location redirect
使用header: location
重定向時,如何與該重定向一起傳遞變量?
例如,我在函數中的$username
中存儲了一個值。
部分功能:
if(register($email_address, $username, $password) === true){
// Sends an email
send_email($email_address);
// Reroute to success page
$succeeded = true;
header('Location: register-success.php');
}
然后在register-success.php
我希望將用戶名輸出到頁面上:
<?php
echo $username;
?>
但是,當我這樣做時,我沒有收到錯誤,只是echo
所在的空白缺失變量輸出。
if(register($email_address, $username, $password) === true){
// Sends an email
send_email($email_address);
// Reroute to success page
$succeeded = true;
header("Location: register-success.php?username=$username"); //<--- Here
exit; //<-- Add this too
}
並在您的register-success.php
頁面上。
<?php
echo $_GET['username'];
?>
嘗試使用會話變量。 在您的第一個腳本中添加
session_start();
到頁面頂部。
以及需要使用會話變量的所有其他頁面的頂部。
然后,您可以設置$_SESSION['username']
。 這些將可用於同一會話中的每個腳本,例如直到用戶關閉其瀏覽器。
與使用$_GET
,這樣做的好處是它對瀏覽器是透明的,因此更加安全。
如果您希望我發布有關此信息(或與此相關的任何其他信息)的更多信息,我很樂意這樣做。
最簡單的方法是使用GET請求:
header('Location: register-success.php?username='.$username);
然后,您可以使用超全局$_GET['username']
檢索變量
例如 (在您的register-success.php中)
$username = $_GET['username'];
echo $username;
我知道,根據您的其他問題,您會變得瘋狂。 那么,為什么不在這里使用會話呢? 例如,我知道您的注冊頁面使用SESSION['status']['register']['error']
所以為什么不使用SESSION['values']['username']
之類的東西呢?防止有人暫停您的請求,切換用戶名,然后顯示其他用戶名,並可能(取決於代碼的結構)顯示其他配置文件。
然后,您只需要構建注冊成功頁面,如下所示:
<?php
session_start();
echo $_SESSION['values']['username'];
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.