- ベストアンサー
確認メールアドレスの記述
PHP初心者です。 お問い合わせのフォームを作成しているのですが、その中でメールアドレスと確認のメールアドレスの欄を設けました。 …………………………………………………………………………………… <INPUT type="text" name="ご返信の連絡先" size="35" value="<?= $_POST['ご返信の連絡先'] ?>"> <INPUT type="text" name="確認メールアドレス" size="35" value="<?= $_POST['確認メールアドレス'] ?>"> …………………………………………………………………………………… 次でこのメールアドレスと確認のメールアドレスが一致するかどうかを確認したいのですが。上手く機能しません。 …………………………………………………………………………………… if($_POST['ご返信の連絡先']!=$_POST['確認メールアドレス']) { ご返信の連絡先と確認メールアドレスが一致しておりません。 <BR> <FORM method="POST" action="sample.php"> <INPUT type="submit" value="ご記入ページへ戻る" /> </FORM> } …………………………………………………………………………………… ($_POST['ご返信の連絡先']!==$_POST['確認メールアドレス']) の記述でご返信の連絡先と確認メールアドレスが違っているときの条件を表しているのでしょうか? 今の状態でしたら、ちゃんと記入していても「ご返信の連絡先と確認メールアドレスが一致しておりません。」と表示がでてしますのですが。 何か原因がありましたら、教えてください。お願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
やっと「実際のソース」が提示されたわけですが、提示された内容自体には何も問題がありませんね・・。下記のようなコードでテストしてみましたが、ちゃんとチェック出来てます。質問者さんの環境で下記コードで再現しますか? <FORM ACTION="" METHOD="POST"> <INPUT type="text" name="mail" size="35" value="<?= $_POST['mail'] ?>"> <INPUT type="text" name="mail2" size="35" value="<?= $_POST['mail2'] ?>"> <INPUT TYPE="submit" VALUE="POST!"> </FORM> <?php if ($_POST) { if($_POST['mail']!==$_POST['mail2']) { print 'ご返信の連絡先と確認メールアドレスが一致しておりません。'; } else { print '一致しました'; } } ?> ANo.4の方と同じく「提示されていない部分になにかある」としか思えません。 #「再現可能なミニマムコード」を提示いただけるといいのですが・・。
その他の回答 (4)
- TAI_0824
- ベストアンサー率54% (6/11)
以下を一見したところ、問題無いような気がします。ということは、以外と単純なミスかもしれません。 if($_POST['mail']!==$_POST['mail2']) の直前に echo "***".$_POST['mail']."<br>"; echo "+++".$_POST['mail2']."<br>"; と入れてみると、この2つは全く同じですか? もし違っているようなら、例えばこのif文に来る前に、$_POST['mail'] か $_POST['mail2'] に誤って何かしらの値を入れてしまっているか、他のフォーム部分で同じ名前(mail、mail2)を使ってるとか、という単純なことかも知れませんね。
お礼
ありがとうございました。解決しました! 丁寧に解説してくださってありがとうございます。またよろしくお願いします!
- shimix
- ベストアンサー率54% (865/1590)
>文字コードはしっかり機能していると思います。 いや、ですからフォームからPOSTされる文字コードとスクリプトの文字コードで不整合はないのかを尋ねてます。 >PHPのシンタックスエラーというのはどういうものなのでしょうか? if のあとの文ブロックの中で、printもechoもなし(当然スクリプト終端の「?>」もなし)にいきなりhtmlを書けばSyntaxエラー(文法エラー)になるはずです(phpだとParse errorの表示かな・・)。なので、このソースは確実に動きません。 >これはサンプルで作っているので、わかりやすい名前で記述しています。 わかりやすくても「動かない」サンプルに意味はないと思います。もしこのソースと実際のソースが違うのであれば、このソースで検証する意味がありませんので、回答出来ません。 ANo.1でお願いしましたが、print_r($_POST)でPOSTされた内容がどう格納されているかを確認されましたか?文字コードなどがわからないので100%とはいえませんが、ほぼ間違いなく日本語の長音などは化けてしまっているハズです(文字コードによっては他の部分も化けているかもしれません)。私がANo.1に書いたことを確認すればすぐにわかることだと思います。 もし「実際には違うnameになっている(日本語は使っていない)」のであれば、実際のソースを書いてください。(前述のhtml部分の件も含めて)わざわざ動かないソースに変更して提示されても困ります。
補足
<INPUT type="text" name="mail" size="35" value="<?= $_POST['mail'] ?>"> <INPUT type="text" name="mail2" size="35" value="<?= $_POST['mail2'] ?>"> …………………………………………………………………………………… <?php if($_POST['mail']!==$_POST['mail2']) { ?> ご返信の連絡先と確認メールアドレスが一致しておりません。 <BR> <FORM method="POST" action="sample.php"> <INPUT type="submit" value="ご記入ページへ戻る" /> </FORM> <?php } else { ?> //略 } …………………………………………………………………………………… 文字コードの不都合は起きていません。文字化けも一切起きてはいないのですが。申し訳ないです。上部のようなソースで記述しています。 print_r($_POST)ではしっかり機能できました。 今はフォームにしっかり記入したとしても、「ご返信の連絡先と確認メールアドレスが一致しておりません。」とでてしまします。 説明不足で申し訳ないです。お願いします。
- _chihiro_
- ベストアンサー率63% (26/41)
> if($_POST['ご返信の連絡先']!=$_POST['確認メールアドレス']) > { > ご返信の連絡先と確認メールアドレスが一致しておりません。 > <BR> > <FORM method="POST" action="sample.php"> > <INPUT type="submit" value="ご記入ページへ戻る" /> > </FORM> > } この記述ではPHPのシンタックスエラーになると思うのですが、、、? もしエラーになっていなければ、このファイルがPHPとして読み込まれていないかもしれません。 あと配列のキーに日本語を使うのは辞めたほうが良いです。なるべく半角英数を使うようにしましょう。
補足
回答ありがとうございます。これはサンプルで作っているので、わかりやすい名前で記述しています。 PHPのシンタックスエラーというのはどういうものなのでしょうか? if($_POST['ご返信の連絡先']!=$_POST['確認メールアドレス']) というのは間違っている記述なのでしょうか? お願い致します!
- shimix
- ベストアンサー率54% (865/1590)
フォームとphpスクリプトの文字コードは各々どうなっていますか? nameに日本語は使わないほうが無難だと思います。print_r($_POST)で確認すればわかると思いますが、nameの値が正確に受け取れていないと思います。
補足
これはサンプルで作っていますので、わかりやすいように日本語の記述にしております。そのほかに原因はあるのでしょうか? 文字コードはしっかり機能していると思います。 お願い致します。
お礼
ありがとうございました。解決しました。 違うところでおかしくなっていたみたいです。 わかりにくい質問で申し訳ないでした。またよろしくお願い致します