2009-07-01 3 views
0

Я пытаюсь сделать свой сайт на нескольких языках. Каждая страница содержит конфигурационный файл, который проверяет переменную «lang» в сеансе. Если он не существует, он будет перенаправлен на страницу выбора языка. Выбрав u'll, приходите на страницу раньше. Но он работает только в Mozilla Firefox. В другом браузере после проверки языка я всегда получаю эту страницу (проверка lang). Что я сделал не так? Config-файл:PHP + перенаправление с сеансами

// 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'; 
} 
?> 

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' 
    } 

EDIT: Если

< input type="image" src="img/langs/en.png" width="290" height="200" border="1" name="lang" value="en" /> 

в форме он не работает в другой браузеры (кроме мозиллы) , но если я использую:

< input type="submit" name="lang" value="en" /> 

Все хорошо. Есть идеи?

Спасибо.

+3

Я полагаю, что это не связано с включением/отключением куки-файлов? Извините, я действительно не знаю, что много PHP, но это уже укусило меня. –

+0

и не забывайте, что я тестировал на одном компьютере с другими браузерами. Только Firefox работает нормально. (во всех браузерах разрешены файлы cookie) – Ockonal

+0

Изменить атрибут контента, чтобы подождать 10 секунд вместо 0, затем создать источник просмотра на странице, чтобы убедиться, что URL-адрес в URL-адресе верен. –

ответ

6

Попробуйте использовать эту функцию, чтобы выполнить переадресацию:

<?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>'; 
?> 

отметить также, что использование <meta> тега Перенаправление discouraged by the W3C.

+0

это не помогает = ( – Ockonal

+0

Я внес некоторые изменения. Теперь он также даст заголовок 302, затем попытается перенаправить с помощью JavaScript и, наконец, отобразит Если это не сработает, возможно, вы должны проверить свой журнал ошибок PHP или добавить 'ini_set ('display_errors', 'On');' в начало файла. Обратите внимание, что 'ini_set()' будет работать только если нет ошибок синтаксического анализа. –

0

Попробуйте Javascript перенаправления, если установка заголовок местоположения не работает:

echo '<script>window.location.href="',$_SESSION['page_refer'],'"</script>'; 
0

Если использовать заголовок («местоположение:»); основанные на переадресации делают уверенным, что вы добавите exit() или die() после того, как программа продолжит работать до конца, а некоторые браузеры могут даже не принять ее, чтобы она могла смертельно угрожать безопасности в некоторых случаях.

Смежные вопросы