こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

メールフォームのPHPについて質問です。

以下のようなメールフォームを作ったのですが何故か値の受け渡しが上手くいきません。
以前どこかのサイトを参考にして作ったもので別で自分の作ったサイトでは問題なく受け渡しができたのですが、なぜか今回はできません。
自分が作って成功したサイトをそのままサーバーにアップロードしても出来ないのがよくわからないのです。
どうすれば受け渡しがうまくいくのでしょうか?

どなたか知恵を分けていただきたいです。何卒よろしくお願いいたします。

▼ここからinquiry.html▼



<div id="main_inquiry">
<div id="box_inquiry">
<h1>お問い合わせ</h1>

<div id="form">
<form method="POST" action="inquiry_check.php">
<p class="form">お名前</p>
<p class="text"><input type="text" name="name" size="50"><br></p>
<p class="form">電話番号</p>
<p class="text"><input type="text" name="tel" size="50"><br></p>
<p class="form">Eメール</p>
<p class="text"><input type="text" name="email" size="50"></p><br>

<p class="form">備考</p>
<p class="text"><textarea name="bikou" cols="50" rows="10"></textarea></p>

</div>
<!---------form-END------------------------------>
<div id="submit">
<input type="submit" value="確認" class="submit">
<input type="reset" value="リセット" class="reset">
</div>



<form method="POST" action="inquiry_check.php">
</div>


▲inquiry.html終了▲




▼ここからinquiry_check.php▼


<div id="box_check">
<h1 class="headding11">問い合わせチェック</h1>

<?php
$name=htmlspecialchars($_POST["name"]);//
if ($name == ""){
$show_name = "<font color='#000'><strong>名前が入力されていません</font></strong>";
$err_flg = 1;
} else {
$show_name = $name;
}


$tel=htmlspecialchars($_POST["tel"]);//
if ($tel == ""){
$show_tel = "<font color='#000'><strong>電話番号が入力されていません</font></strong>";
$err_flg = 1;
} else {
$show_tel = $tel;
}
$email=htmlspecialchars($_POST["email"]);//
if ($email == ""){
$show_email = "<font color='#000'><strong>e-mailが入力されていません</font></strong>";
$err_flg = 1;
} else {
$show_email = $email;
}




$bikou=htmlspecialchars($_POST["bikou"]);//
if ($bikou == ""){
$show_bikou = "<font color='#000'><strong>備考が入力されていません</font></strong>";
$err_flg = 1;
} else {
$show_bikou = $bikou;
}





if ($err_flg == 1){
$show_form = "";
} else {
$show_form = "

<input name='name' type='hidden' value='". $name ."'>
<input name='tel' type='hidden' value='". $tel ."'>
<input name='email' type='hidden' value='". $email ."'>


<input name='bikou' type='hidden' value='". $bikou ."'>
<input name='submit' type='submit' value='送信' class='soushin'>

";
}
?>
<form name="mailform" method="post" action="inquiry_finish.php">


<P align="center"><b class="kakunin">お客様情報確認</b></P>
<table class="check" width="685px" border="0" cellspacing="1" cellpadding="5">
<tr>
<td bgcolor="#EBEBEB" width="200"> 氏名</td>
<td width="540"><? echo $show_name ?></td>
</tr>
<tr>
<td bgcolor="#EBEBEB"> 電話番号<font color="#FFFFFF">  </font></td>
<td><? echo $show_tel ?></td>
</tr>
<tr>
<td bgcolor="#EBEBEB"> 電子メール</td>
<td ><? echo $show_email ?></td>
</tr>

 <tr>
<td bgcolor="#EBEBEB"> お問い合わせ内容</td>
<td ><? echo $show_bikou ?></td>
</tr>

</table>

<div align=""> <? echo $show_form ?>
<input name="submit" type="button" value="戻る" class="mouse" onClick="history.back()">
</div>


</div>
<div id="side_menu_check">
</div>




</div>
<div id="footer">

</div>

▲inquiry_check.php終了▲

投稿日時 - 2015-06-30 18:31:33

QNo.9003654

困ってます

質問者が選んだベストアンサー

記載されているソースをそのまま、コピペして動かしてみた所、データの受け渡しに関しては問題なく出来てしまいました。
症状が再現できないので、ズバリな解答ではないので参考までに。

InternetExplorerを利用されているなら、F12 開発者ツールという機能が付いています。
※FirefoxやChromeにも同様の機能は付いています。

inquiry.html を IE で表示させ、「F12」キーを押して、開発者ツールを表示させます。
「コンソール」というタブを開くとエラーや注意が表示されます。ここで、formの動きに関わりそうなエラーを確認してみて下さい。

formに値を入力し、「確認」ボタンをクリックして、inquiry_check.php に遷移して下さい。
こちらでも、「コンソール」のタブでformやPOSTに関わるエラーや注意を確認してみて下さい。

「ネットワーク」のタブを開いて、URLをダブルクリックすると、ページの詳細が表示できます。
要求本文を見ると、POSTされた値が分かるので、状態の切り分けができると思います。

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2015-07-01 17:40:10

お礼

ご回答いただき誠にありがとうございます!

<? echo $show_name ?>
<? echo $show_tel ?>
など<?php echo $show_name ?>とphpを付け足したら何故か直りました。別で作ったformは<?phpなしでも普通に表示できるのにやはりプログラムは難しい。
ただこうやってバグを直したり勉強したりするのはイライラするが直った時の
スっきり感はなんとも言えないですね。
PHPマニュアルや読み足りないのとHTMLももっと丁寧に入力しないといけないと思わされました。
開発者ツールの使い方を教えていただきありがとうございます。
firebugを使ってみたところ値の受け渡しなど簡単にわかりますね。
HTMLやCSSには使っていましたがPHPでの使い方はわからなかったです。

今回はとても参考になりました。
また機会がございましたらご教授いただけるとありがたいです。
本当にありがとうございました。

投稿日時 - 2015-07-01 21:12:59

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

現象とは無関係でしょうけど、元のフォーム(html)にform要素の閉じがありませんね。

#最低限真っ当なhtmlを書いてください。

また受け取ったデータ($_POST["name"]など)をいきなりhtmlspecialcharsしているのは何故でしょうか?普通は「表示する直前」に(というか表示するときの引数にだけ)適用すべきエスケープです。



閑話休題

htmlsepcialcharsの第3引数(encoding)が省略されていますが、ini_get("default_charset")の値はhtmlやphpを書いている文字セットと同一ですか?これが異なっているとhtmlspecialcharsは空文字列を返します。キチンと第3引数まで指定してください。

http://www.php.net/manual/ja/function.htmlspecialchars.php

投稿日時 - 2015-06-30 21:19:33

お礼

agunuz様
いつもご回答いただき誠にありがとうございます。
formはさっそく閉じさせていただきました。

>htmlsepcialcharsの第3引数(encoding)が省略されていますが、>ini_get("default_charset")の値はhtmlやphpを書いている文字セットと同一ですか?これが異>なっているとhtmlspecialcharsは空文字列を返します。キチンと第3引数まで指定してくださ
>い。

のところの内容が私には難しいのでhtmlspecialcharsに関しては自分なりにPHPマニュアルを調べてみたいと思います。

今回も勉強させていただき誠にありがとうございました。

投稿日時 - 2015-06-30 22:08:55

あなたにオススメの質問