字符串比较不起作用

时间:2014-08-07 12:52:54

标签: javascript

哈希变量和mycookie变量是相同的,但我没有收到消息。我在这里缺少什么?

  var hash= "f353fbe0acb344e5cc6240daef41de27";
  if (hash ==  <?php echo $_COOKIE[mycookie]; ?>) var text = "the same";
  document.write(text);

2 个答案:

答案 0 :(得分:1)

这是一个字符串,所以你需要引用它:

if (hash ==  "<?php echo $_COOKIE[mycookie]; ?>") var text = "the same";

请注意,cookie内容可以由用户设置,因此您需要确保不要打开XSS漏洞。

更好的方法是对JSON进行编码(将添加引号):

if (hash ==  <?php echo json_encode($_COOKIE[mycookie]); ?>) var text = "the same";

答案 1 :(得分:0)

基本问题是你试图在没有:

的情况下调试JavaScript
  • 查看JavaScript错误控制台
  • 查看JavaScript(您正在查看PHP)。

除非您的Cookie 包含引号(我怀疑),否则您将hash与未声明的变量进行比较。

使用json_encode将PHP变量转换为JavaScript文字:

hash ==  <?php echo json_encode($_COOKIE[mycookie]); ?>

请注意,这将正确地转义JS字符串文字中不允许(原始)的任何字符(例如引号,反斜杠和新行)(仅包含带有"字符的PHP不会做)。