2017-08-27 6 views
1

私はプログラミングが初めてで、テストするために単純なフォームを作成しようとしました。事は、私が送信ボタンをクリックしたときに、それはテキストのみを示し、であり、データは表示されません...ここでPHPフォーム:答えが表示されない

は、HTMLファイル内のフォームです:

<FORM ACTION="FORM.PHP" METHOD="POST"> 
<P> 
Ton nom: <INPUT TYPE="TEXT" NAME="Tonnom" /> <br /> 
Espace test: <INPUT TYPE="TEST" NAME="Espacetest" /> 
</P> 

<P> 
Est-ce que ce site s'affiche correctement ? 
<INPUT TYPE="RADIO" NAME="AFFICHAGE" VALUE="OUI" CHECKED="CHECKED" /> Oui 
<INPUT TYPE="RADIO" NAME="AFFICHAGE" VALUE="NON" /> Non 
<INPUT TYPE="RADIO" NAME="AFFICHAGE" VALUE="PAS SÛR" /> Pas sûr 
</P> 

<P> 
Des commentaires ? <BR /> 
<TEXTAREA NAME="COMMENTAIRES" ROWS="10" COLS="40"></TEXTAREA> 
</P> 

<P> 
<INPUT TYPE="SUBMIT" VALUE="GO!"></P> 
</FORM> 

そして、ここにいますそれにリンクされているPHPファイル:

enter image description here

<HTML> 

<HEAD> 
<META CHARSET="UTF-8"> 
</HEAD> 

<BODY> 
Ton nom est: <?php echo $_POST['Tonnom']; ?><BR /> 
Dans l'espace test, tu as écris: <?php echo $_POST['Espacetest']; ?><BR /> 
<BR /> 

Est-ce que ce site s'affiche correctement ? <?php echo $_POST['AFFICHAGE']; 
?><BR /> 
<BR /> 

Commentaires:<BR /> 
<?php echo $_POST['COMMENTAIRES']; ?> 
</BODY> 

</HTML> 

ここでは、私が送信ボタンをクリックしたときに現れるだけのことです3210

私は二重チェックし、phpファイルの名前は実際には '' FORM.PHP ''です。 PHPをサポートしている000webhostのファイルマネージャーを使用してホストされています。

もし誰かが私が無知だから、私は感謝するでしょう。

+0

難しいと言えば、宛先ファイルの名前は小文字ですが、あなたのフォームは大文字です – James

+0

いいえ、それは大文字ですので、それは問題ではありません。 – Hayclair

+0

XSSを読み、それを防ぐ方法あなたはこのライブを置く。 –

答えて

2

Apache(および他のWebサーバーなど)のファイル拡張子は、デフォルトで大文字と小文字が区別されます。

FORM.PHPからform.phpにファイル名を変更してください(重要な部分は.phpです)。

FORM.PHPは、ページを右クリックして[ソースを表示]を選択すると、純粋なHTMLとして表示されます。実際のPHPコードが表示されます。

ブラウザが使用するのではなく、

+0

それでした!ありがとう:D – Hayclair

0

1)あなたは、PHPをチェックしたい場合は、ローカルサーバまたはライブサーバ内の仕事やないが、そう、このコードを追加している

<?php phpinfo();?> 

あなたのphpでPHPが仕事である場合ので、この機能は動作します。

2)[Go]ボタンをクリックした後でページを更新すると思います。ブラウザにコードを表示しないようにします。 私のローカルPCで2つのコードをチェックして、あなたのHTMLコードとPHPコードが完全に動作するようにしてください。 フォームに記入してgoボタンをクリックしてコンテンツを表示します。

0

(なぜならPHP-文に巻き付け開口部<と閉じ>の)HTMLタグとしてそれをレンダリングするので、あなたがページ上で直接それを見ることはありません理由がありますHTMLファイルとPHPファイルを使用すると、コード全体を1つのファイルform.phpに入れ、入力したデータを表示するか、エラーの場合はフォームを表示することができます。コードはここでは文書を使用して結果を表示します。 OPのコードから欠落している重要な部分は、私はこの例に含めるサーバー側の検証です:

