簡體   English   中英

PHP變量范圍通過標頭:位置重定向

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM