0

これは、サーバーのフォルダーに書いた PHP スクリプトです。

<?php
$answer = $_POST['ans'];  
if ($answer == "yes.") {          
    $testo = "qwe\r\n";  
    $documento ="/other/yes.txt";
    $identificatore = fopen($documento, "a");
    fwrite($identificatore, $testo) ;
}
else {
    $testo = "qwe\r\n";  
    $documento ="/other/no.txt";
    $identificatore = fopen($documento, "a");
    fwrite($identificatore, $testo) ;
}     

fclose($identificatore);
header('http://mk7vrlist.altervista.org/other/poll.html');

?>

このコードは、ラジオグループから回答を取得し、回答がYesである場合、 というファイルを作成しますyes.txt。それ以外の場合は、というファイルが作成されno.txtます。これがイメージです。

ここに画像の説明を入力

これは HTML コードです。

<form name="mainform" action="poll.php" method="POST">
<br />
<input type="radio" name="yes" value="yes">Yes, I like it.<br>
<br />
<input type="radio" name="yes" value="no" onclick="apri();">No, I want the old layout.
</fieldset>

//other code...

<input type="submit" value="Send" />
</td>
</table>
</form>

[送信] ボタンをクリックしても、スクリプトはサーバーに何も保存しません。なぜなのかご存知ですか?

4

4 に答える 4

3

1 つの問題は、$_POST['ans'] を使用していることですが、実際のラジオ ボタンは「yes」と呼ばれています。

また、フォームにフィールドセットの閉じタグがあります。

于 2013-09-01T16:38:35.613 に答える
1

/ (ルートディレクトリ) に書き込もうとしているのですが、php ユーザーはフォルダに対する権限を持っていますか?

これを試してください: /project_folder -poll.php -other (書き込み権限を持つ別のフォルダーを作成します)。

poll.php

<?php
          $base = __DIR__; //if your php version dont work __DIR__ try: dirname(__FILE__);
          if ($answer == "yes.") {          
        $testo = "qwe\r\n";  
        $documento =$base."/other/yes.txt";
        $identificatore = fopen($documento, "a");
        fwrite($identificatore, $testo) ;
        }
        else {
        $testo = "qwe\r\n";  
        $documento =$base."/other/no.txt";
        $identificatore = fopen($documento, "a");
        fwrite($identificatore, $testo) ;
    }     

   fclose($identificatore);
   header('http://mk7vrlist.altervista.org/other/poll.html');
于 2013-09-01T16:47:18.643 に答える
1

まず、両方のラジオ ボタンを呼び出す必要がありますname="ans"name="yes"

if ($answer == "yes.")ドットを含めないでください。

また、ヘッダーが適切にフォーマットされていません:

header('http://mk7vrlist.altervista.org/other/poll.html');

次のように読む必要があります。

header('Location: http://mk7vrlist.altervista.org/other/poll.html');

これ:

<input type="radio" name="yes" value="no" onclick="apri();">

onclick="apri();そこには属しません。submitこれを使用する場合は、ボタンと組み合わせて使用​​します。

Linux と Windows の反応が異なるため、これ$testo = "qwe\r\n";を再フォーマットする必要がある場合があります。$testo = "qwe" . "\n";\r

HTML フォーム (再フォーマット)

<form name="mainform" action="poll.php" method="POST">
<br />
<input type="radio" name="ans" value="yes">Yes, I like it.<br>
<br />
<input type="radio" name="ans" value="no">No, I want the old layout.
</fieldset>

<input type="submit" value="Send" />
</td>
</table>
</form>

PHP ハンドラ

<?php
$answer = $_POST['ans'];  
if ($answer == "yes") {          
    $testo = "YES\n";  
    $documento ="yes.txt";
    $identificatore = fopen($documento, "a");
    fwrite($identificatore, $testo) ;
}
else {
    $testo = "NO\n";  
    $documento ="no.txt";
    $identificatore = fopen($documento, "a");
    fwrite($identificatore, $testo) ;
}     

fclose($identificatore);
header('Location: http://mk7vrlist.altervista.org/other/poll.html');

// echo "ok done";

?>

EDIT(カウンターメソッドとしてオプション)


最終的に非常に大きくなる可能性があるデータを追加する代わりに、回答をカウンターとして使用することもできます。

注:0最初に、番号(ゼロ)を含む 2 つのファイルを作成する必要があります。

yes_count.txtno_count.txt

そのような方法のテスト済みの例を次に示します。

<?php
$answer = $_POST['ans'];
if ($answer == "yes") {

$fr_yes = fopen("yes_count.txt", "r");
$text_yes = fread($fr_yes, filesize("yes_count.txt"));
$fw = fopen("yes_count.txt", "w");
$text_yes++;
fwrite($fw, $text_yes);

// will echo the counter but you can use header to redirect after
echo $text_yes; 
//  header('Location: http://mk7vrlist.altervista.org/other/poll.html');

}
else {

$fr_no = fopen("no_count.txt", "r");
$text_no = fread($fr_no, filesize("no_count.txt"));
$fw = fopen("no_count.txt", "w");
$text_no++;
fwrite($fw, $text_no);

// will echo the counter but you can use header to redirect after
echo $text_no;
//  header('Location: http://mk7vrlist.altervista.org/other/poll.html');

}

?>
于 2013-09-01T16:47:41.300 に答える
1

デバッグの目的で、fopen を試みるときは die ステートメントを使用する必要があります。

$fh = fopen($documento, 'a') or die('Could not append to file');

また、エラー報告がオンになっている場合は、いつでもerror_get_last()を使用して、何が失敗したかについてのより詳細な説明を取得できます。

于 2013-09-01T16:45:34.243 に答える