PHP+;使用会话重定向
我正在尝试用几种语言制作我的网站。每个页面都包含配置文件,其中检查会话中的变量“lang”。如果它不存在,wi将被重定向到页面。选择后,您将进入之前的页面。但它只适用于Mozilla Firefox。在其他浏览器中,在语言检查之后,我总是会看到这个页面(语言检查)。我做错了什么? 配置文件:PHP+;使用会话重定向,php,session,redirect,Php,Session,Redirect,我正在尝试用几种语言制作我的网站。每个页面都包含配置文件,其中检查会话中的变量“lang”。如果它不存在,wi将被重定向到页面。选择后,您将进入之前的页面。但它只适用于Mozilla Firefox。在其他浏览器中,在语言检查之后,我总是会看到这个页面(语言检查)。我做错了什么? 配置文件: // Here is session start... if (!isset($_SESSION['site_lang'])) { $_SESSION['page_refer'] = "http://"
// Here is session start...
if (!isset($_SESSION['site_lang']))
{
$_SESSION['page_refer'] = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
echo '<meta http-equiv="Refresh" content="0; URL=lang_choose.php">';
exit;
}
else
{
require_once 'languages/'.$lang.'.php';
}
?>
//这里是会话开始。。。
如果(!isset($\u会话['site\u lang']))
{
$\u会话['page\u reference']=“http:/”$\u服务器['SERVER\u NAME']。$\u服务器['REQUEST\u URI'];
回声';
出口
}
其他的
{
需要_once'languages/'.$lang..php';
}
?>
lang_choose.php:
// Session start
@extract($_POST);
if (isset($_POST['lang']))
{
$lang = $_POST['lang']; $lang = replace($lang);
$_SESSION['site_lang'] = $lang;
echo '<meta http-equiv="Refresh" content="0; URL='.$_SESSION['page_refer'].'">';
}
else
{
// Showing form with flags... which returns var 'lang'
}
//会话开始
@摘录(元);;
如果(isset($_POST['lang']))
{
$lang=$_POST['lang'];$lang=replace($lang);
$\会话['site\u lang']=$lang;
回声';
}
其他的
{
//显示带有标志的表单…返回变量“lang”
}
编辑: 如果有
< input type="image" src="img/langs/en.png" width="290" height="200" border="1" name="lang" value="en" />
在表单中,它在其他浏览器中不起作用(mozilla除外)
但如果我使用:
< input type="submit" name="lang" value="en" />
一切都很好。有什么想法吗
谢谢。尝试使用此选项执行重定向:
<?php
header('HTTP/1.1 302 Found');
header('Location: ' . $_SESSION['page_refer']);
// And just in case that doesn't work
echo '<html>',
'<head>',
'<title>Redirect</title>',
'</head>',
'<body>',
'<script type="text/javascript">',
'window.location.href = "' . $_SESSION['page_refer'] . '";',
'</script>',
'<a href="' . $_SESSION['page_refer'] . '">Click here to continue</a>',
'</body>',
'</html>';
?>
尝试使用此选项执行重定向:
<?php
header('HTTP/1.1 302 Found');
header('Location: ' . $_SESSION['page_refer']);
// And just in case that doesn't work
echo '<html>',
'<head>',
'<title>Redirect</title>',
'</head>',
'<body>',
'<script type="text/javascript">',
'window.location.href = "' . $_SESSION['page_refer'] . '";',
'</script>',
'<a href="' . $_SESSION['page_refer'] . '">Click here to continue</a>',
'</body>',
'</html>';
?>
如果设置位置标头不起作用,请尝试javascript重定向:
echo '<script>window.location.href="',$_SESSION['page_refer'],'"</script>';
echo'window.location.href=“”,$”会话['page\u reference'],“;
如果设置位置标头无效,请尝试javascript重定向:
echo '<script>window.location.href="',$_SESSION['page_refer'],'"</script>';
echo'window.location.href=“”,$”会话['page\u reference'],“;
如果您使用标题('location:');基于重定向确保您在之后添加exit()或die(),因为程序将一直运行到最后,有些浏览器甚至可能不接受它,因此有时它可能会致命地危害安全性。如果您使用header('location:');基于重定向确保您在之后添加exit()或die(),因为程序将一直运行到最后,而某些浏览器甚至可能不接受它,因此它有时会致命地危害安全性。我想这与启用/禁用cookie无关?对不起,我对PHP的了解不多,但这让我很难受。别忘了,我在一台电脑上用另一种浏览器进行了测试。只有Firefox可以正常工作。(在所有浏览器中,Cookie都已启用)将content属性更改为等待10秒而不是0秒,然后在页面上查看源代码,以确保“URL=…”部分中的URL正确。嗯,这就像脚本没有获得lang-var…我想这与启用/禁用Cookie无关?对不起,我对PHP的了解不多,但这让我很难受。别忘了,我在一台电脑上用另一种浏览器进行了测试。只有Firefox可以正常工作。(在所有浏览器中,Cookie都已启用)将content属性更改为等待10秒,而不是0秒,然后在页面上查看源代码,以确保“URL=…”部分中的URL是正确的。嗯,这就像脚本没有得到lang-var…我做了一些更改。现在它还将给出一个302头,然后尝试使用JavaScript重定向,最后显示一个链接。如果这不起作用,也许您应该检查PHP错误日志,或者添加ini_集('display_errors','On')代码>到文件的顶部。请注意,ini\u set()
只有在没有解析错误的情况下才能工作。我做了一些更改。现在它还将给出一个302头,然后尝试使用JavaScript重定向,最后显示一个链接。如果这不起作用,也许您应该检查PHP错误日志,或者添加ini_集('display_errors','On')代码>到文件的顶部。请注意,只有在没有解析错误的情况下,ini\u set()
才会起作用。