Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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
使用表单更新PHP inc文件_Php_Mysql_Sql - Fatal编程技术网

使用表单更新PHP inc文件

使用表单更新PHP inc文件,php,mysql,sql,Php,Mysql,Sql,我有一个inc文件,其中包含4个MySQL数据库变量——主机名、数据库、用户名和密码。这些inc文件包含在其他php文件中,用于执行数据库查询 我想做的是创建一个可以更新inc文件的表单,以便更改MySQL变量。作为一个真正的新手,我不知道如何处理这个问题,所以非常感谢您的帮助 非常感谢。你必须非常小心地做这样的事情,通常情况下,它会允许人们入侵和/或破坏你的应用程序 您需要做的只是用新值覆盖您的文件-如何收集这些值取决于您自己 假设您是通过从网页提交的POST表单收集值,您可以执行以下操作:

我有一个inc文件,其中包含4个MySQL数据库变量——主机名、数据库、用户名和密码。这些inc文件包含在其他php文件中,用于执行数据库查询

我想做的是创建一个可以更新inc文件的表单,以便更改MySQL变量。作为一个真正的新手,我不知道如何处理这个问题,所以非常感谢您的帮助


非常感谢。

你必须非常小心地做这样的事情,通常情况下,它会允许人们入侵和/或破坏你的应用程序

您需要做的只是用新值覆盖您的文件-如何收集这些值取决于您自己

假设您是通过从网页提交的POST表单收集值,您可以执行以下操作:

<?php

  // Create the new file contents
  // Be careful not to add any extra leading/trailing whitespace before or after
  // the opening and closing tags!
  $newFileContents = "<?php

  \$mysqlHostName = '{$_POST['newhost']}';
  \$mysqlDBName = '{$_POST['newdb']}';
  \$mysqlUserName = '{$_POST['newuser']}';
  \$mysqlPassword = '{$_POST['newpass']}';
";

  // Overwrite your file
  file_put_contents('mysqlconfig.php',$newFileContents);
<html>
  <head>
  </head>
  <body>
    <form action="update_mysql_vars.php" method="post">
      Hostname <input name="hostname" /><br />
      Database <input name="database" /><br />
      Username <input name="username" /><br />
      Password <input name="passowrd" /><br />
    </form>
  </body>
</html>
<?php
  $h = fopen("/path/to/inc/file.inc", "w");
  write
  (
    $h,
    "<?php\n" .
    "\$hostname = " . $_POST["hostname"] . ";\n" .
    "\$database = " . $_POST["database"] . ";\n" .
    "\$username = " . $_POST["username"] . ";\n" .
    "\$password = " . $_POST["password"] . ";\n" .
    "?>"
  );
  fclose($h);
?>
看一看

你也可以使用 相反

您还需要对要更改的文件进行chmod


但是我同意Jon Stirling的观点,你应该直接进入代码,编辑几个变量,而不是这个。它确实可能存在安全漏洞。

您的表单HTML可能如下所示:

<?php

  // Create the new file contents
  // Be careful not to add any extra leading/trailing whitespace before or after
  // the opening and closing tags!
  $newFileContents = "<?php

  \$mysqlHostName = '{$_POST['newhost']}';
  \$mysqlDBName = '{$_POST['newdb']}';
  \$mysqlUserName = '{$_POST['newuser']}';
  \$mysqlPassword = '{$_POST['newpass']}';
";

  // Overwrite your file
  file_put_contents('mysqlconfig.php',$newFileContents);
<html>
  <head>
  </head>
  <body>
    <form action="update_mysql_vars.php" method="post">
      Hostname <input name="hostname" /><br />
      Database <input name="database" /><br />
      Username <input name="username" /><br />
      Password <input name="passowrd" /><br />
    </form>
  </body>
</html>
<?php
  $h = fopen("/path/to/inc/file.inc", "w");
  write
  (
    $h,
    "<?php\n" .
    "\$hostname = " . $_POST["hostname"] . ";\n" .
    "\$database = " . $_POST["database"] . ";\n" .
    "\$username = " . $_POST["username"] . ";\n" .
    "\$password = " . $_POST["password"] . ";\n" .
    "?>"
  );
  fclose($h);
?>

显然,您需要添加错误检查、输入检查,并确保更新脚本只能由那些真正有权更改数据库访问变量的人访问

老实说,我不建议这样做。它打开了潜在的安全漏洞。我同意@Jon Stirling的观点,但我可以看到这种东西对初始应用程序的设置有什么帮助。非常感谢,这篇文章真的很有帮助。只是一个小提示:PHP文件不需要结尾
?>
标记。省略此标记是一种很好、安全的方法,可以确保在使用文件时不会有空格尾随,然后“意外”得到输出。@Erik很好,我将更新上面的代码。感谢您的帮助。