2014-01-21 35 views
0

獲得值從我開始說我不知道​​如何制定這個問題,我花了最後兩天尋找一些方法來接下來。

我送使用Base64如下編碼的一些信息....
值是:
的LOMGruñes
這個值從一個輸入框來的那
怎麼一回事,因爲我做這個
$名稱= htmlentities(($ _POST ['name']),ENT_NOQUOTES,'UTF-8');
$ midn = htmlentities(($ _POST ['midn']),ENT_NOQUOTES,'UTF-8');
的輸出,這應該是
使用從編碼UTF-8獲取URL的值使用從編碼UTF-8

Lóms Gruñes 

而這正是得到編碼,直到一切都很好,我可以做任何我需要與,在這種情況下,我要對其進行編碼使用Base64

$datas ='&name='. $name .'&midn='. $midn; 
    $bd = base64_encode($datas); 
    // Now lets send that info to another file.. 
    header('Location: other.php?d=$db') ; 

因此該網址會像
domain.com/other.php?d=TCZvYWN1dGU7bXMgR3J1Jm50aWxkZTtlcw==

所以,現在讓解碼,以便它可以保存...

$ds = base64_decode($_GET['d']); 
parse_str($ds, $params); 
$name = htmlentities($params['name'], ENT_NOQUOTES); 
$midn = htmlentities($params['midn'], ENT_NOQUOTES); 

它看起來相當直截了當是不是......但這裏是因爲當我嘗試使用值問題沒有發生......可以說,我只是想呼應它...

echo $name . '<br>'; 
echo $midn; 

我得到的是
大號
格呂
那麼在哪裏?和?
好吧,讓說,我不編碼任何這樣的URL看起來像這樣...

domain.com/other.php?name=L&oacute;ms&midn=Gru&ntilde;es 
// and the I use echo like this: 
echo $_GET['name'] . '<br>'; 
echo $_GET['midn']; 
// the output is 
L 
Gru 

即使我把:標題(「內容類型:text/html的;字符集= UTF- 8' );在<?php之後...什麼也沒有發生...所以,問題...我怎麼能得到&oacute;作爲一個價值或更好,我怎麼能發送í,ó,ñ,á...等等URLdomain.com/file.php?data=íÄÑó並按照原樣保存並按原樣保存。
我不知道這是否有一些相關信息,數據將會被保存在一個數據庫中,數據庫是InnoDB的,utf8_general_ci

感謝您抽出寶貴時間......

+2

'&'用於分隔[* application/x-www-form-urlencoded * encoding]中的名稱/值對(http://www.w3.org/TR/html401/interact/forms.html #h-17.13.4.1),所以'&'在'&oacute;'和'&ntilde;'中標記了以前名稱/值對的結尾。您需要使用'urlencode'正確編碼值(''parse_str'已經解碼了它們)。 – Gumbo

+0

[每個Web開發人員必須知道的URL編碼](http://blog.lunatech.com/2009/02/03/what-every-web-developer-must-know-about-url-encoding),[The偉大的逃避現實(或者:你需要知道如何處理文本中的文本)](http://kunststube.net/escapism/) – deceze

回答

0

始終對您正在使用的技術進行轉義/編碼

爲了從表單提交得到UTF-8編碼的值:

$name = $_POST['name']; 
$midn = $_POST['midn']; 

要輸出那些成HTML:

<p><?php echo htmlspecialchars($name, ENT_COMPAT, 'UTF-8'); ?></p> 

要嵌入它們中的URL:

$url = sprintf('foo.php?name=%s&midn=%s', rawurlencode($name), rawurlencode($midn)); 

// or 

$url = 'foo.php?' . http_build_query(array('name' => $name, 'midn' => $midn)); 

foo.php ,以獲得數值:

$name = $_GET['name']; 
$midn = $_GET['midn']; 

再次,輸出這些到HTML:

<p><?php echo htmlspecialchars($name, ENT_COMPAT, 'UTF-8'); ?></p> 

而這一切基本上你需要做的。始終使用正確的媒介功能轉義數值,不要越過或超過需要的時間越獄。

0

首先,如果要解碼ヶ輛嘗試html_entity_decode()。 對於URL的編碼嘗試urlencode()。

來自php的示例。淨:

<?php 
    $query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar); 
    echo '<a href="mycgi?' . htmlentities($query_string) . '">'; 
?> 

希望它有幫助!

0

可能這會適合你。我用rawurlencode和rawurldecode函數代替使用htmlentites。

下面是相同的代碼

  1. 首先從

$名稱= rawurlencode( '的LOMGruñes')得到的值;使用可以使用//($ _ POST [ '名']

$mid = rawurlencode('Gru&ntilde;es'); and here ($_POST ['midn']) 

然後

echo $datas ='name='. $name .'midn='. $midn; 
    $en = base64_encode($datas); 

追加該旁邊的網址。然後得到的價值和使用功能BASE64_DECODE解碼它

$dd = base64_decode($en); 
parse_str($dd); 
echo $name; 
echo $midn;