我需要创建一个新的.php文件作为MySQL连接配置文件。 我有这样的列表:
$fileLocation = $_SERVER['DOCUMENT_ROOT'] . "/dbconnect.php";
file_put_contents($fileLocation,$content);
$content = "<?php $koneksi = mysql_connect('.$host.', '.$username.', '.$password.'); //open connection
if(! $koneksi ) //if fail
{
die(\'Gagal Koneksi: \' . mysql_error());
}
echo \'Koneksi Berhasil\'; ?>";
我使用post方法从另一个文件(包含主机,用户名和密码的表单)中获取$username
,$host
和$password
。
我想在根目录中创建文件,我做了那些代码而且它不起作用。我尝试fwrite
并且也没有工作。我谷歌它,但我真的不明白我在读什么。
我该怎么做?
答案 0 :(得分:0)
您需要将参数传递为字符串:
mysql_connect("'.$host.'", "'.$username.'", "'.$password.'");
是的,这看起来像是一个X-Y问题,需要解决,你的问题可以通过更好的方式解决。
注意:不要使用
mysql_*
函数,因为它们已被弃用和删除。
答案 1 :(得分:0)
我尝试fwrite并且没有工作
问题几乎可以肯定是目录权限。您的PHP脚本无权将您的文件写入您提到的根目录。
...然而
我想在根目录中创建文件
您目前正在尝试做的事情看起来像是在制造安全风险。您让用户以表格形式输入值,然后将其注入您的脚本而不进行任何消毒。然后,您将该文件写入服务器。目前还不清楚您是指服务器的根目录还是网站的根目录。
MySQL扩展警告
自PHP 5.5起,不推荐使用MySQL扩展及其功能。您至少应使用改进的扩展程序MySQLi。
<强>结论强>
根据您的代码判断,并且自称缺乏理解,我建议您现在不要进一步采用当前的解决方案。您可能会面临各种安全风险,更不用说几乎可以肯定有更好的方法来实现您的目标。
我建议您至少在继续之前阅读以下内容:
如果你想继续,你可以在这个类似的问题上找到帮助:
答案 2 :(得分:0)
在您创建
file_put_contents($fileLocation, $content)
之前,您不应该$content
因为$content
在此之前不存在......这显然是不言自明的。您的代码应该是这样的:
<?php
// LET US ASSUME YOU ARE GETTING YOUR DB-CONNECTION DATA FROM ANY SOURCE AT ALL
// AND THE DATA ARE AS FOLLOWS: $host, $username, $password;
// SO THAT WE HAVE SOMETHING LIKE —
$host = "localhost";
$username = "user";
$password = "pass";
// IF YOU WANT THE FILE TO BE LOCATED IN /myapp DIRECTORY
// THEN GO UP ONE DIRECTORY ABOVE THE CURRENT DIRECTORY: /myapp/install
$fileLocation = __DIR__ . "/../dbconnect.php";
// FIRST BUILD YOUR CONTENT... ALSO REMEMBER TO ADD NEW LINES & TABS...
$content = "<?php\n\n\t\$koneksi = mysql_connect('{$host}', '{$username}', '{$password}');";
// NOW; CHECK IF THE FILE IN QUESTION EXISTS OR NOT
// SO YOU DON'T HAVE TO RECREATE IT EACH TIME THIS SCRIPT RUNS...
if(!file_exists($fileLocation)){
file_put_contents($fileLocation, $content);
}
// REMEMBER TO INCLUDE THE DB-CONNECTION FILE YOU JUST CREATED IN THE CURRENT SCRIPT
// OTHERWISE IT WILL NOT BE AVAILABLE TO YOUR SCRIPT... ;-)
require_once $fileLocation;
if(! $koneksi ){
die('Gagal Koneksi: ' . mysql_error());
}
echo 'Koneksi Berhasil';
有效:
<?php
$fileLocation = __DIR__ . "/../dbconnect.php";
$content = "<?php\n\n\t\$koneksi = mysql_connect('{$host}', '{$username}', '{$password}');";
if(!file_exists($fileLocation)){
file_put_contents($fileLocation, $content);
}
require_once $fileLocation;
if(! $koneksi ){
die('Gagal Koneksi: ' . mysql_error());
}
echo 'Koneksi Berhasil';