奇怪的PHP把我难住了

奇怪的PHP把我难住了,php,session,Php,Session,我正在看这段代码,我想我看不到错误,因为有一些错误,但我就是看不到。。。我希望这里有人能看到它,因为在过去的半个小时里,它一直盯着它看,我还没弄清楚 守则: if (!empty($_SESSION['email_notifications'])) { print '<br>SESSION[email_notifications] = ['.$_SESSION['email_notifications'].']'; print '<br>Session exi

我正在看这段代码,我想我看不到错误,因为有一些错误,但我就是看不到。。。我希望这里有人能看到它,因为在过去的半个小时里,它一直盯着它看,我还没弄清楚

守则:

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.']';

}
if(!empty($_会话['email_通知]]){
打印“
会话[电子邮件通知]=[”.$会话[“电子邮件通知].]”; 打印“
会话已存在!!!”; $from=$\会话['display\u name'].'; 打印“
$from=[”.$from.]”; }
输出如下:

会话[电子邮件通知]=[myemailaddress@email.com]

会话存在

$from=[]


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

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

至于你的
display\u name
为什么不显示,我不知道。它有值吗?

Hmmmm。Php5


这太傻了,但是你检查过输出源代码而不是html了吗?您在它周围放了尖括号,它可能只是没有在屏幕上呈现。

由于

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


也就是说,在第二种情况下,电子邮件地址以“”输出,因此它在浏览器中显示为标记。displayname变量可能未在会话中设置,或者它也是一个周围有“”的字符串。

如果要输出SANATIZED 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).']';

}
if(!empty($_会话['email_通知]]){
打印“
会话[电子邮件通知]=[”.$会话[“电子邮件通知].]”; 打印“
会话已存在!!!”; $from=$\会话['display\u name'].'; 打印“
$from=[”.htmlentities($from)。”; }
好的。。。我发现了这个问题

$\u会话['display\u name']为空,这使我


通过将$会话['email\u notifications']封装在<>html中,就像一个邮件程序一样,将电子邮件地址隐藏在前面的display\u名称后面,由于前面的display\u名称是空的,所以将其完全隐藏

接得好。这可能是因为它不在会话中。HTML不“充当电子邮件程序”。如果浏览器看到,它将被解释为“新段落”。如果浏览器看到,它会被解释为“使这一点粗体化”。如果浏览器看到了,它会感到困惑并忽略它。这就是发生在你方括号中的事情-它是一个电子邮件地址,与此无关。感谢阿玛丹将我的声明如此逐字逐句地理解。。。我知道它不像电子邮件程序那样工作!我想说的是,对<>的解释正在发生。。。邮件程序是一个错误的解释