2011-08-13 195 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