プロが教えるわが家の防犯対策術!

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['確認メールアドレス'])
の記述でご返信の連絡先と確認メールアドレスが違っているときの条件を表しているのでしょうか?
今の状態でしたら、ちゃんと記入していても「ご返信の連絡先と確認メールアドレスが一致しておりません。」と表示がでてしますのですが。
何か原因がありましたら、教えてください。お願いします。

A 回答 (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の方と同じく「提示されていない部分になにかある」としか思えません。

#「再現可能なミニマムコード」を提示いただけるといいのですが・・。
    • good
    • 0
この回答へのお礼

ありがとうございました。解決しました。
違うところでおかしくなっていたみたいです。
わかりにくい質問で申し訳ないでした。またよろしくお願い致します

お礼日時:2008/03/03 20:30

以下を一見したところ、問題無いような気がします。

ということは、以外と単純なミスかもしれません。
if($_POST['mail']!==$_POST['mail2'])
の直前に
echo "***".$_POST['mail']."<br>";
echo "+++".$_POST['mail2']."<br>";
と入れてみると、この2つは全く同じですか?
もし違っているようなら、例えばこのif文に来る前に、$_POST['mail'] か $_POST['mail2'] に誤って何かしらの値を入れてしまっているか、他のフォーム部分で同じ名前(mail、mail2)を使ってるとか、という単純なことかも知れませんね。
    • good
    • 0
この回答へのお礼

ありがとうございました。解決しました!
丁寧に解説してくださってありがとうございます。またよろしくお願いします!

お礼日時:2008/03/03 20:28

>文字コードはしっかり機能していると思います。



いや、ですからフォームから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)ではしっかり機能できました。

今はフォームにしっかり記入したとしても、「ご返信の連絡先と確認メールアドレスが一致しておりません。」とでてしまします。

説明不足で申し訳ないです。お願いします。

補足日時:2008/02/27 22:26
    • good
    • 0

> if($_POST['ご返信の連絡先']!=$_POST['確認メールアドレス'])


> {
> ご返信の連絡先と確認メールアドレスが一致しておりません。
> <BR>
> <FORM method="POST" action="sample.php">
>   <INPUT type="submit" value="ご記入ページへ戻る" />
> </FORM>
> }

この記述ではPHPのシンタックスエラーになると思うのですが、、、?
もしエラーになっていなければ、このファイルがPHPとして読み込まれていないかもしれません。

あと配列のキーに日本語を使うのは辞めたほうが良いです。なるべく半角英数を使うようにしましょう。

この回答への補足

回答ありがとうございます。これはサンプルで作っているので、わかりやすい名前で記述しています。
PHPのシンタックスエラーというのはどういうものなのでしょうか?

if($_POST['ご返信の連絡先']!=$_POST['確認メールアドレス'])
というのは間違っている記述なのでしょうか?

お願い致します!

補足日時:2008/02/27 09:08
    • good
    • 0

フォームとphpスクリプトの文字コードは各々どうなっていますか?



nameに日本語は使わないほうが無難だと思います。print_r($_POST)で確認すればわかると思いますが、nameの値が正確に受け取れていないと思います。

この回答への補足

これはサンプルで作っていますので、わかりやすいように日本語の記述にしております。そのほかに原因はあるのでしょうか?

文字コードはしっかり機能していると思います。

お願い致します。

補足日時:2008/02/27 09:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!