問題なくURLの送信はできたんですが、、、bの方だけアラートがでてくれません。

このQ&Aのポイント
  • phpとjavascriptを使用して現在ページのサイトURLをフォームに入力したメールアドレスに送信するプログラムを作成していますが、bのフォームだけアラートが表示されない問題が発生しています。
  • メールアドレスの値をチェックして正しい形式であるかを判定していますが、bのフォームの処理が不正な値まで進み、internal server errorが発生しています。
  • phpの記述ミスが原因である可能性がありますので、コードを再確認してください。
回答を見る
  • ベストアンサー

値のチェック

phpとjavascriptを使用して現在ページのサイトURLを フォームに入力したメールアドレスに送信するというプログラムを作成しています。 送信にphpを使用し、値のチェックをjavascriptで行っています。 問題なくできたのですが、 さらにもうひとつ別のURLを送信するフォームをつけたいのです。 問題なくURLの送信はできたんですが、、、 bの方だけアラートがでてくれません。 phpの処理まで不正の値のまますすんでしまい、internalservererrorとなってしまいます。 <html> <head> <script type="text/javascript"> <!-- function cheak(cate) { var error = 1; var acc; var adr; switch(cate){ case "a": acc = document.form1.account.value; adr = document.form1.adress.value; break; case "b": acc = document.form2.accout2.value; adr = document.form2.adress2.value; break; } var mailad = acc + "@" + adr;//メール //チェック if (mailad.match(/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/) ){ error = 0; }else{ error = 1; } //エラーならアラート表示 if (error==1) { alert("正しくありません"); return false; } else {return true;} } --> </script> </head> <body> <?php //aのフォームだったら if($_POST['mail'] != ""){ $fileName = $_SERVER['PHP_SELF'];//ファイル名 $account = htmlspecialchars($_POST['account']);//アカウント $adress = $_POST['adress'];//アドレス $sendUrl = "http://www/".$_SERVER['PHP_SELF']; $sendUrl = preg_replace("/\/[0-9]+\/[0-9]+/","",$sendUrl); } //bのフォームだったら elseif($_POST['mail2'] != ""){ $fileName = $_SERVER['PHP_SELF'];//ファイル名 $account = htmlspecialchars($_POST['account2']);//アカウント $adress = $_POST['adress2'];//アドレス $sendUrl = "http://"; } else{} //メールアドレスに値があれば if(isset($account) and isset($adress)) { $phase = true; } else { $phase = false; } //アカウント、アドレスが正しければ if($phase) { $mail = $account."@".$adress; mail ($mail, "", $sendUrl); echo '<script type="text/javascript">window.alert("送信")</script>'; } else{} ?> <!-- a --> <form id="form1" name="form1" method="post" action="<?php echo $fileName ?>" onsubmit="return cheak('a')"> <input type="text" name="account" id="account" />@ <select name="adress" id="adress"> <option>Please choose</option> <option value="ne.jp">ne.jp</option> </select> <input name="mail" type="submit" id="mail" value="send" /> </form> <!-- b --> <form id="form2" name="form2" method="post" action="<?php echo $fileName ?>" onsubmit="return cheak('b')"> <input type="text" name="account2" id="account2" />@ <select name="adress2" id="adress2"> <option>Please choose</option> <option value="ne.jp">ne.jp</option> </select> <input name="mail2" type="submit" id="mail2" value="send" /> </form> </body> </html> どちらも正しいメールアカウント(マルチバイトや空白でない)を入力しアドレスを正しく選択すると それぞれ、どちも送信だけはうまくいくんですが、、、 どちらもエラーダイアログが出るようにしたいのですが、 どうしたらよいでしょうか。 ちなみに、諸事情によりformエリアはサンプルのように 2つになります。まとめることはできませんのでご了承ください。 もしかしたら、phpの記述ミスかもしれないので、 もしそうである場合はスレを変えますでの、 ご指摘いただければと思います。

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

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.1

・ 名前が違うだけのケアレスミスのようです。 acc = document.form2.accout2.value; <input type="text" name="account2" id="account2" /> ・ なお、サーバ側でのチェックも必須だと思われますが。

trfnc223
質問者

お礼

ご回答ありがとうございました。 情けないです・・・・なおりました。。。 javascriptを切ってる方もいらっしゃりますもんね。 サーバー側のチェックも取り入れたいと思います。 ご指摘ありがとうございました!

関連するQ&A

  • selectが複数ある場合の値取得について

    お世話になります HTML内に下記のようなフォームが複数存在しています。 select[name="page_name"]が変更されたときに値を取得しPHP に送信したいのですが、一番上にあるselectの値が取得されてしまいます。 ひとつのscriptで複数のselectに対応したい場合、どのような記述になりますでしょうか? 助けていただきたいです。よろしくお願いします。 <!--1番目のセレクト--> <form method="post" action="javascript:void(0);"> <input type="hidden" id="img_id" name="img_id" value="3"> <select name="page_name"> <option value="">選択してください</option> <option id="page_name" value="1">あああ</option> <option id="page_name" value="2">いいい</option> <option id="page_name" value="3">ううう</option> </select> </form> <!--2番目のセレクト--> <form method="post" action="javascript:void(0);"> <input type="hidden" id="img_id" name="img_id" value="4"> <select name="page_name"> <option value="">選択してください</option> <option id="page_name" value="1">あああ</option> <option id="page_name" value="2">いいい</option> <option id="page_name" value="3">ううう</option> </select> </form> <!--3番目のセレクト--> ---省略--- /*script*/ $('select[name="page_name"]').change(function() { var data = { 'page_name' : $('#page_name').val(), 'img_id' : $('#img_id').val() }; $('#name').text(data['img_id']); $.ajax({ type: "POST", url: "/admin/change/", data:data }); alert("画像使用ページを変更しました!"); return false; }); });

  • セレクトメニューの値をメール送信できません

    PHPの勉強がてらにお問い合わせフォームを作ってみたのですが、 セレクトメニューを追加したところ、エラーが出てしまいうまく出来ません。 調べても原因が分からないので、間違っている箇所があれば ご指摘お願いします。 test.html <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>メールフォーム</title> </head> <body> <form action="test.php" method="post"> <select name="test"> <option value="テストA">テストA</option> <option value="テストB">テストB</option> <option value="テストC">テストC</option> </select> <dl> <dt>お名前</dt> <dd><input name="name" type="text" id="name" size="50" maxlength="225" /></dd> <dt>メールアドレス</dt> <dd><input name="email" type="text" id="email" size="50" maxlength="225" /></dd> <dt>お問い合わせ</dt> <dd> <textarea name="message" id="message" cols="50" rows="10"></textarea> </dd> </dl> <input type="submit" value="送信する" /> </form> </body> </html> test.php <?php mb_language("japanese"); mb_internal_encoding("UTF-8"); $to = 'xxx@xxx'; if (isset($_POST['name'])) { $name = $_POST['name']; $body = $_POST['message']; $email = $_POST['email']; $test = $_POST['test']; $succese = mb_send_mail($to,$name,$body,$email,$test); } ?> <?php if($succese){ print('送信しました。'); } else{ print ('送信に失敗しました。'); } ?>

    • ベストアンサー
    • PHP
  • 値が渡りません。

    すごく初歩的な質問ですみません。 以下の2ソースでpostで値が渡りません。 いろいろ調べましたがわかりません。 宜しくご教授いただけるとたすかります。 【test_dev.php】 <h1><Font Color = "red">ホームページ</Font></h1><br> <br> <form action="test_dev02.php" metod="post" enctype="application/x-www-form-urlencoded"> ID:<input type="text" name="id" size="10" value="" > pass:<input type="text" name="pass" size="10" value="" > <input type="submit" value="送信"><br> </form><br> What's new<br> 【test_dec02.php】 <?php $ID="test-use"; $pass="test-dev"; $ID2=$_POST["id"]; $pass2=$_POST["pass"]; print "IDは ".$ID2."です。パスワードは ".$_POST["pass"]."です。"; print $ID2; echo $_POST["pass"]; ?> ユーザー認証プログラム

    • ベストアンサー
    • PHP
  • フォーム内の値のチェックについて

    このようなフォーム(aspでセレクトボックスの数は可変になります。)にてSubmit時に 同じ値が選ばれていたらalertを出すJavaScriptを作りたいのですが、 どのようなものを作ればよろしいでしょうか? <FORM name="TestForm" action="" method="POST" target=""> <TABLE border="1" cellspacing="0" cellpadding="0" width="100%"> <TR> <td>1位</td> <TD> <select name="Select1"> <OPTION value="449">[選択なし]</OPTION> <OPTION value="465">あ</OPTION> <OPTION value="466">い</OPTION> <OPTION value="467">う</OPTION> </select> <td>2位</td> <TD > <select name="Select1"> <OPTION value="449">[選択なし]</OPTION> <OPTION value="465">あ</OPTION> <OPTION value="466">い</OPTION> <OPTION value="467">う</OPTION> </select> <td>3位</td> <TD> <select name="Select1"> <OPTION value="449">[選択なし]</OPTION> <OPTION value="465">あ</OPTION> <OPTION value="466">い</OPTION> <OPTION value="467">う</OPTION> </select> </TR> </TABLE> <TR><TD> <INPUT type="submit" value=登録 name=B1 onClick=""> </TD></TR> </FORM>

  • 値の受け取り方

    nameタグが下記のようになっている場合、 PHPではどのように取得すれば良いのでしょうか? selectタグは取得できましたが、配列になっている場合の取得方法が分かりません。 ---HTML--- <form action="abc.php" method="post" > <input type="text" name="ord[name]" size="30" VALUE=""> <input type="text" name="ord[company]" size="30" VALUE=""> <select name="pref"> <option value="">-- 都道府県 --</option> <option value="北海道" >北海道</option> <option value="青森県" >青森県</option> <option value="岩手県" >岩手県</option> </select> ・ ・ ---abc.php--- <html> <head><title>output</title></head> <body> <?php $pref = $_POST['pref']; print ("次のデータを受け取りました<br />"); print ("住所:$pref<br />"); ?> </body> </html>

    • ベストアンサー
    • PHP
  • 複数formの使用について

    お世話になります。 複数のFORMを入れ子で使用する方法はありますでしょうか? 下記の記述だと外側のFORMが無効になってしまいます。 表示の順は以下のようにしたいです。 aaa.phpへPOST変数でデータを受け渡して使用します。 <form method="post" name="test1" action="aaa.php"> <input type="text" name="text01" id="textA" value="10"> <input type="text" name="text02 id="textA" value="20"> <input type="text" name="text03" id="textA" value="30"> (上のinputタグ数は動的に変わります) <form method="POST" name="test2" action="bbb.php"> <select name="select"> <option>selectA</option> <option>selectB</option> <option>selectC</option> <input type="submit" name ="read" value="読込"> </select> </form> <input type="submit" value="保存" > </form> 以上、よろしくお願いいたします。

    • 締切済み
    • PHP
  • チェックボックスの値をデータベースに登録

    お世話になります。 現在PHP+MySQLで会員登録するためのフォームを 作っているのですが、携帯用フォームからデータを データベースに登録する際にチェックボックスが あるのですが、チェックした値を一つしか登録する 事が出来ず悩んでおります。以下にソースを 記載させて頂きます。 初心者に近いもので、何卒よろしくお願い致します。 HTML側 <form action="test.php" method="post"> 性別<br /> <select name="sex"> <option value="男性" selected>男性</option> <option value="女性">女性</option> </select> <br /> 年代<br /> <select name="etc1"> <option value="10代" selected>10代</option> <option value="20代">20代</option> <option value="30代">30代</option> <option value="40代">40代</option> <option value="50代">50代</option> <option value="60代">60代</option> <option value="70代以上">70代以上</option> </select> <br /> 誕生月<br /> <select name="birthday"> <option value="1月" selected>1月</option> <option value="2月">2月</option> <option value="3月">3月</option> <option value="4月">4月</option> <option value="5月">5月</option> <option value="6月">6月</option> <option value="7月">7月</option> <option value="8月">8月</option> <option value="9月">9月</option> <option value="10月">10月</option> <option value="11月">11月</option> <option value="12月">12月</option> </select> <br /> メルマガをご希望の店舗を選択してください(複数可)<br /> <input type="checkbox" name="etc2[]" value="店舗1"> 店舗1<br /> <input type="checkbox" name="etc2[]" value="店舗2"> 店舗2<br /> <input type="checkbox" name="etc2[]" value="店舗3"> 店舗3 <input type="hidden" name="mail" value="<? echo $_GET['no'] ?>"><br /> <input type="submit" name="sub" value="送信"><br /> </form> php側 <? require("../ini/dbconnect.ini"); require("../ini/common.ini"); $db = dbConnect(); //データベース接続 $mail = $_POST['mail']; mysql_query("set character set sjis"); $nsql = "SELECT * FROM users WHERE no = '$mail'"; $nresult = mysql_query($nsql); // selectを実行 $nrows = mysql_num_rows($nresult); // 行数を取得 if($nresult == false) { }elseif($nrows == 0){ }else{ while ($comm = mysql_fetch_array($nresult)) { $add = $comm[keimail ]; } $isql = "UPDATE users SET "; $isql .= "sex = '".mb_convert_encoding($_POST['sex'],'euc-jp','auto')."'"; $isql .= ",birthday = '".mb_convert_encoding($_POST['birthday'],'euc-jp','auto')."'"; $isql .= ",etc1 = '".mb_convert_encoding($_POST['etc1'],'euc-jp','auto')."'"; $isql .= ",etc2 = '".mb_convert_encoding($_POST['etc2'],'euc-jp','auto')."'"; $isql .= " WHERE no = '$mail'"; $iresult = mysql_query($isql); // selectを実行 以下略 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • リストボックスの入力チェックについて

    リストボックスの入力チェックについて PHP初心者です。といいますか、プログラムそのものが初心者なので、 説明が分かりにくい部分があったら申し訳ございません。 以下のソースのように、フォームに「選択してください」「青森」「秋田」「岩手」 の4つの項目があるリストボックスを作成しました。 もし、県名が選択されず「選択してください」のままフォームを送信した場合、 下記のphpソース部分にあるようなエラーメッセージを表示させたいのですが、 真っ白いページが表示され何も表示されません。 原因をご存知の方、どうかご教示ください。 よろしくお願いいたします。 //---htmlフォーム部分 <form action="form02.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> <select name="pref" id="pref"> <option value="misenntaku" selected="selected">選択してください</option> <option value="aomori">青森</option> <option value="akita">秋田</option> <option value="iwate">岩手</option> </select> <p><input type="submit" value="内容を確認する" /><p> </form> //-----phpソース部分 <?php if ($_POST['pref'] == 'misenntaku' ) { print '県名を選択してください' . '<br><br>'; print '<a href="form02.html">戻って入力する</a>'; } ?>

    • ベストアンサー
    • PHP
  • PHPのメールフォームでチェックボックス

    PHPでメールフォームを作っているのですが、チェックボックスの値がメールで送信されません。 ソースは・・・(チェックボックスの部分だけ) *フォームページ <form method="post" action="form1.php" name="infoform" id="infoform" onsubmit="return checkForm();"> <INPUT type="checkbox" name="k_menu[]" id="k_menu[]" value="メニュー1" />メニュー1&nbsp;<INPUT type="checkbox" name="k_menu[]" id="k_menu[]" value="メニュー2" />メニュー12&nbsp;<INPUT type="checkbox" name="k_menu[]" id="k_menu[]" value="メニュー3" />メニュー3 <input type="reset" name="no" id="no" value="リセット" /><input type="submit" name="send" id="send" value="確認" /> </form> *確認ページ <?php $p_k_menu = $_REQUEST['k_menu']; ?> <table> <th>興味のあるメニューは?</th> <td> <?php for($i=0; $i<sizeof($p_k_menu); $i++){ print "${p_k_menu[$i]}<br />"; } ?></td> </tr> </table> <form method="post" action="form2.php" name="h_form" id="h_form"> <input type="hidden" name="k_menu" id="k_menu" value="<?php print htmlspecialchars($k_menu); ?>" /> *メール送信ページ <?php $p_k_menu = $_POST['k_menu']; mb_language("Ja"); mb_internal_encoding("EUC-JP"); $mailbody = "興味のあるメニューは?:".$k_menu; $address = "メールアドレス"; $subject = "件名"; if(mb_send_mail($address,$subject,$mailbody,"from:メールアドレス")){ print "応募を受け付けました。"."<br />"."ありがとうございました。"; }else{ print "応募を確認できませんでした。"."<br />"."申し訳ございませんが、もう一度ご送信下さい。"."<br />"."<form><input type='button' name='bk' id='bk' value='戻る' onclick='history.go(-2)'></form>"; } ?> ソースは以上です。 何処が悪いんでしょうか??

  • セレクトフォームで選択した複数の値の挿入

    こんにちは。 標題の通りセレクトフォームで複数の値を渡した時のテーブルへのInsertの方法について悩んでいます。 環境はPHP5.1.2、MYSQL5、Apache2です。 やりたいことはセレクトフォームで複数の値を選択した場合、カンマ区切りにしてひとつのフィールドに格納したいということです。 現在つまづいている部分は、カンマ区切りにした値をInsertする部分です。表示するだけならいいのですが、どうしても最後の値しかInsertできません。(ちなみに挿入する値は数値です。フィールドはカンマを入れるのでVarcharにしています) 下にソースを書きましたが、この書き方だと前の値が上書きされているためだということはわかるのですが、どうしても書き方がわかりません。 できれば $value = $id['0'].",".$id['1'].",".$id['2']....; というような形で挿入したいのです。(ほかに同等の形になるよい方法があればこの形にこだわりません) へたな説明で申し訳ありませんがよろしくお願いします。 <<index.php>> <form action="entry.php" method="post"> <select name="bugID[]" multiple> <option value="id1" name="bugid">AA</option> <option value="id2" name="bugid">BB</option> <option value="id3" name="bugid">CC</option> <option value="id4" name="bugid">DD</option> </select> <input type="submit" value="送信"> </form> <<entry.php>> if($_POST["bugID"]){ foreach($_POST["bugID"] as $value){ $bug_id = $value.","; } } mysql_select_db($DB,$mysql) or die ("Entryデータベースの接続に失敗しました\n".mysql_error()); $query = "insert into ".entryTA." (bug_id)"; $query .= " values('{$bug_id}')"; mysql_query($query,$mysql);

    • ベストアンサー
    • PHP

専門家に質問してみよう