当选择更改在会话中写入时

时间:2015-02-06 20:39:43

标签: php html session

我正在编写一个更改网站语言的功能。如何设置:如果语言选择发生变化,则设置为刷新页面。

如:if(value=="ru"){$_SESSION["lang"]="ru"; Refresh page}

in:

<select  class="leng" name="language" id="language" >               
                <option selected="selected" value="en">en</option>
                <option value="ru" >ru</option>
                <option value="ae">ae</option>
                <option value="bg">bg</option>

            </select>

谢谢。

3 个答案:

答案 0 :(得分:2)

这是一些不使用表单的老式javascript解决方案:

<select class="leng" name="language" id="language" onChange="document.location.href='your_page.php?lang=' + this.value">
    <option selected="selected" value="en">en</option>
    <option value="ru">ru</option>
    <option value="ae">ae</option>
    <option value="bg">bg</option>
</select>

和&#34; your_page.php&#34;:

<?php
    session_start();
    if(isset($_GET["lang"])) $_SESSION["lang"] = $_GET["lang"];
?>

答案 1 :(得分:1)

假设您在具有name属性的表单中有这样的内容,例如:

<form name='formname' method='post' action='handlelanguage.php'>
  <select  class="leng" name="language" id="language" onChange="document.formname.submit()">

然后在那个页面中:

$value = $_POST['language'];
if($value=='ru')
{
  $_SESSION["lang"] = "ru"; 
  header('Location: originalpage.php');
  exit;
}

答案 2 :(得分:1)

如果您正在设置会话变量,则无需刷新页面,因为在发送标头之前进行处理。您只需将表单发布到要设置会话变量的页面,如下所示:

<form action="/" method="post">
  
  <select  class="leng" name="language" id="language" >               
    <option selected="selected" value="en">en</option>
    <option value="ru" >ru</option>
    <option value="ae">ae</option>
    <option value="bg">bg</option>
  </select>  

  <input type="submit" />
  
</form>

然后,在那段代码之前,您需要添加一些这样的PHP(确保在任何其他输出之前发生这种情况,否则您将收到PHP错误):

<?php
if (isset($_POST['language'])){
    session_start();
    $_SESSION['language'] = $_POST['language'];
}
?>

此时,会话变量已从发布到同一页面的表单中保存。你可以采取相应的行动。