让我首先说我不知道如何制定这个问题,我花了最近两天寻找以下几种方法。
我发送一些使用base64编码的信息如下....
值是:
LómsGruñes
这个值来自输入框
因为我这样做
$ name = htmlentities(($ _POST ['name']),ENT_NOQUOTES,'UTF-8');
$ midn = htmlentities(($ _POST ['midn']),ENT_NOQUOTES,'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óms&midn=Gruñes
// and the I use echo like this:
echo $_GET['name'] . '<br>';
echo $_GET['midn'];
// the output is
L
Gru
即使我把:header('Content-type:text / html; charset = utf-8');在<?php
之后......没有任何事情发生......所以,问题是......我怎样才能将ó
作为一个值或更好的,我怎样才能发送í,ó,ñ, á...等在urldomain.com/file.php?data=íÄÑó中,然后按原样检索并按原样保存并按原样显示...
我不确定这是否有相关信息,数据将保存在DB中,数据库是InnoDB,utf8_general_ci
谢谢你抽出时间......
答案 0 :(得分:0)
首先,如果要解码htmlentities,请尝试html_entity_decode()。 要对网址进行编码,请尝试urlencode()。
来自php.net的例子:
<?php
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';
?>
希望它有所帮助!
答案 1 :(得分:0)
这可能会对你有用。我没有使用htmlentites,而是使用了rawurlencode和rawurldecode函数。
下面是相同的代码
$ name = rawurlencode('LómsGruñes'); use可以使用//($ _POST ['name']
$mid = rawurlencode('Gruñ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;
答案 2 :(得分:0)
始终使用您正在使用的技术进行转义/编码。
从表单提交中获取UTF-8编码值:
$name = $_POST['name'];
$midn = $_POST['midn'];
将这些输出为HTML:
<p><?php echo htmlspecialchars($name, ENT_COMPAT, 'UTF-8'); ?></p>
将它们嵌入网址:
$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>
这基本上就是你需要做的。始终使用正确的介质函数转义值,不要超出或早于您需要的转义。