使用PHP脚本创建另一个PHP文件

时间:2016-08-09 09:19:48

标签: php

我需要创建一个新的.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并且也没有工作。我谷歌它,但我真的不明白我在读什么。

我该怎么做?

3 个答案:

答案 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';