簡體   English   中英

PHP-如何將長而未轉義的字符串從一頁傳遞到另一頁?

[英]PHP - How to pass a long unescaped string from one page to another?

我想將長字符串傳遞給第二頁。 通常我將短字符串作為變量傳遞

www.example.php?var=something&var2=somethingelse

在這種情況下,我想將較長的句子傳遞到第二頁,而不必用破折號代替所有空白並用逗號和撇號代替。

有沒有一種簡單的方法可以讓我失蹤? 我是否必須重新查詢數據庫?

謝謝

傳遞長值沒有問題,這就是urlencode()函數的作用:

$link = 'www.example.com?longValue=' . urlencode($arbitraryLengthString);

而且您不需要手動對其進行解碼,這是由PHP自動完成的。 但是,如果您打算在許多頁面上使用這是一個非常長的價值,最好將其放入會話中

base 64對其進行編碼,然后在其他頁面收到GET參數時再次解碼

$str = "I'm an obnoxious string, meh meh"
$str = base64_encode($str);

** Echo link **

然后在接收頁面上

$str = base64_decode($_GET['str']);

使用urlencodehttp_build_query 然后無需解碼消息。

base64不是加密,幾乎每個程序員都可以發現它並進行轉換。 您不應以此作為一種安全的從頁面到頁面發送消息的方法。

如果您只希望它不受干擾,則還可以發送字符串的哈希值,並為服務器添加一個秘密鹽。

$salt = 'longsecretconstanttexthere'; 
$url .= '?' . http_build_query(array('text' => $str, 'hash' => md5($str . $salt));

接收結束:

$str = $_GET['text'];
if ($_GET['hash'] !== md5($str . $salt)) {
  //not the original string
}

對於秘密方法,請使用密鑰將文本存儲在$ _SESSION或db中。 將該密鑰發送到下一頁。

根據所討論字符串的長度,您可能需要查看數據庫方法,會話或使用POST發送數據而不是GET。

GET有局限性,通常不意味着傳遞大量數據,如果字符串足夠長,最終可能會遇到字符串被截斷的情況。

使用$ _SESSION數組

暫無
暫無

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

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