※ ChatGPTを利用し、要約された質問です(原文:値のチェック)
問題なく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の記述ミスかもしれないので、
もしそうである場合はスレを変えますでの、
ご指摘いただければと思います。
お礼
ご回答ありがとうございました。 情けないです・・・・なおりました。。。 javascriptを切ってる方もいらっしゃりますもんね。 サーバー側のチェックも取り入れたいと思います。 ご指摘ありがとうございました!