2011-08-13 153 views
1

嘿,我想写给我的“config.php”文件,但它不会工作。我正在使用下面的代码。使用此代码它不会出现任何错误,它只是不写字符串。写入.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); 

我在做什么错?

+2

权限是否正确?你有任何错误?究竟发生了什么? – Jonathon

+0

请记住这一点:您不应该在没有告诉我们*错误或*如何*不起作用的情况下发布“您遇到错误”或“不起作用”。否则我们无法帮助你。 – meagar

+0

它只是不写信给它。 –

回答

2

你需要的时候,你希望他们输出到正确转义字符$,就像这样:

$stringData = "\$db_user = '{$dbuser}';\n"; 
+0

@Duncan具体而言,您似乎认为您需要使用'“{$ variable}”'将值替换为字符串。你没有。 '“$ db_user”'和'“{$ db_user}”'将导致'$ db_user'的值被内插到字符串中。 – meagar

+0

仍然不起作用:L –

+0

@meagar你是什么意思? –

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的功能????

1

我在做什么错?

你做错的大事是混淆了代码和数据。在网络服务器上进行自我修改代码是一种灾难。

但是,假设您确实希望您的应用程序被黑客入侵并销毁......您需要将对变量的引用转义以避免被插入。即

fwrite($fh, '$db_user = ' . "'{$dbuser}';\n"); 

您还应该提供为什么像您期望的(更多的信息比“它只是将无法正常工作”),你的代码是不是表现的意义解释。假设文件没有被写入/修改,并且脚本以“无法打开文件”轰炸,这可能是一个权限问题 - 但由于您没有提供关于这是哪种操作系统的详细信息,因此我们无法告诉您如何解决这个问题。

另外,你是在引用函数名称 - 这是否意味着你正在使用eval来在运行时调用自修改系数?我的天啊!

+0

我是新来的PHP:S,但问题是,它只是不写入文件。根本没有错误出现。 –

+1

如果你没有看到die()消息,那么它不会死 - 所以它正在写入文件 - 而不是你期望的文件/在你期望的位置。 – symcbean