将语言设置为SESSION的建议

时间:2019-03-22 14:22:55

标签: php mysql pdo

我已经创建了一个多语言的CRUD应用程序,我需要一些建议。这行得通,但是您怎么看?可以安全吗,或者可能有sql注入之类的东西?  请记住,我是新秀。任何帮助将不胜感激!

谢谢

总而言之,系统以这种方式工作。

首先,我选择旗语,

    <a href="<?php echo $home_url; ?>admin/index.php?lang=de"><span class="flag-icon flag-icon-de"></span>Deutsch</a>
    <a href="<?php echo $home_url; ?>admin/index.php?lang=it"><span class="flag-icon flag-icon-it"></span>Italiano</a>
    <a href="<?php echo $home_url; ?>admin/index.php?lang=es"><span class="flag-icon flag-icon-es"></span>Español</a>

然后在交换机中创建会话:

$defaultLang = 'it';

if (!empty($_GET["lang"])) {
    switch (strtolower($_GET["lang"])) {
        case "en":

            $_SESSION['lang'] = 'en';
            break;
        case "de":

            $_SESSION['lang'] = 'de';
            break;
        default:

            $_SESSION['lang'] = $defaultLang;
            break;
    }
}

if (empty($_SESSION["lang"])) {
        $_SESSION["lang"] = $defaultLang;
} 

当我创建产品或类别之类的东西时,我仅将名称“ en”,“ de”,“ es”等存储在Mysql DB中,并将其存储在char(2)字段中

我使用准备好的PDO语句存储数据:

  $lang = $_SESSION['lang'];
    $stmt->bindParam(':lang', $lang); 

 try{

        // insert query
$query = "INSERT INTO product
            SET 
pd_lang=:lang";

// prepare query for execution
$stmt = $con->prepare($query);
// Execute the query
$stmt->execute()

并更新其中一个,我进行如下查询:

$query = "SELECT COUNT(*) as total_rows FROM product WHERE pd_lang = '{$_SESSION['lang']}'";

0 个答案:

没有答案