【问题标题】:Cakephp Local session logicCakephp 本地会话逻辑
【发布时间】:2013-05-20 16:59:33
【问题描述】:

我有一个简单的 if 检查会话中的 customer_id。

<?php if($this->Session->read('customer_id')){ ?>
    <?php echo $this->element('watchlist'); ?>      
<? } else { ?>
    <?php echo $this->element('recently_sold'); ?>              
<?php } ?>

这很简单,但是当我访问页面时,customer_id 为空,并且没有显示任何元素。当我登录时,两个元素都会显示。这里的逻辑真的很奇怪,我不知道从哪里开始。我尝试检查 null 并使用 is_numeric,但结果仍然相同。有没有人在这样的本地环境中遇到任何问题?

谢谢

【问题讨论】:

  • 您经常打开和关闭 PHP 标记是否有原因?您还在第三行使用短标签。

标签: php session cakephp


【解决方案1】:

您的 PHP 设置是否识别 PHP 短标签 &lt;? ... ?&gt; 而不是 &lt;?php ... ?&gt;

如果不是,那么您的 } else { 语句将不会被识别为 PHP,因此当 if 语句为真时,两个 echo 都会发生(并且您应该看到“”打印出来如果您仔细查看,则作为源代码中的文本)。

就像@Chris Hendy 上面所说的那样,无缘无故地打开和关闭 PHP 标记是令人困惑的。

不应使用短标签,因为它们是服务器设置,并且大多数服务器默认没有启用它们。从 PHP 5.4 开始,短标签在一个开关上,不同之处在于“回显短标签”

【讨论】:

  • @ChrisHendry 是对的,这就是问题所在。 php 没有设置为读取短标签。我在某处读到 php 5.4 修复了这个或什么?
  • @DevatoTech 短标签不应使用,因为它们是服务器设置,并且大多数服务器默认情况下没有启用它们。从 PHP 5.4 开始,短标签在一个开关上,不同之处在于“echo 短标签”=“是独立于另一个的。我认为最好的做法是不要使用短标签,而是使用长的开始和结束标签并在适用的情况下使用“echo short tag”(“=”)。对于内联 echo 语句非常方便。
猜你喜欢
  • 1970-01-01
  • 2014-01-27
  • 2020-08-20
  • 1970-01-01
  • 2011-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多