在Joomla-PHP中包含在if语句中

时间:2013-03-01 21:11:48

标签: php if-statement joomla include joomla2.5

我在使用DirectPHP插件的文章中添加了php。 我的目标是创建一个脚本,当用户有member = true时,该脚本将包含一个带文本的文件;什么时候不显示任何东西。

我已将这段代码添加到徽标旁边顶部的模块中:

<?php
if ($user =JFactory::getUser()->guest)
{
$member = false;
echo "Welcome guest, sign up and read nice quotes";
}
else
   {
$member = true;
$user =& JFactory::getUser();
echo "Welcome " . $user->username;
}
?>
  • 我设置了member = true;现在这个人已经登录了。如果他没有在虚假签名。

然后在文章中我有:

<?php
if ($member == false)
{
 $file = file_get_contents ('quotes/quotes.html'); 
 echo $file;
}
?>

<hr id="system-readmore" />

<?php 
if ($member == true)
{
include_once JPATH_SITE.'/quotes/random.php';
echo ShowQuotes(); 
}
?>

我无法找到导致此问题无法运行的问题。显示$member = false;$member = true;的引号包括始终被解析,尽管if语句? file_get_contents也一样吗?我试图查看标题中的$ member声明是否保留在解析中并写道:

<?php
if ($member = true)
{
echo "Logged in";
}
?>

并且效果很好所以问题出在include_oncefile_get_contents之内,我试图尽可能地确定问题。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

这可能是你的问题:

if ($member = true)
{
echo "Logged in";
}

始终将true的值指定为$member

同样在这里:

if ($user =JFactory::getUser()->guest)

您可能会遇到相同的分配问题(不确定您是否打算设置$user并在此处执行条件。

我可能会建议养成像这样编写条件的习惯:

if (true === $member) { ... }

通过反转项目的顺序,如果您不小心输入=而不是=====,那么您将收到错误,而不是让代码无声地执行

答案 1 :(得分:0)

你似乎在这里有一个范围问题:你在一个模块中声明$ member,但是$ member将无法用于文章:并且php将评估($ something == false)以便在$ something时始终成功未定义,如果你想检查变量是否真的 false你需要使用($ something === false)。在此处阅读更多内容:http://www.php.net/manual/en/language.types.boolean.php

话虽如此,因为JFactory :: getUser() - &gt; guest没有真正的开销,只需在你的文章中使用它!

顺便说一句,在你的php配置中启用通知(在屏幕上或在日志文件中)并确保你在开发时阅读它,它会告诉你什么是错的,开发而不会看到错误是一个猜谜游戏,你只能将你的头撞到墙上这么多次......你最终需要打开灯: - )