我正在尝试创建一个将PHP中的javascript与那些令人讨厌的cookie混合的函数。这是有效的;
function CookieSet($name,$value){
$exp=date('D, d M Y G:i:s e', strtotime('midnight + 1days'));
print("<script language=\"javascript\" type=\"text/javascript\">");
print("document.cookie = \"".$name."=".$value."; expires=".$exp.";\";");
print("</script>");
}
我有一个类似的功能,使用相同的方法删除cookie(重置过期的时间。)我需要以类似的方式获取在PHP中返回的cookie信息。我已经创建了以下函数,但似乎可以让它工作 - php不喜欢它。我确定它在标点符号某处,但似乎无法找到它。
function CookieGet($name) {
print("<script language='javascript' type='text/javascript'>");
print("var name = ".$name." + \"=\";");
print("var ca = document.cookie.split(';');");
print("for(var i=0; i<ca.length; i++) {");
print("var c = ca[i];");
print("while (c.charAt(0)==' ') c = c.substring(1);");
print("if (c.indexOf(name) == 0) ".$str=." c.substring(name.length, c.length);");
print("}");
print("</script>");
return $str;
}
整个程序用于将窗口小部件传递到多个站点。使用纯PHP cookie支持,cookie域设置为源域。通过Javascript创建cookie将cookie域设置为目标域。我很清楚Javascript在浏览器中运行,PHP在服务器端运行。我正在尝试解决跨域cookie问题。是的,我已经审查了其他相关解决方案。如果不是远程交付,这不是问题。
感谢任何帮助。
答案 0 :(得分:0)
您打印用于删除cookie的JS代码的功能有一行问题尝试更改此内容:
print("if (c.indexOf(name) == 0) " . $str . " c.substring(name.length, c.length);");
进入这个:
=
我在$str
之后删除了$str
,因为这导致了PHP中的解析错误。
但由于print("if (c.indexOf(name) == 0) c.substring(name.length, c.length);");
是空的而没有做任何事情,你也可以这样做:
if option == 2:
print("These are the lines of data from the data file:")
datafile = open("K:/python compiler/datafile.dat","r")
line = datafile.readline()
field = line.split(",")
custid = field[0]
widgets = field[1]
gidgets = field[2]
doodads = field[3]
count = 0
while line != "":
count += 1
print("\n", count, " - Customer id:", field[0] , "\nWidgets ordered:", field[1], "\nGidgets ordered:", field[2], "\nDoodads ordered:", field[3] , end = "")
line = datafile.readline(line )
datafile.close()
希望有所帮助。
答案 1 :(得分:0)
这应该是一个评论,但它有点长。
我需要以类似的方式获取php中返回的cookie信息
我不知道你的意思。 PHP写html(和javascript,和CSS,以及图像和....)。有一种机制可以在HTTP请求中发送cookie($ _COOKIE),因此目标似乎很奇怪。还有其他方法可以将数据恢复到服务器端(在POST中,在URL的查询中,作为AJAX请求中的自定义标头....)但不知道你想要实现什么以及为什么你可以&#39使用正常的方法很难提出建议。
你的PHP函数似乎很困惑。很难推断出你的期望。
print("if (c.indexOf(name) == 0) ".$str=." c.substring(name.length, c.length);");
...
return $str;
$ str在此行执行时未设置。您正在为其分配值&#34; c.substring(name.length,c.length);&#34; (并且还返回相同的字符串)。
通过从PHP代码生成javascript代码,您必须同时调试PHP和Javascript代码以获得有效的解决方案。解决问题的正确方法是在javascript中实现函数(或对象),并使它们在javascript中正常工作(使用调试器,控制台,警报,设置innerHTML等)。然后通过编写一个非常简单的Javascript来适当地注入任何文字来从PHP调用它们......
function CookieGet($name) {
print "<script language='javascript' type='text/javascript'>\n";
print "jsGetCookie('$name');\n"
print "</script>\n";
}