<HTML> 
<HEAD> 
</HEAD> 

<BODY> 
<?php 
if (isset($_POST['SUBMITTED']) && $_POST['SUBMITTED'] == 'GO!'){ 
    $error = 0; 
    $clean['Tonnom'] = ctype_alnum($_POST['Tonnom'])? $_POST['Tonnom'] : ''; 
    if ($clean['Tonnom'] == '') $error++; 

    $clean['Espacetest'] = ctype_alnum($_POST['Espacetest'])? $_POST['Espacetest'] : ''; 
    if ($clean['Espacetest'] == '') $error++; 

    if ($_POST['AFFICHAGE'] == 'OUI' || $_POST['AFFICHAGE'] == 'NON' || $_POST['AFFICHAGE'] == 'PAS SÛR') { 
      // data is what is expected 
      $clean['AFFICHAGE'] = $_POST['AFFICHAGE']; 
    } 
    else 
    { 
    // somebody messed with this form field, so: 
     $clean['AFFICHAGE'] == ''; 
     $error++; 
     // redisplay form and/or provide error message 
    } 

    $clean['COMMENTAIRES'] = ctype_alnum($_POST['COMMENTAIRES'])? $_POST['COMMENTAIRES'] : ''; 
    if ($clean['COMMENTAIRES'] == '') $error++; 
    // if any data results in empty string decide about error messages and whether you 
    // want to throw an exception 
    if ($error > 0) { 
     header("Location: form.php"); 
    } 

echo <<<"FOOBAR" 
Ton nom est: {$clean['Tonnom']}<BR /> 
Dans l'espace test, tu as écris: {$clean['Espacetest']}<BR /> 
<BR /> 

Est-ce que ce site s'affiche correctement ? {$clean['AFFICHAGE']} 
<BR /> 
<BR /> 

Commentaires:<BR /> 
    {$clean['COMMENTAIRES']} 
FOOBAR; 
exit(); 
} 
?> 

<FORM ACTION="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" METHOD="POST"> 
<P> 
Ton nom: <INPUT TYPE="TEXT" NAME="Tonnom" /> <br /> 
Espace test: <INPUT TYPE="TEST" NAME="Espacetest" /> 
</P> 

<P> 
Est-ce que ce site s'affiche correctement ? 
<INPUT TYPE="RADIO" NAME="AFFICHAGE" VALUE="OUI" CHECKED="CHECKED" /> Oui 
<INPUT TYPE="RADIO" NAME="AFFICHAGE" VALUE="NON" /> Non 
<INPUT TYPE="RADIO" NAME="AFFICHAGE" VALUE="PAS SÛR" /> Pas sûr 
</P> 

<P> 
Des commentaires ? <BR /> 
<TEXTAREA NAME="COMMENTAIRES" ROWS="10" COLS="40"></TEXTAREA> 
</P> 

<P> 
<INPUT TYPE="SUBMIT" name="SUBMITTED" VALUE="GO!"></P> 
</FORM> 

</BODY> 
</HTML> 

form.phpに提出ページにリダイレクトされますecho htmlentities($_SERVER['PHP_SELF']);に、フォームのACTION属性を設定するとのような任意のPHP_SELFの悪用を回避しますXSS; hereを参照してください。

送信されたデータを最初に検証せずに使用することは賢明ではないことに注意してください。もちろん、検証コードは、エラー処理を変更するだけでなく、深度の妥当性検証に関しても、好みに合わせて調整することができます。誰もが、安全に使用することがわかるまで、提出されたデータを使用しないという主要な考えをうまく得ることができます。

NTFSでWindowsを実行している場合、ファイル名は大文字と小文字を区別しないため、その環境のApacheはFORM.PHPをPHPファイルとしてhereと認識します。

また、何らかの理由で、「PAS SUR」の外部レターがGoogle Chromeで正しく表示されましたが、UTF-8を指定したメタタグを取り除いてANSIエンコーディングでファイルを保存しただけです。

最後に、送信された入力に「サブミット」という名前を付けました。これにより、フォームにフォームが送信されたときにコードが認識できるようになりました。

関連する問題