• 締切済み

ifの処理について。

初めて投稿させていただきます。諸先輩方よろしくお願いします。 現在PHP5、MYSQLを使ってポイントで買い物が出来るサイトを作成中です。 本人確認のためセッションされているメールアドレスとパスワードと 入力されたメアド、パスワードが同じなら ポイントを使って買い物出来き、残りのポイントを他のテーブルに返す様にしたいのですが、 1、メールアドレスが違います。再度メールアドレスをご確認下さい。 というエラーが返ってきてしまい、欲しい実行結果(残りのポイント数を表示する。)になりません。 どこが間違っているかわからないので教えてください。 <?php $se_EMAIL="a"; $se_PWD = A; $se_POINT = 25000; $P_EMAIL="a"; $P_PWD = A; $Pay1 =1; $q_array=array(1=>"200000","500000","1000000"); //未入力項目がないか確認 if($P_EMAIL="" || $P_PWD="" ) { echo ("未入力項目があります。戻るボタンで戻り、再度入力項目をご確認下さい。"); } else { //入力したメアドとパスワードがセッションしてる物と同じか確認 if($se_EMAIL != $P_EMAIL) {echo ("メールアドレスが違います。再度メールアドレスをご確認下さい。");} elseif($se_PWD != $P_PWD) {echo ("パスワードが違います。再度パスワードをご確認下さい。");} //同じなら換金したいポイントをse_POINTからを引き$NEWPOINへ。 //最低変更のポイントが200000ポイントなので・・・ else{ if($se_POINT >= 200000) {$NEWPOINT = $se_POINT-$q_array[$Pay1];} else{echo ("ポイントが不足しています。再度ポイントをご確認下さい。");} } ?> <html> <head> </head> <body> <br> <br> 残りは<?= $NEWPOINT ?>ポイントです。 <br> </body> </html>

  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 if ( $se_EMAIL != $P_EMAIL ) { の直前で$se_EMAILと$P_EMAILを表示してみるとわかると思いますが、 $P_EMAILが空になってしまっています。 それが何故かというと、 if($P_EMAIL="" || $P_PWD="" ) の部分が間違えています。 if($P_EMAIL=="" || $P_PWD=="") になります。比較は==を使用します。 現在の処理だと$P_EMAILに空文字を代入する記述になります。 単純で何かよくわからない動きの場合はechoはprintを使用して 変数の中身を表示すると原因がつかみやすいですよ。

senbee555
質問者

お礼

テストした結果思惑通りになりました。 ありがとうございました。 今後とも活用させていただきます。 LancerVII様 本当にありがとうございました。

関連するQ&A

  • エラー表示について

    PHP初心者の波平と申します。 今PHP5、Mysqlを使ってDBの作成をしています。 この度のエラーメッセージの表示をスイッチ文を使ってエラーを表示したいのですがPHPの構文エラーで最後の行でParse error: syntax error,というエラーが出てしまいます。ドコがいけないんでしょうか?宜しくお願いします。 <?php $se_EMAIL="a"; $se_PWD = A; $se_POINT = 1210000; $P_EMAIL="a"; $P_PWD = A; $Pay1 = 3; $q_array=array(1=>"200000","500000","1000000"); //未入力項目がないか確認 if($P_EMAIL=="" || $P_PWD=="" ) { Error(1); } else { //入力したメアドとパスワードがセッションしてる物と同じか確認 if($se_EMAIL != $P_EMAIL) {Error(2);} elseif($se_PWD != $P_PWD) {Error(3);} //同じなら換金したいポイントをse_POINTからを引き$NEWPOINへ。 else{ if($Pay1 == 1) if($se_POINT >= 200000) {$NEWPOINT = $se_POINT-$q_array[$Pay1];} else {Error(4);} } ?> <html> <head> </head> <body> <br> $NEWPOINTの表示<br> 残りは<?= $NEWPOINT ?>ポイントです。<br> </body> </html> <?php function Error($error_type){ switch($error_type){ case 1: $error_msg = "未入力項目があります。"; break; case 2: $error_msg = "メールアドレスが違います。"; break; case 3: $error_msg = "パスワードが違います"; break; case 4: $error_msg = "ポイントが不足しています。"; break; } ?> <html> <head> </head> <body> **** エラー ****<br> <?= $error_msg ?><br> </body> </html> <?php exit; } ?>

    • ベストアンサー
    • PHP
  • PHPでのPASSWORD一致確認処理について

    PHPでのパスワード一致処理についてお聞きしたくこの場をお借りします。ただいまPHPの勉強をしていてなぜかパスワードの確認でエラーがでてしまいます。 $pass = $HTTP_POST_VARS["pass"]; $pass1 = $HTTP_POST_VARS["pass1"]; if (strlen($pass) == 7 and strlen($pass1) == 7){ if($pass == $pass1){ }else{ echo "パスワードが一致しません<BR><BR>"; echo "<A HREF='new_register.php' onClick='history.back();return false;'>戻る</A><BR>"; exit; }else{ echo "パスワードは8文字以内で入力してください<br><br>" echo "<A HREF='new_register.php' onClick='history.back();return false;'>戻る</A><BR>"; exit; } と打ち込んだんですが、エラーが出てしまいます。 パスワードは8文字以内で半角英数字のみです。 どなたか間違いの指摘のほうお願いいたします。

    • 締切済み
    • PHP
  • if文が上手くいかない

    while($row = mysql_fetch_array($res)){ $st = $row['st']; } while($row2 = mysql_fetch_array($res2)){ if(!$st==""){ echo $row2['name'].'<br>出勤<br>'; }else{ echo $row2['name']; } } 上記のように$stが有る場合、無い場合を振り分けています。 一方は有る、一方は無い状態で上記を表示した所 タモリ 出勤 つるべ 出勤 と、両方でてしまいます。 タモリ 出勤 つるべ と片方にしか出ないようにしたいのですが、どうしたらいいでしょうか?? mysql_queryが一つの場合上手くいきましたが、二つの場合上記のようになります。

    • 締切済み
    • PHP
  • メールアドレスをフォーム入力する際

    メアドをフォームで入力する際に下記ソースだと、全角文字や@無しなどがDBに入ってしまいます、どうやってメアドだけ入力出来るようにするのでしょうか? <?php $EMAIL = $_POST["EMAIL"]; $PWD = $_POST["PWD"]; $LUCKYNAME = $_POST["LUCKYNAME"]; $SEXTYPE = $_POST["SEXTYPE"]; $DateofBirthYear = $_POST["DateofBirthYear"]; $DateofBirthMonth = $_POST["DateofBirthMonth"]; $DateofBirthDay = $_POST["DateofBirthDay"]; if($EMAIL == ""or not"@" || $PWD == "" || $LUCKYNAME == "" || $SEXTYPE == "" || $DateofBirthYear == "" || $DateofBirthMonth == "" || $DateofBirthDay == "") { ?> <HTML> <head> </head> <body> <P>未入力もしくは未選択の項目があります。</p> ブラウザのバックボタンで戻り入力内容を確認してください。 <?php } else { /* campaign.htmlからの送信データに未入力がない場合 */ ?> <p><b>間違いがないか確認して下さい。</b><p> <form action="campaign3.php" method="post"> <table> <tr> <td>メールアドレス</td> <td><?= $EMAIL ?></td> </tr>

    • 締切済み
    • PHP
  • 簡単なif文でちゃんと分岐しません

    今参考書を見ながらやっていますがうまくいきません。 postからusernameとpasswordの値を受け取って処理する スクリプトなんですが、うまく作動してくれません。 ■問題点 分岐点が4箇所ありますが、 パスワードだけ間違っても、すべて■1■ ログイン処理状態になります。 どうしてもパスワード再設定の画面に切り替わりません。 入力されたデータはデータベースにきちんと入ります。 3日間これで悩んでいて、ついに投稿してみました。 こんなこともわからない私ですが なんとかお願い致します。 ----ここから---- <?php session_start(); $username = $_POST["username"]; $sql = "SELECT * FROM `art_users` WHERE `user_name` = '%{$username}%'"; $query = mysql_query($sql) or die("データ追加エラー" . mysql_error()); $record = mysql_fetch_array($query, MYSQL_ASSOC); if ( $_POST["mode"] == "login" && mysql_num_rows($query) > 0 && $_POST["password"] == $record["user_password"] ) { $_SESSION["userid"] = $record["user_id"]; header("Location: kaukau_top.php"); } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ログイン処理</title> </head> <body> <?php // ■1■ ログイン処理状態 if ( $_POST["mode"] == "login" ) { // 新規登録:クエリ実行結果が0行=既存ユーザー名と一致しない if ( mysql_num_rows($query) == 0 ) { echo '新規ユーザー登録<br>'; echo '<form action="kaukau_login.php" method="POST">'; echo '<input type="hidden" name="mode" value="register">'; echo '<input type="submit" value="登録">'; echo '</form>'; } // パスワードミス:クエリ実行結果のパスワードと入力されたパスワードが一致しない elseif ( $_POST["password"] != $record["user_password"] ) { echo 'パスワードが違います。<br>'; echo 'ひみつの質問に答えると、パスワードを変更できます。<br>'; echo '<form action="kaukau_login.php" method="POST">'; echo '<input type="hidden" name="username" value="' . $username . '">'; echo '<input type="hidden" name="mode" value="resetpassword">'; echo '<input type="submit" value="送信">'; echo '</form>'; } } // ■2■ パスワード再設定状態 elseif ( $_POST["mode"] == "resetpassword" ) { if( $record["user_answer"] == $_POST["answer"] ) { echo 'パスワード再設定<br>'; echo '<form action="kaukau_login.php" method="POST">'; echo '<input type="hidden" name="username" value="' . $username . '">'; echo '<input type="hidden" name="mode" value="modifypassword">'; echo '<input type="submit" value="登録">'; echo '</form>'; } else{ echo "ひみつの答えが違います"; } } // ■3■ 新規ユーザー登録状態 elseif ( $_POST["mode"] == "register" ) { if( $_POST["password"] == $_POST["confirm"] ) { $sql = "INSERT INTO users (user_name, user_password, user_question, user_answer) VALUES ("; $sql .= " '" . $_POST["username"] ."',"; $sql .= " '" . $_POST["password"] ."',"; $sql .= " '" . $_POST["question"] ."',"; $sql .= " '" . $_POST["answer"] ."')"; $result = mysql_query($sql); echo '登録しました。'; } else { echo 'パスワードを再確認してください。'; } } // ■4■ パスワード変更状態 elseif ( $_POST["mode"] == "modifypassword" ) { if ( $_POST["password"] == $_POST["confirm"] ) { $sql = "UPDATE users"; $sql .= " SET user_password = '" . $_POST["password"] . "'"; $sql .= " WHERE user_name = '" . $_POST["username"] . "'"; mysql_query( $db, $sql ); echo '登録しました。'; } else { echo 'パスワードを再確認してください。'; } } ?> </body> </html>

    • 締切済み
    • PHP
  • if構文の中で更に条件分岐をしたい

    ニュース記事を下記のようにカテゴリ別に表示しています。 while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ if($rec['category'] == 1){ echo '<a href="'.$rec['url'].'" target=_blank>'.$rec['title'].'</a><br>'; } elseif($rec['category'] == 2){ echo '<a href="'.$rec['url'].'" target=_blank>'.$rec['title'].'</a><br>'; } elseif($rec['category'] == 3){ echo '<a href="'.$rec['url'].'" target=_blank>'.$rec['title'].'</a><br>'; } } 24時間以内の記事にはNEWを表示したいのですが、どのように組み込んだらいいのか分かりません。 下記がNEWを表示するためのコードです。 while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $ts = strtotime($rec['date']); $tsi = (time()-$ts); if($tsi<86400){ echo new.'<br>'; } else{ echo '<br>'; } } このようにifの中で更に条件分岐したい場合、どのようなやり方があるのでしょうか?

    • ベストアンサー
    • PHP
  • やや複雑なif

    if($fd+$d==1 or $fd+$d==8 or $fd+$d==15 or $fd+$d==22 or $fd+$d==29 or $fd+$d==36){ $row = mysql_fetch_array($res); echo '<td width="150" align="150" height="70" bgcolor="#FF99CC">'.$d.'あ'.$row['aki'].'</td>'; }else{ $row = mysql_fetch_array($res); echo '<td width="150" align="150" height="70">'.$d.'<br>:'.$row['aki'].'</td>'; } $row['aki']が0だった場合にifで更に違う文を出力したいんですが、どうしたらいいですか??

    • ベストアンサー
    • PHP
  • arsort の key について

    こんにちは、Blackwinglsです。 ちょっと気になったので質問いたします。 以下のデータのポイント表があります。 データはSQLで order by name で取り出してます。 name point H氏 50p F氏 8p D氏 8p K氏 6p これを以下のscriptで出力すると <?php arsort($point); $count = 1; while(list($key,$val) = each($point)) { echo $key; echo ":"; echo $name[$key]; echo ":"; echo $val echo "<br>"; $count++; } ?> 3:H氏:50 2:F氏:8 1:D氏:8 4:K氏:6 と表示されますが、同じscriptを <?php arsort($point); $count = 1; while(list($key,$val) = each($point)) { echo $key; echo ":"; echo $name[$key]; echo ":"; echo $val echo "<br>"; $count++; } ?> <?php arsort($point); $count = 1; while(list($key,$val) = each($point)) { echo $key; echo ":"; echo $name[$key]; echo ":"; echo $val echo "<br>"; $count++; } ?> のように立て続けに書くと、 3:H氏:50 2:F氏:8 1:D氏:8 4:K氏:6 3:H氏:50 1:D氏:8 2:F氏:8 4:K氏:6 のように、同じ $point の場合、氏名が都度入れ替わるようです。 これって正常な動きなのでしょうか? order by name なので、氏名順に常に表示される気がするのですが・・・? 最近、php4からphp5に変更したら出たような気がするのですが、私の気のせい? どなたか情報お持ちの方、ご示唆くだされば幸いです。

    • ベストアンサー
    • PHP
  • メールアドレス確認 javascriptについて

    入力フォームのメール項目にて 1.メールアドレスチェック 2.メールアドレス(確認用) のアラート設定を行いたいのですが、下記、javascriptの変更をどのように行っていいかが分からず困っています。 どなたかご回答お願いできますでしょう!? ------javascript部分-------------- <script language="JavaScript" type="text/javascript"> function CheckForm(theform) { var FormOK = false; if (theform.email1.value == "") { FieldControl(theform.To, "「メールアドレス」を入力してください。"); }else if (theform.email2.value == "") { FieldControl(theform.To, "「メールアドレス(確認用)」を入力してください。"); }else if (theform.email2.value == "") { FieldControl(theform.To, "入力されたものが一致するように入力してください。"); }else { FormOK = true; } return FormOK; } function FieldControl(element, message) { alert(message); } </script> ------HTML部分-------------- <form action="" method="post" name="theform" onsubmit="return CheckForm(this);"> メールアドレス:<input size="40" name="email1">(半角英数字)<br><br> 確認用】:<input size="40" name="email2"><br><br> <input value="確認画面へ" name="submit" type="submit"> </form> 宜しくお願い致します。

  • フォームで条件によってボタンの処理を変える

    フォームでパスワードを入力してもらい、確認用にもう一度入力した際、 誤入力があればアラート、正しく同じ値が入力されればsubmitにしたいと思っており、下記のようなコードを書きましたが、同じ値を入力した際にIEでエラーがでてしまいます(FirefoxやSafariでは動きます)。 当方Javascriptの知識に乏しく、どなたか助けていただけませんでしょうか?宜しくお願いいたします。 <html> <script language="JavaScript"> <!-- function passCheck(){ pass1 = document.free.PASSWORD.value; pass2 = document.free.PASSWORD2.value; if(pass1!==pass2) {alert("入力された確認用パスワードが違います");} else if(pass1==pass2) {document.free.submit.type="submit";} } //--> </script> <body> <form method="POST" action="submit.cgi" name="free"> <p> <input type="password" size="20" name="新パスワード" id="PASSWORD"><br> <input type="password" size="20" name="新パスワード(確認)" id="PASSWORD2"> </p> 確認のため、上記と同じパスワードをご記入ください。 <p><input type="button" name="submit" value="確認する" onclick="passCheck()"/></p> </form> </body> </html>