2012-02-19 77 views
-2
  • EDITED * *

你好,我是新来的PHP,并试图找出了一个Joomla模块黑客攻击。如果其他ENDIF PHP麻烦

由于某些原因,'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 ?> 
+0

我在这里没有看到任何'endif's。你确定这是所有相关的代码吗? – kapa 2012-02-19 15:16:09

+0

“不工作”不是对预期行为和观察行为的描述,而且您的帖子的标题完全是垃圾。 – 2012-02-19 15:18:00

回答

0

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

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

非常感谢!完美的作品! :) – Sarah 2012-02-19 15:37:23

0

那是你所有的代码吗?你需要关闭endif。

这就是说,考虑花括号的语法,我发现它更容易避免错误。

在附注中,当每行是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 } ?> 
+0

我喜欢你的绘画,即使它是一个扯皮。 – 2012-02-19 15:20:11

+0

你会这么想吗?但我们正在谈论一个Joomla编码器。 EWWW! * Shudder * – PaulM 2012-02-19 15:24:47

+0

对不起,我错过了原始代码的完整部分。 整个事情现在在那里...... – Sarah 2012-02-19 15:27:31

0

我只是一种猜测,但并不需要删除分号在IF语句告诉该解析器仍然存在其他块,即

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

不,我认为'else'应该和_first_'if一起去,通过研究逻辑。第二个'如果'只是一个(破碎的)尝试截断和美化一个长描述(它忘记截断) – 2012-02-19 15:19:16