- 締切済み
PHPコードの間違いを指摘してください
以下2つのPHPコードの間違いを指摘してください <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken']; if($nickname=='') { print 'ニックネームが入力されていません。<br />'; } else { print 'ようこそ'; print $nickname; print '様'; print '<br />'; } if($email=='') { print 'メールアドレスが入力されていません。<br />'; } else { print 'メールアドレス:'; print $email; print '<br />'; } if($goiken=='') { print 'ご意見が入力されていません。<br />'; } else { print 'ご意見『'; print $goiken; print'』<br />'; } if($nickname==''||$email=''||$goiken='') { print '<form>'; print '<input type="button" onclick="history.back()" value="戻る">'; print '</form>'; } else { print '<form method="post" action="thanks.php">'; print '<input name="nickname" type="hidden" value="'.$nickname.'">'; print '<input name="email" type="hidden" value="'.$email.'">'; print '<input name="goiken" type="hidden" value="'.$goiken.'">'; print '<input type="button" onclick="history.back()" value="戻る">'; print '<input type="submit" value="OK">'; print '</form>'; } ?> </body> </html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken']; print $nickname; print '様<br />'; print 'ご意見ありがとうございました。'; print '頂いたご意見『'; print $goiken; print '』<br />'; print $email; print 'にメールを送りましたのでご確認ください。'; ?> </body> </html>
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- retorofan
- ベストアンサー率34% (435/1276)
あなたが記述されたPHPファイルには、いくつかの見直し点があります。 まず、PHPステートメントの間違い。 × if($nickname==''||$email=''||$goiken='') 〇if($nickname==''||$email==''||$goiken=='') 等価演算子 == と代入演算子 = を混同しています。 すべての変数に対して等価演算子 == を使用する必要があります。 手直し個所は、これだけにとどまりません。 ・現代のHTMLでは <!DOCTYPE html> の使用が推奨されています。 ・$_POST 変数の使用前に、isset() 関数を使用して変数がセット されているかどうかを確認するべきです。 ・print 文よりも、echo の方が一般的に使用されます。 echo は少し速く、print と同じように機能します。 ・ユーザー入力をエスケープしていません。 htmlspecialchars() 関数を使用してXSS攻撃を防ぐべきです。 両方のコードに共通する問題点としては、 セキュリティ対策が不十分であるといえます。
- agehage
- ベストアンサー率22% (2752/12072)
if($nickname==''||$email=''||$goiken='') { この部分、メールとご意見のところ、=じゃなくて==だと思う
お礼
解決しました。ありがとうございました。