嘿我正在尝试写入我的“config.php”文件,但它无法正常工作。我正在使用下面的代码。使用此代码时,它不会出现任何错误,只是不写字符串。
$myFile = "config.php";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "<?php\n";
fwrite($fh, $stringData);
$stringData = "$db_user = '{$dbuser}';\n";
fwrite($fh, $stringData);
$stringData = "$db_pass = '{$dbpass}';\n";
fwrite($fh, $stringData);
$stringData = "$db_name = '{$dbname}';\n";
fwrite($fh, $stringData);
$stringData = "$db_host = 'localhost';\n";
fwrite($fh, $stringData);
$stringData = "$db_host = 'mysql_connect($db_host, $db_user, $db_pass) or die(mysq_error());\n";
fwrite($fh, $stringData);
$stringData = "$db_host = 'mysql_select_db($db_name) or die(mysql_error());\n";
fwrite($fh, $stringData);
$stringData = "$db_host = 'function protect($str) {\n";
fwrite($fh, $stringData);
$stringData = "$db_host = ' return mysql_real_escape_string(urldecode($str));\n";
fwrite($fh, $stringData);
$stringData = "$db_host = '}\n";
fwrite($fh, $stringData);
$stringData = "$db_host = '?>\n";
fwrite($fh, $stringData);
fclose($fh);
我做错了什么?
答案 0 :(得分:2)
当你希望输出$字符时,你需要正确地转义$字符,如下所示:
$stringData = "\$db_user = '{$dbuser}';\n";
答案 1 :(得分:1)
看!如果你想写一些文件,如:
$stringData = "$db_host = 'localhost';\n";
你应该逃避它!
$stringData = "\$db_host = 'localhost';\n";
和
$stringData = "$db_host = 'mysql_connect($db_host, $db_user, $db_pass) or die(mysq_error());\n";
为什么你引用了mysql函数????
答案 2 :(得分:1)
我做错了什么?
你做错的重要事情是混淆代码和数据。在Web服务器上使用自修改代码是一种灾难。
但假设您确实希望您的应用程序被黑客攻击并销毁...您需要转义对变量的引用以避免它们被插入。即。
fwrite($fh, '$db_user = ' . "'{$dbuser}';\n");
您还应该提供有意义的解释,说明为什么您的代码没有按预期运行(比“它不会起作用”更多的信息)。假设文件没有被编写/修改并且脚本被“无法打开文件”轰炸,这可能是一个权限问题 - 但由于你没有提供这是哪个操作系统的详细信息,我们无法告诉你如何解决这个问题。
你也引用了函数名称 - 这是否意味着你在运行时使用eval来调用自修改的coe? OMG!