0

PHP

<?php
if ($changefile) {
    $savedEdit = stripslashes($_POST['filetest']);
    $filetochange = "../dashboard/list.ini";
    $filetochangeOpen = fopen($filetochange,"w") or die ("Error editing.");
    fputs($filetochangeOpen,$savedEdit);
    fclose($filetochangeOpen) or die ("Error Closing File!");
}
?>

HTMLフォーム

<form method=post action="mmtst.php">   
    <textarea rows="40" cols="60" name="filetest">
    <?
        // Implode CSS
        $filetochange = "../dashboard/list.ini";
        print (implode("",file($filetochange)));
    ?>
    </textarea><br/><br/>
    <input type="submit" value="Save Changes" name="changefile">
</form>

ここに、テキストボックスにINIファイルを表示するページがあります。送信ボタンをクリックすると、元のファイルが開かれ、fputsはtxtboxに表示されているものをすべて元のファイルに書き込みます。(元のファイルはパーミッション777に設定されています)。ただし、送信ボタンをクリックしても何も起こりません。何が間違っているのかわかりません。どんな提案でも素晴らしいでしょう。

4

2 に答える 2

1

あなたは

if ($changefile) {

「filetest」変数の場合と同じように、変数の$ _POSTバージョンを確認する必要があるため、たとえば...

if (isset($_POST["changefile"])) {

そうしないと、条件がtrueを返すことはなく、コードブロックは実行されません。

于 2012-12-17T19:38:32.733 に答える
1

問題は単純です。register_globalsが無効になっていて、それを使用しようとしています。この設定により、PHPはGETおよびPOSTデータから受信したパラメーターに応じて変数を自動的に定義できますが、安全でないと見なされ、非推奨になりました。

$ _POST変数を使用するために投稿で渡された値にアクセスするには、 $_GETを使用します。

if( isset( $_POST["changefile"] ) ) {

投稿フォームが送信されたかどうかを確認したい場合は、!empty($_POST)名前を付けずに送信ボタンを残してください。

<?php //...
if( !empty($_POST) ) {
//...
?>
<input type="submit" value="Save Changes">
于 2012-12-17T19:43:52.493 に答える