Странный PHP, который поставил меня в тупик - PullRequest
0 голосов
/ 30 июля 2010

Я смотрю на этот код и думаю, что не вижу ошибки, потому что есть какая-то неправильная ошибка, но я просто не вижу ее ... Я надеюсь, что кто-то здесь увидит, что она смотрит на неепоследние полчаса не дали понять мне.

Код:

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

}

Выводит это:

SESSION [email_notifications] = [myemailaddress]@ email.com]

Сессия существует !!!

$ from = []

Значение сеанса устанавливается, но когда оно сохраняется в переменной, оно исчезает ???

Ответы [ 5 ]

7 голосов
/ 30 июля 2010

Вы выводите это в HTML, верно?Помните &lt; и &gt;?Проверьте страницу источника, если он там.По всей вероятности, часть адреса электронной почты интерпретируется как неизвестный тег HTML и поэтому игнорируется.

Что касается того, почему ваш display_name не отображается, я не знаю.Имеет ли оно значение?

3 голосов
/ 30 июля 2010

Хммм.Php5?

Это безумно глупо, но вы проверили выходной источник, а не HTML?Вы установили вокруг него угловые скобки, они могут просто не отображаться на экране.

2 голосов
/ 30 июля 2010

Если вы хотите вывести санированный 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).']';

}
0 голосов
/ 30 июля 2010

Хорошо ... Я обнаружил проблему ...

$ _ SESSION ['display_name'] было пустым, что меня сбрасывало ...

Путем инкапсуляции $ _SESSION ['email_notifications'] в <> html действует как почтовая программа и скрывает адрес электронной почты за предыдущим display_name, а поскольку предыдущее display_name было пустым, оно просто полностью скрывалось ...

0 голосов
/ 30 июля 2010

Поскольку теги <br> не отображаются в выводе, я предполагаю, что вы скопировали это непосредственно из того, что показывает браузер.Браузер не отображает HTML-теги, но использует их для форматирования реального текста или игнорирует их, если не «знает», что делать с тегом.Если вы хотите увидеть реальный вывод, попробуйте опцию «Показать источник страницы» вашего браузера.

При этом во втором случае адрес электронной почты выводится с помощью «<» и «>», поэтомуон отображается как тег для браузера.Переменная displayname, вероятно, не установлена ​​в сеансе, или это строка, в которой также есть «<» и «>».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...