我有一个包含4个MySQL数据库变量的inc文件 - 主机名,数据库,用户名和密码。这些inc文件包含在其他php文件中以执行数据库查询。
我想要做的是创建一个可以更新此inc文件的表单,以便可以更改MySQL变量。作为一个真正的新手我不知道如何处理这个问题,所以非常感谢任何帮助。
非常感谢。
答案 0 :(得分:3)
你必须非常小心这样做,通常情况下它会让人们破解和/或破坏你的应用程序。
您需要做的只是使用新值覆盖您的文件 - 您如何收集这些值取决于您。
让我们假设您通过网页提交的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);
希望这应该让你开始,但你仍然需要做很多工作,比如清理输入,可能在覆盖你的配置文件之前测试新的细节是否有效,包括你之后的配置文件以确保它的工作原理等等。
答案 1 :(得分:0)
查看http://se.php.net/manual/en/function.fopen.php
http://se.php.net/manual/en/function.fwrite.php
http://se.php.net/manual/en/function.fclose.php
您也可以使用 而是http://se.php.net/manual/en/function.file-put-contents.php。
您还需要chmod要更改的文件。
但是我同意Jon Stirling的意见,你应该只是进入代码并编辑几个变量而不是这个。确实存在安全漏洞的可能性。
答案 2 :(得分:0)
您的表单HTML可能如下所示:
<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>
您的update_mysql_vars.php
脚本可能如下所示:
<?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);
?>
显然,您需要添加错误检查,输入检查并确保只有那些实际有权更改数据库访问变量的人才能访问更新脚本!