我有以下代码,用于放置会话代码" 3888"这样当用户在没有会话代码的情况下浏览到URL时,它们就会被重定向。如果他们在URL中有代码,则页面继续加载。
问题是代码在输出javascript变量时将我的URL空间更改为+符号: 例: 这个 http://localhost/testing/testingvar.php?region=South AFrica& brand = samsung& model = S 5 更改为: http://localhost/testing/testingvar.php?region=South%20AFrica&brand=samsung&model=S%205&mine=3888
所以现在var
<?php
session_start();
$self = "{$_SERVER['PHP_SELF']}?{$_SERVER['QUERY_STRING']}";
if(!empty($_GET['mine']) && $_GET['mine'] == "3888" ) {
unset($_GET['mine']);
$qs = http_build_query($_GET);
$self = "{$_SERVER['PHP_SELF']}?{$qs}";
$_SESSION['mine'] = 1;
header("Location: $self");
exit;
} elseif (!isset($_SESSION['mine'])) {
header('Location: http://redirectedpage.com');
exit;
}
session_unset();
session_destroy();
session_write_close();
?>
打印为South + Africa,而不是南非。
无论如何解码URL以保留空格?
这是PHP代码:
<script>
function getURLParameter(name){return decodeURI( (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1] || '' );}</script>
我已将此作为javascript代码:
{{1}}
这似乎无法修复它...我可以在PHP代码中使用urldecode()吗?如果没有PHP代码,我的所有变量都会被完美地解释。
答案 0 :(得分:0)
您可以使用JS的replace()
函数:
var region = region.replace("+", "%20");
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace的更多信息。
答案 1 :(得分:0)
我找到了解决方案:
$ self = str_replace(&#34; +&#34;,&#34;&#34;,$ self);