如何在php中执行html代码?

时间:2016-11-17 作者:Matheus Oliveira

我正在使用php插件在代码中插入php。

我有一个表单,我想让它在提交后消失,但即使是我试图设置的最简单的条件也不起作用(他总是打印标题):

[insert_php]
   echo $_REQUEST[\'code\'];
   if ($_REQUEST[\'code\'] == \'aba\'){

[/insert_php]


   <h2>HEADER</h2>


[insert_php]    
    }
[/insert_php]
php工作正常,因为如果我稍微更改一下,它会打印出我想要的内容:

 [insert_php]
       echo $_REQUEST[\'code\'];
       if ($_REQUEST[\'code\'] == \'aba\'){
            echo \'example phrase\'

        }
    [/insert_php]
我遗漏了什么?

4 个回复
SO网友:birgire

我不建议以这种方式在内容中编写PHP代码,例如出于安全原因。

最有可能的短代码是使用eval() 并且在每次这样的调用中都需要一个有效的PHP代码段。

PHP文档有以下内容warning:

Caution 这个eval() 语言构造非常危险,因为它允许执行任意PHP代码。因此,不鼓励使用它。如果您已经仔细验证了除了使用此构造之外没有其他选择,请特别注意,在没有事先正确验证的情况下,不要将任何用户提供的数据传递给它。

你应该考虑自己写shortcode 相反,要让PHP代码远离用户和内容编辑器。

SO网友:tanhernandez

我想你是在同一页上发帖子吧?(由于使用$\\u请求)。

但无论如何,您可能需要为自定义内容创建自己的短代码,下面是一个帮助您入门的示例。

您可以将其粘贴到主题的函数中。php

// Attach callback method to the wordpress hook 
add_shortcode(\'my_shortcode\', \'unique_key_my_shortcode\');

// Define the callback
function unique_key_my_shortcode() {

    $code = $_REQUEST[\'code\'];

    // Catch echoed values
    ob_start();
    ?>
        <!-- Create DIV container, just in case -->
        <div class="my_shortcode_container">

            <!-- Just like in your sample code -->
            <?php echo $code; ?>

            <!-- If code == \'aba\' then include the html below -->
            <?php if ($code == \'aba\'): ?>

                <h2>Code is equal to "aba"</h2>

            <?php endif; ?>
        </div>

    <?php

    // Store the html in a variable
    $html = ob_get_contents();

    // Clean
    ob_end_clean();

    // return
    return $html;
}
然后将短代码放在文本小部件或类似的东西中[my_shortcode]

SO网友:hashtagerrors

最好的方法是:

[insert_php]
   echo $_REQUEST[\'code\'];
   if ($_REQUEST[\'code\'] == \'aba\'){

   echo $header = \'<h2>HEADER</h2>\';

    }
[/insert_php]
或者,如果您有很多HTML代码,可以使用串联。对于ex:

[insert_php]
   echo $_REQUEST[\'code\'];
   if ($_REQUEST[\'code\'] == \'aba\'){

    $header=\'<h1>\';
    $header.=\'Header\';
    $header.=\'</h1>\';
    echo $header;

    }
[/insert_php]

SO网友:Victor Casado

我认为最有用的答案是tan05提供的答案。最简单但有用的答案来自尼廷·辛格。

这是另一个不同的解决方案(比短代码解决方案更糟糕)。使用备用语法。

尝试使用:

[insert_php]
 echo $_REQUEST[\'code\'];
 if ($_REQUEST[\'code\'] == \'aba\'):
[/insert_php]

<h2>HEADER</h2>

[insert_php]    
 endif;
[/insert_php]
请注意,不要使用:

if(condition){
   do_something
}
您可以使用:

if(condition): 
   do_domething
endif;
退房http://php.net/manual/en/control-structures.elseif.php

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果