无法使用php创建php文件

时间:2014-06-21 16:53:48

标签: php

我想要做的是,尝试用用户输入的与数据库连接有关的详细信息写一个文件。但我无法这样做。该文件尚未创建。

我的PHP代码:

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['config'] == 'save_config')
{
$string = '<?php
           $mysql_database = "'.$_POST["databasename"].'";
           $mysql_user = "'.$_POST["username"].'";   
           $mysql_password = "'.$_POST["password"].'";            
           $mysql_host = "'.$_POST["host"].'";
           $db = mysql_connect($mysql_host, $mysql_user, $mysql_password);
           if (!$db)
           {
           die("Failed to connect to database server!<br>".mysql_error());
           }
           mysql_select_db($mysql_database, $db) or die("Failed to select database<br>".mysql_error());
           ?>';

$file="./config.php";
if(!file_exists($file)){
    if(!($handle=fopen($file, "w"))){
        die("Cannot create the file!");
    }
    else{
        fwrite($handle, $string);
        fclose($handle);
    }
    }
}
?>

我的HTML代码:

<form name="setup" method="post" action="index.php" enctype="text/plain" id="Form1">
<input type="hidden" name="config" value="save_config">
<input type="submit" id="Submit" name="" value="Submit" style="position:absolute;left:14px;top:270px;width:75px;height:31px;z-index:4;">
<input type="text" id="databasename" style="position:absolute;left:181px;top:21px;width:223px;height:22px;line-height:22px;z-index:5;" name="databasename" value="" required="required">
<input type="text" id="username" style="position:absolute;left:181px;top:81px;width:223px;height:22px;line-height:22px;z-index:10;" name="username" value="" required="required">
<input type="password" id="password" style="position:absolute;left:181px;top:145px;width:223px;height:22px;line-height:22px;z-index:11;" name="password" value="" required="required">
<input type="text" id="host" style="position:absolute;left:181px;top:211px;width:223px;height:22px;line-height:22px;z-index:12;" name="host" value="" required="required" placeholder="localhost">
</form>

1 个答案:

答案 0 :(得分:2)

在php中,只要你有三个字母<?php或两个字母?>彼此相邻,它就意味着“在这里开始/结束php代码”,即使它在一个中间''引用对。只需将它们与这样的连接分开:

$string = '<'.'?php
    ....
    ?'.'>';

你也可以在这里使用HEREDOC语法,它可以在不分离标记的情况下工作:

$string = <<<EOD
<?php
....
?>
EOD;

另外,在php中你可以省略结尾?>。文件结束将正常工作告诉解释器它是一个php块的结束。