Помощь по изменению языка страницы без изменения текущей страницы (PHP) - PullRequest
2 голосов
/ 25 июля 2010

языковая паутина. Я установил 3 ссылки, Français ... (href = changeLanguage.php? Lang = fr, es, en)

changLanguage.php

session_start();

if(isset($_SESSION['bckTo']) && isset($_GET['lang'])){

    $lang = preg_replace('/[^a-z]/','',trim($_GET['lang']));

    #TODO
    #More vlidation ...

    $full_url = $_SESSION['bckTo']; 
    $full_url = str_replace(array('&lang=en','&lang=es','&lang=fr'),'',$full_url);

header('Location: '.$full_url.'&lang='.$lang.'');
}

$ _ SESSION ['bckTo'] сохраните текущий URL, например: mysite.com/index.php?id=x&n_d=y Проблема заключается в том, что заголовок переводит URL-адрес: mysite.com/index.php?id=x&n_d=y&lang=en.

Любая идея будет оценена

Ответы [ 2 ]

4 голосов
/ 25 июля 2010

Почему бы просто не установить язык в сеансе, а не через GET?Затем вам просто нужно поставить ссылку, чтобы изменить язык, а затем перенаправить на страницу.Это, вероятно, будет лучше, если учесть, что вы уже используете сеансы.

Пример: <a href="changeLanguage.php?lang=en">English</a>

На языке изменений:

//code up here
if (isset($_SESSION['bckTo') && isset($_GET['lang'])) {
     // $lang code here
     $_SESSION['lang'] = $lang;
     header('Location: ' . $_SESSION['bckTo']);
}

Тогда вам просто нужноизмените свой язык проверки / отображения кода, чтобы проверить переменную сеанса, а не GET (на реальных страницах).

1 голос
/ 25 июля 2010

Запуск html_entity_decode преобразует эти HTML-объекты обратно в амперсанды.

http://us2.php.net/manual/en/function.html-entity-decode.php

...