javascript - 如果尚未设置,则使用 JavaScript 设置 cookie

标签 javascript cookies isset

首先,请记住,我自己从未使用过 Javascript(只使用了一些 100% 运行的脚本),对于 Objet 编程也是如此(12 年前学习了 Pascal 编程)。

现在,我必须创建一个关于德语和法语的小网上商店。

我制作了设置 cookie 的功能,以保持所选语言。

但现在,我至少想要一件事:如果没有任何名为“Language”的 cookie,请创建一个并将其设置为法语。

我怎样才能做到这一点?

我的功能:

function setCookie(sName, sValue) {
var expDate = new Date();
expDate.setTime(expDate.getTime() + (365 * 24 * 3600 * 1000)); // ici 1 an
document.cookie = sName + "=" + escape(sValue) + ";expires=" + expDate.toGMTString() + ";path=/";
}

和页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link href="./css/style.css" rel="stylesheet" media="all" type="text/css"  />
        <script type="text/Javascript" src="./javascript/cookie.js"></script>
        <title></title>
        <?php 
            require_once './includes/google_analytics.php';
        ?>
    </head>
    <body onload="setCookie('language','fr');">
    <p>
        Language : <a href="<?php echo $_SERVER['PHP_SELF']?>" onclick="setCookie('language','fr')">fr</a> /
        <a href="<?php echo $_SERVER['PHP_SELF']?>" onclick="setCookie('language','de')">de</a>
    </p>
    <?php       
        require_once './includes/menu.php';
    ?>

        <div id="contener">

        <!-- --------------------------------------------- -->    

    <?php 
        require_once './includes/header.php';
    ?>

        <!-- --------------------------------------------- --> 

        <!-- --------------------------------------------- --> 

    <?php 
        require_once './includes/footer.php';
    ?>

        </div>
    </body>
</html>

我想用“onload”进行测试。

最佳答案

这是检查 cookie 是否已设置的一种方法:

if (document.cookie.indexOf("language=") < 0)
    setCookie("language", "fr");

请注意,如果任何 cookie 的名称以 language 结尾,这也不会设置 cookie。 .

<小时/>

编辑:
这是一个正确的函数来检查具有特定名称的 cookie 是否已经存在。

function cookieIsset(name)
{
    var cookies = document.cookie.split(";");
    for (var i in cookies)
    {
        if (cookies[i].indexOf(name + "=") == 0)
            return true;
    }
    return false;
}

你可以用它来做

if (!cookieIsset("language"))
    setCookie("language", "fr");
<小时/>

如何onload :
在你的<head>区域添加以下内容:

<script type="text/javascript">
document.onload = function () {
    // code ...
};
</script>
<小时/>

PHP解决方案:
因为OP有标签原来在那里。

if (!isset($_COOKIE['language']))
    setCookie('language', 'fr');

关于javascript - 如果尚未设置,则使用 JavaScript 设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18335226/

相关文章:

javascript - 在 Adob​​e Acrobat 中缺少用于 Javascript 调试的文件

javascript - jQuery 不能与 RequireJS 一起使用

php - curl 和 cookies

.net - HttpWebRequest 未发送所有 cookie

php - 与 php 的 isset 混淆

php - 检查作为参数传递的变量是否已设置

javascript - 在div中显示队列消息

Javascript 和 W3CSS 奇怪的图像行为

php - _COOKIE信息是否只有当前Request的cookies

php - 如何使用 PHP 变量中的提交按钮存储到数据库?