奇怪的PHP让我难过

时间:2010-07-30 01:43:07

标签: php session

我正在看这段代码,并认为我看不到错误,因为有一些错误,但我只是看不到它......我希望有人在这里可以看到它盯着它为过去半个小时还没有告诉我。

代码:

if (!empty($_SESSION['email_notifications'])) { 

  print '<br>SESSION[email_notifications] = ['.$_SESSION['email_notifications'].']';
  print '<br>Session exists!!!';

  $from = $_SESSION['display_name'].' <'.$_SESSION['email_notifications'].'>';
  print '<br>$from = ['.$from.']';

}

输出:

  

会话[email_notifications] = [myemailaddress@email.com]

     

会话存在!!!

     

$ from = []

会话值已设置,但当它存储在变量中时,它会消失???

5 个答案:

答案 0 :(得分:7)

您正在将其输出到HTML,对吗?还记得&lt;&gt;吗?查看页面源代码是否存在。很可能,电子邮件地址部分被解释为未知的HTML标记,因此被忽略。

至于为什么你的display_name没有显示,我不知道。它有价值吗?

答案 1 :(得分:3)

Hmmmm。 PHP5?

这是疯狂的傻,但你检查输出SOURCE,而不是html?你已经在它周围放置了尖括号,它可能不会在屏幕上呈现。

答案 2 :(得分:2)

如果要输出已分类的HTML,可以使用PHP提供的一些内置函数使其正确输出到浏览器。使用您的代码,请尝试以下操作:

if (!empty($_SESSION['email_notifications'])) { 

  print '<br>SESSION[email_notifications] = ['.$_SESSION['email_notifications'].']';
  print '<br>Session exists!!!';

  $from = $_SESSION['display_name'].' <'.$_SESSION['email_notifications'].'>';
  print '<br>$from = ['.htmlentities($from).']';

}

答案 3 :(得分:0)

由于<br>标签没有显示在输出中,我猜你是直接从浏览器显示的内容中复制粘贴的。浏览器不会显示HTML标记,但会使用它们来格式化真实文本,或者如果它不“知道”如何处理标记,则忽略它们。如果要查看实际输出,请尝试浏览器的“显示页面源”选项。

话虽如此,在第二种情况下,电子邮件地址以'&lt;'输出和'&gt;',因此它显示为浏览器的标记。 displayname变量可能未在会话中设置,或者是一个包含'&lt;'的字符串和'&gt;'也围绕它。

答案 4 :(得分:0)

好的......我发现了这个问题......

$ _ SESSION ['display_name']是空的,这让我感到......

通过在&lt;中封装$ _SESSION ['email_notifications'] &GT; html就像一个邮件程序,并隐藏了前面的display_name后面的电子邮件地址,因为前面的display_name是空的,它只是被隐藏了......