はじめて投稿させていただきます。
お力添えいただければ幸いです。
ホームページでメールフォームを設置しています。
php5.3で問題なく動作していました。
同じフォームを違うホームページにも使おうとソースをコピペしたのですが、正しく表示されません。
何度も確認したのですが、元データとの差異は発見できず、どうしたものかと途方に暮れていたのですが、phpのバージョンが違うことに気が付きました。
プログラムは「入力画面」「確認画面」「送信完了のお知らせ画面」の3段構成になっていて、エラーが出るのは「確認画面」です。
そのプログラムの部分のコードは以下の通りです。
<form action="submit.php" method="POST">
<?
if ($_SERVER["REQUEST_METHOD"] == "POST") {
foreach($_POST as $k => $v){
if (get_magic_quotes_gpc()) {
$v = stripslashes($v);
}
$v = htmlspecialchars($v);
$$k = $v;
}
}
else {
exit();
}
$ErrFlg = 0;
if ($name == "") {
echo "<p>お名前を入力してください。";
$ErrFlg = 1;
}
if ($email == "") {
echo "<p>メールアドレスを入力してください。";
$ErrFlg = 1;
}
if ($_POST["email1"] != $_POST["email2"]) {
echo "<li>メールアドレスに誤りがあります。</li>";
$ErrFlg = 1;
}
if (!$ErrFlg) {
?>
<dl>
<dd>お名前</dd>
<dt><?=$_POST['name']?></dt>
<dd>eメール</dd>
<dt><?=$_POST['email1']?></dt>
<dd>メッセージ</dd>
<dt><?=$_POST['message']?></dt>
</dl>
<input type="submit" value="送信">
<? } ?>
<input type="hidden" name="name" value="<?= $_POST['name'] ?>">
<input type="hidden" name="email" value="<?= $_POST['email1'] ?>">
<input type="hidden" name="message" value="<?= $_POST['message'] ?>">
</form>
上記コードで、php5.4では不具合がでてしまう箇所、もしくはそもそも…など、何かお分かりになる方がいらっしゃいましたら是非ともご教授のほど、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
あてずっぽなので合ってないとは思いますが
php.iniでshort_open_tag がおかしかったりしません?
http://php.net/manual/ja/ini.core.php
ちなみにご提示の
foreach($_POST as $k => $v){
if (get_magic_quotes_gpc()) {
$v = stripslashes($v);
}
$v = htmlspecialchars($v);
$$k = $v;
}
}
は、あまりEXTRACTと同じであまりお勧めできない書式です
外部から受けたデータを変数名として使うのはかなり危険です
nameやemailなど変数名が決めうちなのですからめんどくさがらず
$list=array("name","email")などを提示して、ループ処理をしてください
また確認画面でhiddenでデータを渡すのは今となってはあまり使わない手法ですね
入力→確認→実行 間の受け渡しはできるかぎりセッションを利用してください
ご回答ありがとうございました。
そしてご指摘の通り、short_open_tagが無効になっており、
それを有効にすることで解決いたしました。
また、回答後半でお教えいただいた内容は私にはちょっと
難しいのですが、勉強して適切なプログラムを書けるように
精進いたします。
どうもありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
syntax error, unexpected '}' ...
-
PHPで画像の渡しが上手く行きま...
-
フォームへの前回入力値をクリ...
-
ラジオボタンをsessionで使いたい
-
同じページでフォームデータを...
-
PHPで、ボタンを押すと同じペー...
-
文字列から抜き出す
-
<input type="hidden" >で配列...
-
フォームでのリセットを使う方法
-
phpの掲示板で新しい順に表...
-
選択された値をセッションで保...
-
入力フォーム→確認画面→送信画...
-
php ラジオボタンのデータの渡...
-
エラーを元の画面に表示させるには
-
ラジオボタンを押すと、表示が...
-
検索時の選択内容を保持する方法
-
テキストボックスとsubmitボタ...
-
チェックボックスのvalueを連結...
-
smartyでチェックボックスをチ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<input type="hidden" >で配列...
-
検索時の選択内容を保持する方法
-
HTMLで前の画面に戻る時、入力...
-
DBの値をチェックボックスに反...
-
フォームへの前回入力値をクリ...
-
PHPでCookieを使った訪問回数に...
-
PHPで画像の渡しが上手く行きま...
-
PHP ボタンが押されたら処理を...
-
HTMLのリンクをクリックするこ...
-
syntax error, unexpected '}' ...
-
画面が更新されてもチェックボ...
-
チェックボックスのvalueを連結...
-
チェックボックスの必須項目指定
-
PHPでユーザー情報を入力して簡...
-
PHPの関数実行
-
POSTデータのNAME属性をVALUEに...
-
パラメーターを隠す
-
phpで分からないエラーが出てし...
-
PHPで、ボタンを押すと同じペー...
-
テキストボックスに初期値を入れる
おすすめ情報