http://php.eweb-design.com/1301_mail.html
さんからアンケートフォームをダウンロードさせて頂き
メールアドレスの形式チェックをかけたいと思っています。
『php アドレス形式チェック』などで検索してみたのですが
単体のコードは出てくるのですが、私がほぼ無知なために
どこに付け加えたらいいのかわからずでphpファイルの
未入力項目のチェックのあたりにつけてみましたが
エラーの連続で自分ではお手上げ状態でした・・・
アドレス形式チェックを参考にしたのは下記のurlです。
http://homepage3.nifty.com/wowarlly/php2.html
詳しい方のお力を貸して頂きたいのですがどのようにすれば
動作するのでしょうか?
宜しくお願い致します!
No.1
- 回答日時:
恐らくメアドは$_POSTで取っていると思うので、その下あたりに入れればいいんじゃないかと思いますが…。
アンケートフォームのソース(コード)を出していただけると回答がつきやすいかと。
この回答への補足
お返事ありがとうございます!
phpのソースは下記のようになっています。
// 未入力項目のチェック
if($esse == 1) {
$flag = 0;
$length = count($eles) - 1;
foreach($_POST as $key=>$var) {
$key = strtr($key, $string_from, $string_to);
if($var == "web_submit") ;
else {
for($i=0; $i<=$length; $i++) {
if($key == $eles[$i] && empty($var)) {
$errm .= "<font color=#ff0000>「".$key."」は必須入力項目です。</font><br />\n";
$flag = 1;
}
}
}
}
foreach($_POST as $key=>$var) {
$key = strtr($key, $string_from, $string_to);
for($i=0; $i<=$length; $i++) {
if($key == $eles[$i]) {
$eles[$i] = "web_ok";
}
}
}
for($i=0; $i<=$length; $i++) {
if($eles[$i] != "web_ok") {
$errm .= "<font color=#ff0000>「".$eles[$i]."」が未選択です。</font><br />\n";
$eles[$i] = "web_ok";
$flag = 1;
}
}
if($flag == 1){
htmlHeader();
?>
<!--- 未入力があった時の画面 --- 開始 --------------------->
入力エラー<br /><br />
<?php echo $errm; ?>
<br /><br />
<input type="button" value="前画面に戻る" onClick="history.back()">
<!--- 終了 --->
htmlからphpを呼び出す設定でhtmlには
<form method="POST" action="mailform.php">
メールアドレスを入力するname属性はemailです。
No.2
- 回答日時:
このように挿入すればいいとおもいます。
functionは適当な位置にコピーするなりしてください。
for($i=0; $i<=$length; $i++) {
if($eles[$i] != "web_ok") {
$errm .= "<font color=#ff0000>「".$eles[$i]."」が未選択です。</font><br />\n";
$eles[$i] = "web_ok";
$flag = 1;
}
}
//--------ここに挿入
(! checkEmail($_POST[email]))
{
$errm .= "<font color=#ff0000>「"メールアドレス"」が不正です。</font><br />\n";
$flag =1;
}
//--------------------
if($flag == 1){
htmlHeader();
?>
No.3
- 回答日時:
エスケープ文字「\」入れ忘れました。
(! checkEmail($_POST[email]))
{
$errm .= "<font color=#ff0000>「\"メールアドレス\"」が不正です。</font><br />\n";
$flag =1;
}
この回答への補足
またまたお返事ありがとうございます!
>functionは適当な位置にコピーするなりしてください。
ファンクションはcheckEmailということはわかるのですが
どこにどのように書いたらいいのかがわかりません・・・
ちなみにそのままソースを張り付けたら以下のようなエラーが出ました。
Parse error: syntax error, unexpected '{' in /パス/form.php
お手数ですが教えて下さい。
No.4
- 回答日時:
ifを付け忘れました。
これでエラーはでないと思いますがどうでしょう?
if(! checkEmail($_POST[email]))
{
$errm .= "<font color=#ff0000>「\"メールアドレス\"」が不正です。</font><br />\n";
$flag =1;
}
この回答への補足
何度も申し訳ございませんが下記のようなエラーがでてしまいました。
Fatal error: Call to undefined function: checkemail()
checkemail()というファンクションをつけてください的なものだと思うのですが
どこにどのように付け足すものなのでしょうか?
function checkEmailとしてメールアドレスの形式を定義するとは思うのですがわかるのはそこまでが限界です・・・^^;
No.5
- 回答日時:
関数の定義はphpはどこにいれてもいいです。
一般的なのが最初にいれると一番普通かも。
<?php
function checkEmail($email) {
global $isEAddressCorrect;
//@が中ほどにあればtrue,なければfalseをかえします。
//@が2文字目以降に現れている時
if(strpos($email , "@")>0){
//@より右側に文字が3文字以上あるとき
if(strlen(strstr($email,"@")) >= 3){
$url = substr(strrchr($email,"@"),1);
if(checkdnsrr($url)){
$isEAdressCorrect = TRUE;
return TRUE;
}
}
}
$isEAderessCorrect = FALSE;
return FALSE;
}
~
とかにしとけばいいです。
。
この回答への補足
>関数の定義はphpはどこにいれてもいいです。
ということで未入力項目のチェックの上に付け足してみました!
function checkEmail($email) {
global $isEAddressCorrect;
//@が中ほどにあればtrue,なければfalseをかえします。
//@が2文字目以降に現れている時
if(strpos($email , "@")>0){
//@より右側に文字が3文字以上あるとき
if(strlen(strstr($email,"@")) >= 3){
$url = substr(strrchr($email,"@"),1);
if(checkdnsrr($url)){
$isEAdressCorrect = TRUE;
return TRUE;
}
}
}
$isEAderessCorrect = FALSE;
return FALSE;
}
// 未入力項目のチェック
if($esse == 1) {
$flag = 0;
$length = count($eles) - 1;
foreach($_POST as $key=>$var) {
$key = strtr($key, $string_from, $string_to);
if($var == "web_submit") ;
else {
for($i=0; $i<=$length; $i++) {
if($key == $eles[$i] && empty($var)) {
$errm .= "<font color=#ff0000>「".$key."」は必須入力項目です。</font><br />\n";
$flag = 1;
}
}
}
}
foreach($_POST as $key=>$var) {
$key = strtr($key, $string_from, $string_to);
for($i=0; $i<=$length; $i++) {
if($key == $eles[$i]) {
$eles[$i] = "web_ok";
}
}
}
for($i=0; $i<=$length; $i++) {
if($eles[$i] != "web_ok") {
$errm .= "<font color=#ff0000>「".$eles[$i]."」が未選択です。</font><br />\n";
$eles[$i] = "web_ok";
$flag = 1;
}
}
if(! checkEmail($_POST[email]))
{
$errm .= "<font color=#ff0000>「\"メールアドレス\"」が不正です。</font><br />\n";
$flag =1;
}
if($flag == 1){
htmlHeader();
?>
Parse error: syntax error, unexpected T_VARIABLE in /パス/form.php
このようなエラーが出てしまったのですが何が原因なのでしょうか?
<?phpのすぐ下につけても同じ結果でした。
No.6ベストアンサー
- 回答日時:
デバック、チェックを私がサイトからダウンロードして同じようにプログラムを挿入し、関数を定義したところきちんと動作しました。
私がここまでする必要はないと思いましたが・・
もしエラーがでているとすれば、
あなたが何かプログラム上勝手に消したものがあるか
『空白(全角スペース)』などが挿入されているとかそういう初歩的なエラーだと思います。
<?php header("Content-Type:text/html;charset=Shift_JIS"); ?>
<?php
//==========================================================
// メールフォームシステム ver.0.96β
// eWeb http://www.eweb-design.com/
//==========================================================
// このファイルの名前
$script ="sendmail.php";
// メールを送信するアドレス(複数指定する場合は「,」で区切る)
$to = "xxx@xxx.com";
// 送信されるメールのタイトル
$sbj = "アンケート";
// 送信確認画面の表示(する=1, しない=0)
$chmail = 1;
// 送信後に自動的にジャンプする(する=1, しない=0)
// 0にすると、送信終了画面が表示されます。
$jpage = 0;
// 送信後にジャンプするページ(送信後にジャンプする場合)
$next = "http://www.xxxx.com/";
// 差出人は、送信者のメールアドレスにする(する=1, しない=0)
// する場合は、メール入力欄のname属性を「email」にしてください。
$from_add = 1;
// 差出人に送信内容確認メールを送る(送る=1, 送らない=0)
// 送る場合は、メール入力欄のname属性を「email」にしてください。
$remail = 1;
// 差出人に送信確認メールを送る場合のメールのタイトル
$resbj = "送信ありがとうございました";
// 必須入力項目を設定する(する=1, しない=0)
$esse = 1;
// 必須入力項目(入力フォームで指定したname)
$eles = array('名前','年齢','性別','email','規約');
//--------------------------------------------------------------------
// 以上で基本的な設定は終了です。
// 以下の変更は自己責任でお願いします。(行数はデフォルト時)
// 未入力画面のレイアウト → 88行目周辺
// 送信メールのレイアウト → 103行目周辺
// 差出人への送信確認メールのレイアウト → 128行目周辺
// 送信確認画面のレイアウト → 163行目周辺
// 送信終了画面のレイアウト → 194行目周辺
// 送信確認画面や終了画面のヘッダとフッタ → 209行目周辺
//--------------------------------------------------------------------
$sendm = 0;
foreach($_POST as $key=>$var) {
if($var == "eweb_submit") $sendm = 1;
}
// 文字の置き換え
$string_from = "\";
$string_to = "ー";
function checkEmail($email) {
global $isEAddressCorrect;
//@が中ほどにあればtrue,なければfalseをかえします。
//@が2文字目以降に現れている時
if(strpos($email , "@")>0){
//@より右側に文字が3文字以上あるとき
if(strlen(strstr($email,"@")) >= 3){
$url = substr(strrchr($email,"@"),1);
if(checkdnsrr($url)){
$isEAdressCorrect = TRUE;
return TRUE;
}
}
}
$isEAderessCorrect = FALSE;
return FALSE;
}
// 未入力項目のチェック
if($esse == 1) {
$flag = 0;
$length = count($eles) - 1;
foreach($_POST as $key=>$var) {
$key = strtr($key, $string_from, $string_to);
if($var == "eweb_submit") ;
else {
for($i=0; $i<=$length; $i++) {
if($key == $eles[$i] && empty($var)) {
$errm .= "<FONT color=#ff0000>「".$key."」は必須入力項目です。</FONT><BR>\n";
$flag = 1;
}
}
}
}
foreach($_POST as $key=>$var) {
$key = strtr($key, $string_from, $string_to);
for($i=0; $i<=$length; $i++) {
if($key == $eles[$i]) {
$eles[$i] = "eweb_ok";
}
}
}
for($i=0; $i<=$length; $i++) {
if($eles[$i] != "eweb_ok") {
$errm .= "<FONT color=#ff0000>「".$eles[$i]."」が未選択です。</FONT><BR>\n";
$eles[$i] = "eweb_ok";
$flag = 1;
}
}
if(! checkEmail($_POST[email]))
{
$errm .= "<font color=#ff0000>「\"メールアドレス\"」が不正です。</font><br />\n";
$flag =1;
}
if($flag == 1){
htmlHeader();
?>
<!--- 未入力があった時の画面 --- 開始 --------------------->
入力エラー<BR><BR>
<?php echo $errm; ?>
<BR><BR>
<INPUT type="button" value="前画面に戻る" onClick="history.back()">
<!--- 終了 --->
<?php
htmlFooter();
exit(0);
}
}
//--- メールのレイアウトの編集 --- 開始 ------------------->
$body="「".$sbj."」からの発信です\n\n";
$body.="-------------------------------------------------\n\n";
foreach($_POST as $key=>$var) {
$key = strtr($key, $string_from, $string_to);
if(get_magic_quotes_gpc()) $var = stripslashes($var);
if($var == "eweb_submit") ;
else $body.="[".$key."] ".$var."\n";
}
$body.="\n-------------------------------------------------\n\n";
$body.="送信日時:".date( "Y/m/d (D) H:i:s", time() )."\n";
$body.="ホスト名:".getHostByAddr(getenv('REMOTE_ADDR'))."\n\n";
//--- 終了 --->
if($remail == 1) {
//--- 差出人への送信確認メールのレイアウトの編集 --- 開始 ->
$rebody="ありがとうございました。\n";
$rebody.="以下の内容が送信されました。\n\n";
$rebody.="-------------------------------------------------\n\n";
foreach($_POST as $key=>$var) {
$key = strtr($key, $string_from, $string_to);
if(get_magic_quotes_gpc()) $var = stripslashes($var);
if($var == "eweb_submit") ;
else $rebody.="[".$key."] ".$var."\n";
}
$rebody.="\n-------------------------------------------------\n\n";
$rebody.="送信日時:".date( "Y/m/d (D) H:i:s", time() )."\n";
$reto = $_POST['email'];
$rebody=mb_convert_encoding($rebody,"JIS","SHIFT_JIS");
$resbj="=?iso-2022-jp?B?".base64_encode(mb_convert_encoding($resbj,"JIS","SHIFT_JIS"))."?=";
$reheader="From: $to\nReply-To: ".$to."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion();
//--- 終了 --->
}
$body=mb_convert_encoding($body,"JIS","SHIFT_JIS");
$sbj="=?iso-2022-jp?B?".base64_encode(mb_convert_encoding($sbj,"JIS","SHIFT_JIS"))."?=";
if($from_add == 1) {
$from = $_POST['email'];
$header="From: $from\nReply-To: ".$_POST['email']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion();
} else {
$header="Reply-To: ".$_POST['email']."\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion();
}
if($chmail == 0 || $sendm == 1) {
mail($to,$sbj,$body,$header);
if($remail == 1) { mail($reto,$resbj,$rebody,$reheader); }
}
else { htmlHeader();
?>
<!--- 送信確認画面のレイアウトの編集 --- 開始 ------------->
以下の内容で間違いがなければ、「送信する」ボタンを押してください。<BR><BR>
<FORM action="<? echo $script; ?>" method="POST">
<? echo $err_message; ?>
<TABLE width="400" bgcolor="#cccccc" cellspacing="1" cellpadding="3">
<?php
foreach($_POST as $key=>$var) {
$key = strtr($key, $string_from, $string_to);
if(get_magic_quotes_gpc()) $var = stripslashes($var);
$var = htmlspecialchars($var);
print("<TR bgcolor=#ffffff><TD bgcolor=#eeeeee>".$key."</TD><TD>".$var);
?>
<INPUT type="hidden" name="<?= $key ?>" value="<?= $var ?>">
<?php
print("</TD></TR>\n");
}
?>
</TABLE>
<BR>
<INPUT type="hidden" name="eweb_set" value="eweb_submit">
<INPUT type="submit" value="送信する">
<INPUT type="button" value="前画面に戻る" onClick="history.back()">
</FORM>
<!--- 終了 --->
<?php htmlFooter(); } if(($jpage == 0 && $sendm == 1) || ($jpage == 0 && ($chmail == 0 && $sendm == 0))) { htmlHeader(); ?>
<!--- 送信終了画面のレイアウトの編集 --- 開始 ------------->
ありがとうございました。<BR>
送信は無事に終了しました。<BR><BR>
<!-- 著作権表示 -->
<!-- 消しても構いませんが、その際はeWebにリンクを貼ってくれると嬉しいです。-->
<FONT size="-1"><A href="http://www.eweb-design.com/">eWeb Mail</A></FONT><BR>
<!--- 終了 --->
<?php htmlFooter(); } else if(($jpage == 1 && $sendm == 1) || $chmail == 0) { header("Location: ".$next); } function htmlHeader() { ?>
<!--- ヘッダーの編集 --- 開始 ----------------------------->
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<!--- 終了 --->
<?php } function htmlFooter() { ?>
<!--- フッターの編集 --- 開始 ----------------------------->
</BODY>
</HTML>
<!--- 終了 --->
<?php } ?>
エラーの原因は全角のスペースが入っていたようです・・・
最後の最後までご迷惑おかけしましたがおかげさまで動作正常です。
お礼の言葉が足りないくらいですが本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- JavaScript ソースコードは下の共有コードサイト「張り紙」にあります。 入力フォームの javascript で 1 2022/05/11 11:01
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP 秀丸でPHPの構文チェック(SyntaxCheck)を行う方法 1 2022/09/11 16:46
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPの変わった閉じタグの必要性と意味を教えてください。 1 2022/08/28 15:15
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- PHP WordpressのPHPを安全に編集する方法 1 2022/08/04 01:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
存在しないメールアドレスかど...
-
一定時間毎に同じ動作を繰り返...
-
二重投稿防止方法
-
ワードプレス、Contact Form 7...
-
VBでメールを送る時のSMT...
-
VisualC++アプリからメイルを飛...
-
submitボタンの二重送信について
-
リファラが取得できない?
-
SendMailがエラーを返さない
-
問い合わせ完了ページでの二重...
-
送信日時を指定してメールを送...
-
ブラウザの更新ボタン
-
こちらはただの直列処理ですか?
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
form actionで二つ送信先を指定...
-
シェルスクリプトからphpファイ...
-
FTPコマンドでディレクトリごと...
-
PHPのif文でその処理を途中で抜...
-
.htaccessにphp_valueが使用できな
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ワードプレス、Contact Form 7...
-
コマンドプロンプトで添付ファ...
-
存在しないメールアドレスかど...
-
VB6にてメールを送信する方法
-
ヒアドキュメントを利用してメ...
-
メールアドレスの存在確認はで...
-
Bookを閉じて保存した時のみ実...
-
AccessのDoCmd.SendObjectについて
-
submitボタンの二重送信について
-
リファラが取得できない?
-
HPの更新をしたら自動でメール...
-
javamailで220の応答が遅い
-
Q)PHPでメール送信について
-
<HTML>~入る タグ が無いから ...
-
mail関数を使うと遅いので
-
phpメールフォームから送信され...
-
ロリポップと、phpで自動の返信...
-
ループの中で mailItemObj.Disp...
-
ランダムな文字列を生成しその...
-
VB.NETでフリーメールアドレス...
おすすめ情報