Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用包含html和php的文本区域更新_选项_Php_Database_Wordpress - Fatal编程技术网

使用包含html和php的文本区域更新_选项

使用包含html和php的文本区域更新_选项,php,database,wordpress,Php,Database,Wordpress,这就是我要说的。我在插件的设置页面上有一个表单字段文本区域。到目前为止,我所做的是将内容正确地存储在数据库中。该内容将是HTML/PHP,更具体地说,它将是WordPress循环中的内容结构和模板标记 我使用这段代码在表单提交时将表单中的数据插入数据库 if (isset($_POST["update_settings"])) { $customPostLayout = esc_attr($_POST["post-layout"]); update_option('aw_wp

这就是我要说的。我在插件的设置页面上有一个表单字段文本区域。到目前为止,我所做的是将内容正确地存储在数据库中。该内容将是HTML/PHP,更具体地说,它将是WordPress循环中的内容结构和模板标记

我使用这段代码在表单提交时将表单中的数据插入数据库

if (isset($_POST["update_settings"])) {
    $customPostLayout = esc_attr($_POST["post-layout"]);  
    update_option('aw_wp_yca_postcontent', $customPostLayout);      
}
然后,我用以下内容显示该数据:

echo get_option('aw_wp_yca_postcontent');
假设我有这样一个表格:

<div id="wrapper">
    <?php the_title(); ?>
</div>

当我走到帖子应该显示的前端时,我得到以下信息:

<div id=\"wrapper\"> <?php the_title(); ?> </div>


因此,它不是在循环中渲染,而是将其作为字符串输出。我做错了什么?我尝试过使用
eval()
,这不是我的偏好,我还尝试过使用
htmlspecialchars()
htmlentities()
的各种方法。很明显,我不明白这里有什么

当您将其放入数据库时,您正在存储一个文本字符串。因此,当您从数据库中提取它时,您得到的只是一个文本字符串。如果您回显一个文本字符串,那么将执行的唯一代码是客户端代码(html、javascript、css等)。如果您希望从字符串执行php代码,那么是的,您将不得不使用eval,这不是一个好的做法。然而,我认为在数据库中存储php也不是一个好的做法

尽管如此,eval失败的原因是eval()需要一个有效的php代码字符串,即介于
之间的代码。您的代码以html开头,因此如果您希望它正确地评估html,那么您需要对其进行一些编辑

eval("?> <b>foo</b> <?php ;");

谢谢你的回复。我无法让您的第二个选项正常工作,一直得到一个名为
文件\u put\u contents(filepath/file)[function.file put contents]:无法打开流:权限被拒绝的文件。你的第一个选择奏效了;但是,我的表单提交仍在转义html中的任何引号。然后用反斜杠将它们写在页面上。有什么想法吗?用斜杠($yourString)来修正引号。发生权限问题是因为您可能没有对服务器的root访问权限,这取决于您的托管计划。您是否具有ssh中服务器的root访问权限?还是你在用cpanel?你有什么托管计划?我有根访问权限,并通过ssh将适当的文件设置为777。还是不走运。这在内部虚拟LAMP服务器上,而不是在外部共享主机上。我很快就会试试睫毛膏,然后告诉你。谢谢你的更新。太好了!如果仍然存在权限问题,请确保已为目标文件夹(而不仅仅是文件)设置了正确的权限。
$myEvalString="?> ".get_option('aw_wp_yca_postcontent'). "<?php ;";
eval($myEvalString);
file_put_contents("/your/file/path/specialCode.php",get_option('aw_wp_yca_postcontent'));
//your loop code...
include '/your/file/path/specialCode.php';
//..