Php文本字段编辑文件

时间:2013-04-14 01:19:30

标签: php html file config textfield

我已经制作了一个允许你通过网页上的文本字段编辑config.php文件的系统但是文本框显示了整个文件内容是否有一种方法可以限制它只显示一行像此

$paypal_email = "mypaypalemail@gmail.com"; 

并且只显示

mypaypalemail@gmail.com

在文本框中。继承我的代码

<?php
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process)) {
    foreach ($val as $k => $v) {
        unset($process[$key][$k]);
        if (is_array($v)) {
            $process[$key][stripslashes($k)] = $v;
            $process[] = &$process[$key][stripslashes($k)];
        } else {
            $process[$key][stripslashes($k)] = stripslashes($v);
        }
    }
}
unset($process);
?>
<?php

$file = 'config.php';
// print_r( glob( dirname(__FILE__) . "/*.php"  ) );

$configFile = html_entity_decode(file_get_contents($file), ENT_NOQUOTES);

if ( isset( $_POST["save_button"] ) && $_POST["config_changes"]){
$changes = $path = str_replace("\"", "", $_POST["config_changes"]);
  file_put_contents($file, $_POST["config_changes"]);
}
?>

<html>
  <body>
  <center>
  <b>
  <font face="arial" size="3" color="#000000">
  Welcome edit your Options here
  <br>
    <form method="post" action="controlpanel.php">
      <textarea name="config_changes" rows="30" cols="50"><?php echo $configFile ?></textarea>
      <br>
      <button name="save_button">Save</button>
    </form>
  </body>
</html>

1 个答案:

答案 0 :(得分:0)

我的第一个想法是使用正则表达式,但我偶然发现了更好的方法。 确切地说,PHP函数token_get_all()

您将文件内容传递给该函数(在此演示中,我使用token_get_all中的一些示例代码作为参数。您可以在此传递完整文件。

$tokens = token_get_all('<?php $paypal_email = "mypaypalemail@gmail.com"; ?>');

$vars = array();
foreach ($tokens as $token) {
    if ($token[0] == T_CONSTANT_ENCAPSED_STRING) {
        $vars[] = $token[1];
        continue;
    }
}

var_dump($vars);

它应该返回该文件中的所有变量,如下所示:

array(1) { [0]=> string(25) ""mypaypalemail@gmail.com"" }

使用它来调试一下,检查你要搜索的变量是哪个索引。 然后,您可以访问给定索引处的变量。

如前所述,我不知道您使用的是什么,但听起来不安全。 我强烈建议您寻找其他解决方案。