如果是其他endif PHP麻烦

时间:2012-02-19 15:12:15

标签: php if-statement

  • 已编辑 * *

您好我是PHP新手并试图找出一个Joomla模块的黑客攻击。

由于某种原因,'else'语句不起作用。我不明白为什么......

        <? if (KRequest::get('get.view', 'string') != 'event'  || isset($module)) : ?>
        <? $desc = $event->description; ?>
        <? $desc = preg_replace("/\{[^\)]+\}/","", $desc) ?>

        <? $desc = substr(strip_tags($desc, '<p><ul><li><b><i><strong><br>'), 0, 180)?>
        <? if (strlen($desc) == 180) $desc .= '...'; ?>
        <div itemprop="description" class="ohanah-event-short-description">
        <?=$desc?>
        </div>
    <? else : ?>
    <!--here is where I want to end it --!>No description.


        <?
        $description = $event->description;

        // Create temporary article
        $item =& JTable::getInstance('content');
        $item->parameters = new JParameter('');
        $item->text = $description;

        $joomlaVersion = JVersion::isCompatible('1.6.0') ? '1.6' : '1.5';
        if ($joomlaVersion == '1.5') { 
            $results = JFactory::getApplication()->triggerEvent('onPrepareContent', array (&$item, &$params, 1));
        } else {
            $dispatcher = JDispatcher::getInstance();
            JPluginHelper::importPlugin('content');
            $results = $dispatcher->trigger('onContentPrepare', array ('com_content.article', &$item, &$params, 1));
        }   
        $description = $item->text;     
        ?>
        <div style="display:none"><span itemprop="name"><?=$event->title?></span></div>
        <div itemprop="description" class="full-description">
        <?=$description?>
        </div>
    <? endif ?>

3 个答案:

答案 0 :(得分:0)

那是你所有的代码吗?你需要结束结束。

也就是说,考虑大括号语法,我发现避免错误更容易。

另外,当每一行都是PHP时,你不必每行都有<?php?>,你可以将php块保持打开几行。

<?php
if (...) {
    // stuff
} else {
    // other stuff
}
?>

如果我理解你的代码流,它看起来像这样

<?php
if (KRequest::get('get.view', 'string') != 'event'  || isset($module)) {
    $desc = $event->description;
    $desc = preg_replace("/\{[^\)]+\}/","", $desc)

    $desc = substr(strip_tags($desc, '<p><ul><li><b><i><strong><br>'), 0, 180)
    if (strlen($desc) == 180) {
        $desc .= '...';
    }
?>
    <div itemprop="description" class="short-description">
<?php echo $desc; ?>
    </div>
<?php } else { ?>
    No description.
<?php } ?>

答案 1 :(得分:0)

我只是猜测,但是你不需要在IF语句中删除分号来告诉解析器那里还有一个else块,即

if (strlen($desc) == 180) $desc .= '...'

答案 2 :(得分:0)

大括号错了。应该是这样的(或类似的 - 不确定你需要$ desc的地方):

if (strlen($desc) == 180)
{
    $desc .= '...';
    echo '<div itemprop="description" class="short-description">';
    echo $desc;
    echo '</div>';
}
else
{
    echo 'No description.';
}