当select改变写在session中

When select change write in session

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

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

在:

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

谢谢。

假设您在具有 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;
}

如果您要设置 session 变量,则无需刷新页面,因为处理是在发送 headers 之前进行的。您只需要将 post 表单添加到您要设置 session 变量的页面,如下所示:

<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(确保这发生在 any 其他输出之前,否则您将得到 PHP错误):

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

此时,session 变量已从 post 编辑到同一页面的表单中保存。您可以相应地采取更多行动。

这是一些不使用表单的老式 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>

以及 "your_page.php":

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