在db中存储和回显php代码

时间:2011-04-22 11:19:55

标签: php mysql database

我一直试图测试这个。我在数据库中输入了以下代码。

  <?php

   $test = "Whats up";

   print $test;

   ?>

然后在页面上我做选择,然后我尝试回声但它不会这样做,除非我摆脱开始和结束标记的条目。所以,如果我想通过从数据库中调用它来执行这个PHP,我该怎么做?谢谢。

3 个答案:

答案 0 :(得分:1)

使用eval将字符串视为可运行的PHP代码,例如:

<?php
$string = 'echo "hello";';
eval($string);
?>

正如Pekka所说,这是不好的做法,你应该重新考虑你的解决方案。几乎没有动力在数据库中存储代码(数据库用于数据)。

答案 1 :(得分:1)

你可以使用serialize - unserialize函数来保存对象或变量。并且您可以使用eval函数来运行代码

答案 2 :(得分:0)

嗨这正是我想要的。我们在多个服务器上部署了CMS,为了维护基本功能(无需基于url创建我们的主函数文件),从group = wide单个数据库中存储和调用这些函数更容易。我们使用中等blob并在那里存储序列化的base_64编码文本文件。

因此,要序列化代码,我们使用此脚本而不使用php标记:

<form name="serialise_script" action="" method="post" >
    <p>Put Script in here (without php tags???)</p>
    <textarea cols="100" rows="25" name="serializeme" ></textarea>
    <input type="submit" name="go" value="go" />
</form>

<?php if(isset($_POST['serializeme'])){
    echo "<p>Your Code</p><textarea style='border:3px solid black;padding:0.5em;' cols='100' rows='25' >" . base64_encode(serialize($_POST['serializeme'])) . "</textarea>";
 } ?>

然后复制脚本并将输出代码粘贴到文本文件中。 将其上传到中等blob表

然后再次从数据库输出并设置为会话变量......我刚刚这样做了:

eval(unserialize(base64_decode($_SESSION['functions'])));

但这是我需要的评估位才能让它发挥作用。通过序列化和编码意味着我们不应该有任何问题。

现在,我需要做的就是为某些服务器上的许多站点管理1个基本代码。 AKA一个错误修复可以解决所有部署中的所有问题。

由于

岸堤