如果尚未设置cookie,则使用JavaScript设置cookie
首先,请记住,我自己从来没有使用过Javascript,只使用了一些100%工作的脚本,同样用于Objet编程,12年前在Pascal上学习了编程 现在,我必须创建一个关于德语和法语的网上商店 我做了一些函数来设置cookies,这些cookies保持语言的选择 但现在,我至少想要一件事:如果没有任何cookie命名的语言,创建一个并将其设置为法语 我该怎么做 我的职能:如果尚未设置cookie,则使用JavaScript设置cookie,javascript,cookies,isset,php,Javascript,Cookies,Isset,Php,首先,请记住,我自己从来没有使用过Javascript,只使用了一些100%工作的脚本,同样用于Objet编程,12年前在Pascal上学习了编程 现在,我必须创建一个关于德语和法语的网上商店 我做了一些函数来设置cookies,这些cookies保持语言的选择 但现在,我至少想要一件事:如果没有任何cookie命名的语言,创建一个并将其设置为法语 我该怎么做 我的职能: function setCookie(sName, sValue) { var expDate = new Date();
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是否已设置的一种方法: 如果document.cookie.indexOflanguage=<0 setCookielanguage,fr; 请注意,如果任何cookie的名称以language结尾,这也不会设置cookie 编辑: 这里有一个适当的函数来检查具有特定名称的cookie是否已经存在 函数cookieIssetname { var cookies=document.cookie.split;; 饼干中的var i { 如果cookies[i].indexOfname+==0 返回true; } 返回false; } 你可以用它来做什么 如果库克语言 setCookielanguage,fr; 如何加载: 在您的区域中添加以下内容: document.onload=函数{ //代码。。。 }; PHP解决方案: 因为OP本来就有标签 如果isset$\u COOKIE[“语言”] setCookie'language','fr';
我知道这个答案看起来很长,但它有非常方便的实用方法。 您可以使用以下两种实用cookie方法-
// Store the name/value pair as a cookie, encoding the value with
// encodeURIComponent() in order to escape semicolons, commas, and spaces.
// If daysToLive is a number, set the max-age attribute so that the cookie
// expires after the specified number of days. Pass 0 to delete a cookie.
function setCookie(name, value, daysToLive) {
var cookie = name + "=" + encodeURIComponent(value);
if (typeof daysToLive === "number")
cookie += "; max-age=" + (daysToLive*60*60*24);
document.cookie = cookie;
}
// Return the document's cookies as an object of name/value pairs.
// Assume that cookie values are encoded with encodeURIComponent().
function getCookies() {
var cookies = {}; // The object we will return
var all = document.cookie; // Get all cookies in one big string
if (all === "") // If the property is the empty string
return cookies; // return an empty object
var list = all.split("; "); // Split into individual name=value pairs
for(var i = 0; i < list.length; i++) { // For each cookie
var cookie = list[i];
var p = cookie.indexOf("="); // Find the first = sign
var name = cookie.substring(0,p); // Get cookie name
var value = cookie.substring(p+1); // Get cookie value
value = decodeURIComponent(value); // Decode the value
cookies[name] = value; // Store name and value in object
}
return cookies;
}
将html更改为-
<!-your html -->
<body onload="checkAndSetCookie('language','fr')">
或
关键是您使用的是XHTML,而在XHTML文档下,cookie是只读属性。
这意味着无论您尝试什么,都无法从JavaScript设置cookie。但是,仍然设置cookie的一种可能方法是设置一个AJAX调用,将相关参数传递给后台脚本。然后,可以使用所述背景脚本来设置cookie。的可能副本。阅读更多关于JavaScript中是否有获取cookie的函数?@JeffNoel我看到了,但我不知道如何使用它,或者它如何帮助我@Virus721同样的事情,我不明白这对我有什么帮助…有了这个,如果SetCookie不存在,我该把它放在哪里?像这样:?像那样document.onload=函数{if!cookieIssetlanguage setCookielanguage,fr;};@Anaon如果javascript/cookie.js包含所需的函数,是的,就是这样。内容是你在答案上写的三个函数,没有其他我不知道怎么做的,但是如果cookie不存在,它对我不起作用我在我的菜单上使用它可能你在里面使用这个语句,脚本将仅在加载后设置cookie。这就是为什么它没有得到反映。我更新答案。请检查是否工作抱歉,我不是一个php的家伙,不能使它太多。所以我要安装php服务器并检查它。
<!-your html -->
<body onload="checkAndSetCookie('language','fr')">
<!-- add just before body -->
<script type="text/javascript">
checkAndSetCookie('language','fr');
</script>
<body>