簡體   English   中英

PHP 將變量傳遞到下一頁

[英]PHP Pass variable to next page

這看起來很簡單,但我找不到一個好的方法來做到這一點。

在第一頁說我創建了一個變量

$myVariable = "Some text";

該頁面的表單操作是“Page2.php”。 那么在 Page2.php 中,我如何才能訪問該變量? 我知道我可以用會話來做,但我認為這對於一個簡單的字符串來說太多了,我只需要傳遞一個簡單的字符串(文件名)。

我怎樣才能做到這一點?

謝謝!

HTML / HTTP 是無狀態的,換句話說,您在上一頁所做的/看到的,與當前頁面完全無關。 除非您使用諸如會話、cookie 或 GET / POST 變量之類的東西。 會話和 cookie 非常易於使用,會話比 cookie 安全得多。 更安全,但並不完全安全。

會議:

//On page 1
$_SESSION['varname'] = $var_value;

//On page 2
$var_value = $_SESSION['varname'];

記得運行session_start(); 在您嘗試訪問$_SESSION數組之前,以及在將任何輸出發送到瀏覽器之前,在這兩個頁面上的語句。

曲奇餅:

//One page 1
$_COOKIE['varname'] = $var_value;

//On page 2
$var_value = $_COOKIE['varname'];

會話和 cookie 之間的最大區別在於,如果您使用會話,變量的值將存儲在服務器上,如果您使用 cookie,則變量的值將存儲在客戶端。 我想不出有什么好的理由使用 cookie 而不是會話,除非您希望數據在會話之間保持不變,但即便如此,最好還是將它存儲在數據庫中,並根據用戶名或 ID 檢索它。

獲取和發布

您可以在下一頁的鏈接中添加變量:

<a href="page2.php?varname=<?php echo $var_value ?>">Page2</a>

這將創建一個 GET 變量。

另一種方法是在提交到第二頁的表單中包含一個隱藏字段:

<form method="get" action="page2.php">
    <input type="hidden" name="varname" value="var_value">
    <input type="submit">
</form>

然后在第二頁:

//Using GET
$var_value = $_GET['varname'];

//Using POST
$var_value = $_POST['varname'];

//Using GET, POST or COOKIE.
$var_value = $_REQUEST['varname'];

如果您想通過郵寄方式進行post只需更改表單的post方式即可。 兩者都同樣不安全,盡管 GET 更容易被破解。

當我第一次開始用 PHP 編碼時,每個新請求都是一個全新的腳本實例,除了會話數據,這一事實讓我印象深刻。 一旦你習慣了它,雖然它很簡單。

感謝上面的回答。 以上是我的做法,希望對后面的朋友有所幫助。 我希望將注冊號從一個頁面傳遞到另一個頁面,因此regNameregValue

創建您的第一個頁面,將其命名為 set_reg.php

<?php

session_start();

$_SESSION['regName'] = $regValue;

?>

<form method="get" action="get_reg.php">
    <input type="text" name="regName" value="">
    <input type="submit">
</form>

創建您的第二個頁面,將其命名為 get_reg.php

<?php

session_start();

$regValue = $_GET['regName'];

echo "Your registration is: ".$regValue.".";

?>

<p><a href="set_reg.php">Back to set_reg.php</a>

雖然不像上面的答案那么全面,但出於我的目的,這以簡單的方式說明了各種元素之間的關系。

在請求中傳遞數據

您可以將其作為隱藏字段嵌入表單中,也可以將其添加到表單操作 URL

 echo '<input type="hidden" name="myVariable" value="'.
     htmlentities($myVariable).'">';

或者

echo '<form method="POST" action="Page2.php?myVariable='.
    urlencode($myVariable).'">";

請注意,這也說明了在傳遞數據時使用htmlentitiesurlencode

在會話中傳遞數據

如果數據不需要傳遞到客戶端,那么會話可能更合適。 只需在每個頁面的開頭調用session_start() ,您就可以獲取和設置數據到 $_SESSION 數組中。

安全

由於您聲明您的值實際上是一個文件名,因此您需要了解安全后果。 如果文件名是從客戶端到達的,則假定用戶已篡改了該值。 檢查它的有效性! 當用戶將路徑傳遞給重要的系統文件或他們控制的文件時會發生什么? 你的腳本可以用來“探測”服務器上存在或不存在的文件嗎?

由於您顯然剛剛開始,因此值得提醒的是,這適用於到達 $_GET、$_POST 或 $_COOKIE 的任何數據 - 假設您最大的敵人制作了這些數組的內容,並相應地編寫代碼!

在 php 中有三種傳遞值的方法。

  • 郵寄
  • 通過獲取
  • 通過使會話變量

這三種方法用於不同的目的。例如,如果我們想在下一頁接收我們的值,那么我們可以使用“post”($_POST)方法作為:-

$a=$_POST['field-name'];

如果我們需要多個頁面上的變量值,那么我們可以將會話變量用作:-

$a=$_SESSION['field-name];

在使用這個語法創建 SESSION 變量之前,我們首先必須在我們的 php 頁面的最開始添加這個標簽

session_start(); 

GET 方法通常用於在用於接收用戶輸入的同一頁面上打印數據。 其語法如下:

$a=$_GET['field-name'];

POST 方法通常比 GET 消耗更安全,因為當我們使用 Get 方法時,它不能在 URL 欄中顯示數據。如果數據是更敏感的數據,如密碼,那么它可能是 inggeris。

試試這個代碼

使用隱藏字段,我們可以將 php 變量傳遞到另一個頁面

頁面1.php

<?php $myVariable = "Some text";?>
<form method="post" action="page2.php">
 <input type="hidden" name="text" value="<?php echo $myVariable; ?>">
 <button type="submit">Submit</button>
</form>

將 php 變量傳遞給隱藏字段值,以便您可以將此變量訪問到另一個頁面

頁面2.php

<?php
 $text=$_POST['text'];
 echo $text;
?>

會話將是唯一的好方法,您也可以使用 GET/POST 但這可能是不安全的。

**page 1**
<form action="exapmple.php?variable_name=$value" method="POST"> 
    <button>
        <input  type="hidden" name="x">
    </button>
</form>`

第2頁

if(isset($_POST['x'])) {
    $new_value=$_GET['variable_name'];
}

看起來很簡單,但是我找不到找到它的好方法。

在第一頁中說,我創建了一個變量

$myVariable = "Some text";

該頁面的表單操作是“ Page2.php”。 因此,在Page2.php中,如何訪問該變量? 我知道我可以在會話中做到這一點,但是我認為對於一個簡單的字符串來說這太多了,我只需要傳遞一個簡單的字符串(文件名)即可。

我怎樣才能做到這一點?

謝謝!

It works. 發送數據拋出 URL,不帶表單。

$upit = "SELECT * FROM usluga";

            $data = $mysql->query($upit);

            while ($row = mysqli_fetch_object($data)) 
            {
                echo "<a href='"."index.php?tretmanId=$row->tretman_id"."'>$row->naziv</a>";
                echo "<br><br>";
            }

並且您可以使用“$_GET['name from URL']”在目標頁面上獲取此值,如下所示

$TrermanIdFromUrl = $_GET['tretmanId'];

例如,您可以通過在 url 中包含變量來調用您想要的頁面:

header("Location: ../signup.php?newpwd=passwordupdated");

在你的 signup.php 頁面上,你會有

if (isset($_GET['newpwd']) && $_GET['newpwd'] == "passwordupdated") {
        //code here
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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