如何使用html中的按钮来保持用户在php会话中选择的语言


How to use buttons in html to keep language the user chooses in php session

我有多个PHP文件,需要使用session_start()来跟踪网站语言。有两个按钮ENGGRE分配给$_SESSION['lang']的默认语言是ENG。当用户单击希腊语时,需要更新$_SESSION['lang'],并且需要显示所有希腊语数据库内容。

functions.php

<?php
include "connection.php";
session_start();
function getLang(){
    if (isset($_GET['lang'])){
        return $lang = $_GET['lang'];
    }
    else{
        return $lang='ENG';
    }
}
function getValue($name,$connection){
    $lang = getLang();
    $query = "SELECT Text FROM users WHERE Nickname='$name' AND Lang='$lang'";
    $result = mysqli_query($connection, $query);
    $text = mysqli_fetch_assoc($result);
    return checkText($text['Text'],$name,$connection);
}
function  checkText($text,$name,$connection){
    if ($text==null){
        $sql = "SELECT Text FROM users WHERE Nickname='$name' AND Lang='Eng'";
        $result = mysqli_query($connection,$sql);
        $text = mysqli_fetch_assoc($result);
        return $text['Text'];
    }
    else{
        return $text;
    }
}
function getPk($name,$connection){
    $lang = getLang();
    $query = "SELECT id FROM users WHERE Nickname='$name' AND Lang='$lang'";
    $result = mysqli_query($connection,$query);
    $text = mysqli_fetch_assoc($result);
    return $text['id'];
}

index.php

<?php include "functions.php";
session_start();
$_SESSION['lang'] = 'ENG';
?>

这就是我开始上课的地方。

<script>
    $(document).ready(function(){
        $('.lang').on('click',function(){
            var lang = $(this).attr('id');
        });
    });
</script>
<script>
    var pks = [];
    var nicks = [];
    $(document).ready(function(){
        $('#bt').on('click',function(){
            $('.to_edit').each(function(){
                var a = $(this).attr('data-pk');
                var nick = $(this).attr('data-name');
                $(this).wrapInner("<a class='edit1'></a>");
                $('.edit1').attr('data-type','text');
                pks.push(a);
                nicks.push(nick);
            });
            var i=0;
            $('.edit1').each(function() {
                $(this).attr('data-pk', pks[i]);
                $(this).attr('data-name',nicks[i]);
                i++;
            });
            $.fn.editable.defaults.mode='inline';
            var options = {};
            options.url = 'update.php';
            $('.edit1').editable(options);
        });
    });
</script>

第一个脚本是我迄今为止为具有ENG和GRE文字的按钮编写的,第二个脚本是使用x-editable进行内联编辑。

按钮如下:

<button class="lang" id="En"><a href="?lang=ENG">ENG</a></button>
<button class="lang" id="Gr"><a href="?lang=GRE">GRE</a></button>

我的问题是如何获得ENGGRE按钮的id,如何更新$_SESSION[lang'],我是否需要在所有文件中使用session_start()

connection.phpfunctions.php的开头使用session_start(),因为它们中的一些应该始终包含在您拥有的每个文件中。

<?php
    session_start();
    $servername = "localhost";
    $username =  "root";
    ..

在每个其他文件中包含的同一个文件中,如果语言发生变化,请添加条件:

if(!isset($_SESSION['lang'])) { $_SESSION['lang'] = 'ENG'; }
if(isset($_GET['lang'])) {
    $_SESSION['lang'] = $_GET['lang'];
}