本人確認メールについて

このQ&Aのポイント
  • 本人確認メールの書き方について教えてください。自分で作成したスクリプトが間違っている可能性があるので、修正が必要です。
  • 本人確認メールの送信に関する質問です。スクリプトを作成しましたが、正しい書き方なのかどうか確認してください。
  • 本人確認メールのスクリプトについて教えてください。間違っている部分があるかどうか、修正方法を教えてください。
回答を見る
  • ベストアンサー

本人確認メールについて

販売サイトや、SNSでよくある本人確認メール(呼び方は知りません)の書き方について ご質問です。 ちなみに、自分で勝手な想像で作成したスクリプトを書いておきます。 どこが間違っているのかご指摘お願い致します。 -------------------------------------------------------------------------------------------------- //////////////////////// // 本人確認メール送信 // //////////////////////// $mail = $_SESSION['mail']; $con = mysql_connect("~", "~", "~"); mysql_select_db("~-~"); mysql_set_charset('utf8'); $sql = "SET NAMES utf-8"; mysql_query($sql); $sql = "SELECT * FROM member_profile WHERE email='$mail';"; $result = mysql_query($sql) or die; $row = mysql_fetch_row($result); $name = $row[2]; mysql_close($con); $header = "From:raindrop.jp-5247423@~.jp Content-Type:text/html; charset=ISO-2022-JP Content-Transfer-Encoding:8bit "; $top = $name.' 様<br><br>'; $aisatsu .= "~への会員登録のお申し込みありがとうございます。<br> まだ登録は完了しておりません。下記URLから登録を完了してください。<br><br>"; $html_header = '<doctype html><html><head><meta charset="ISO-2022-JP"></head><body bgcolor="#FFFFCC">'; $html_footer = '</body></html>'; $uniqid = uniqid(); $anchor = '<a href="http://~/php/membership_kakutei.php?from=1">http://sirius5.link/register/confirm/'.$uniqid.'</a>'; $contents="<br><br> ==================================================<br> このメッセージは~より自動的に送信しております。<br> このメールにお心当たりのない場合は、このメールを破棄してください。<br> ==================================================<br> <br> <br> <br> -----------------------------------------------------------<br> ~<br> http://daiko-king.com <br> -----------------------------------------------------------<br> "; ////////////////////////// // 新規登録者宛にメール // ////////////////////////// $message = $html_header.$top.$aisatsu.$anchor.$contents.$html_footer; $to = $mail; $subject = "【~】 仮登録完了"; // 題名 $to = mb_convert_encoding($to, "UTF-8", "auto"); // $toは、自動的にエンコードされない。 $subject = mb_convert_encoding($subject, "UTF-8", "auto"); $message = mb_convert_encoding($message, "UTF-8", "auto"); $header = mb_convert_encoding($header, "UTF-8", "auto"); mb_send_mail($to, $subject, $message, $header); // メール送信 ---------------------------------------------------------------------------------------------------- <a>あいうえお</a> の、あいうえお の部分が実際には存在しないディレクトリに してるのですが、(上記の場合だと、/register/confirmの部分です)それではだめ なのでしょうか。 実際にあるディレクトリだとしたら、たとえば、 https://aaa.com/register/confirm/ASkuCxyxsKxJ08kojrn770Js_jNOCXoD6ZXE0fgKQyI の、A以下の正規表現的な文字列つけることで何がしたいのかわかりません。 説明していただきたいです。正しい方法とスクリプトの書き方をよろしくお願いします。

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

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

  • ベストアンサー
  • hymat
  • ベストアンサー率58% (95/162)
回答No.1

存在しないディレクトリを書いても意味がありませんね。"ASkuCxyxs…"の例は.htaccessでmod_rewriteを使って、urlっぽく見せておきながら、パラメータとして渡しているのです。正規表現とはまったく関係がありません。てゆーかコードを全文掲載しなくても良いかと? 本人確認なのですから、ユーザー毎に異なるパラメータを渡して、サーバー側に控えを保存しておき、どのユーザーからのアクセスなのかを照合します。関係ない人が認証メールを受け取ったふりをしてデタラメに詐称するのを防ぐため、一般にパラメータは複雑な値にしますが、urlの形式としてはmod_rewriteなど使わず、単純に、http://~/php/membership_kakutei.php?from=1&key=ASkuCxyxs… でも良いでしょう。 でも、最近は登録時にメールを確認しないのが主流と思います。登録手続が面倒なせいで途中で離脱する可能性があるからです。メールアドレスの価値が低下したこともあるでしょう。

beterugius
質問者

お礼

詳しいご説明、どうもありがとうございます。なんとなく理解できました。 あとは、実践してみて、動作を確認したいと思います。 本当はベストアンサーにさせていただきたいのですが、無くなった んでしょうか><

beterugius
質問者

補足

"ASkuCxyxs…"の例は.htaccessでmod_rewriteを使って、urlっぽく見せておきながら、パラメータとして渡しているのです。→ 折角ですので、 (1)、(2)~などとして、箇条書きにしてはいただけませんでしょうか>< 貴重なお時間を割いていただき、申し訳ございません。

その他の回答 (1)

  • hymat
  • ベストアンサー率58% (95/162)
回答No.2

mod_rewriteについては、ここで詳述するまでもなく、 https://bayashi.net/wiki/linux/apache/mod_rewrite の「動的ページを静的ページに見せる」などに解説があります。urlのパラメーターの羅列を、"/"で区切ってディレクトリのように見せかける手法です。 apacheの設定ファイルに記述するものですが、たいていは.htaccessファイルに書くこともできるように設定されています。ただしapacheにmod_rewriteモジュールが組み込まれていることが前提になります。

beterugius
質問者

お礼

お忙しい中、お返事いただきありがとうございました。

関連するQ&A

  • PHPで、HTMLメールの際のエラー

    HTMLメールを送る下記スクリプトにおきまして、管理人宛てのメール本文を 見ると、添付画像のように、生のHTML文のついたメールが届いてしまいます。 普通のHTMLメールにするには、どこがどう間違っているのか、ご指導いただき たいです。 ちなみにサーバーはさくらサーバーです。 --------------------------------------------------------------------------------------------------------------- ////////////////////////////////////////// // 新着口コミを管理人にメールで知らせる // ////////////////////////////////////////// $to = "~"; // 管理人宛て $mail_title = " ユーザーが新着口コミを投稿しました。"; $header = "From: ~ Content-Type:text/html; charset=ISO-2022-JP Content-Transfer-Encoding:8bit "; //$uniqid = uniqid(); $to = mb_convert_encoding($to, "UTF-8", "auto"); // $toは、自動的にエンコードされない。 $mail_title = mb_convert_encoding($mail_title, "UTF-8", "auto");    $html_header = '<!DOCTYPE html"><html><meta http-equiv="Content-Type" content="text/html; charset=ISO-2022-JP"></head><body bgcolor="#FFFFCC">';    $html_footer = '</body></html>'; $comment_header = $username." 様\n\n口コミ店舗名:".$shopname."\n\n"; $comment = $html_header."\n\n".$comment_header.$comment."\n\n"; // $comment = str_replace("<br>", "\n", $comment); // $comment = mb_convert_encoding($comment, "UTF-8", "auto"); $comment_anchor = "<a href=\"http://~.com/tokyo/admin/kuchikomi_edit.php?title=".$title."&comment=".$comment_copy."&username=".$username."&shopname=".$shopname."\">口コミ編集</a>"; $comment_anchor = mb_convert_variables($comment_anchor, "UTF-8", $title, $comment_copy, $username, $shopname); $comment = $comment."\n\n".$comment_anchor.$html_footer; $comment = mb_convert_encoding($comment, "UTF-8", "auto"); $header = mb_convert_encoding($header, "UTF-8", "auto"); mb_send_mail($to, $mail_title, $comment, $header); // メール送信

    • ベストアンサー
    • PHP
  • 自作メールフォームから送信するとメール内容がおかしくなる。

    ※PHP初心者なので、お手柔らかにお願いします。 自作メールフォームからメール送信すると、メールは送れるのですがメールの内容がおかしくなります。 現状は、件名のみ正しく表示され、差出人と本文の内容が空になります。 いろいろなサイトを見て試してみたのですが、どれも同じ結果で何が間違っているのかよくわからず困ってます。 メールの設定として下記を、 mb_language("Japanese"); mb_internal_encoding ("SJIS"); mb_detect_order("ASCII, JIS, UTF-8, EUC-JP, SJIS"); $MailTo = "送付先メールアドレス"; メール送信事態は下記ソースの通りです。 // エンコードして文字列を作成 $Name = mb_convert_encoding($Name, 'JIS', 'auto'); $Header = "From:" .mb_encode_mimeheader($Name). "<" .$Mail. ">\n"; $Subject = "=?iso-2022-jp?B?".base64_encode(mb_convert_encoding("お問い合わせ", 'JIS', 'auto')). "?="; $Message = mb_convert_encoding($Message, "JIS", "auto"); // メール送信処理 $Ret = mb_send_mail($MailTo, $Subject, $Message, $Header);

    • ベストアンサー
    • PHP
  • スマホでHTMLメールの画像が表示されない(追記

    スマートフォンで、HTMLメールの画像が表示されないのです。 ショッピングサイトで購入した商品画像を顧客あてにHTMLメールで送付しているのですが、 その画像が表示されません。下記のスクリプトですが、該当箇所は「商品画像」の部分です。 どこがどう間違っているのか、ご指導お願いします。⇒(2) ちなみに、PCのほうはちゃんと画像が表示されております。ブラウザはChrome 、スマホの OSはAndroid4.3 です。 また、HTMLメールのヘッダー部は。(1)のように書いております。 (1) $header = "From:raindrop.jp-5247423@users109.phy.lolipop.jp Content-Type:text/html; charset=ISO-2022-JP Content-Transfer-Encoding:8bit "; //////////////////// // 管理者へメール // //////////////////// $to = "~"; // 管理者のメールアドレス $subject = "お客様の注文が確定しました。"; // 題名 $to = mb_convert_encoding($to, "UTF-8", "auto"); // $toは、自動的にエンコードされない。 $subject = mb_convert_encoding($subject, "UTF-8", "auto"); $message = mb_convert_encoding($message, "UTF-8", "auto"); $header = mb_convert_encoding($header, "UTF-8", "auto"); mb_send_mail($to, $subject, $message, $header); // メール送信 //////////////////// // 購買者へメール // //////////////////// $html_header = '<doctype html><html><head><meta charset="ISO-2022-JP"></head><body bgcolor="#FFFFCC">'; $html_footer = '</body></html>'; $to_guest = $row2[4]; // 顧客へのメール送信 $subject = "【骨董品販売店】- ご注文内容の確認メールです"; $aisatsu = $row2[2].'&nbsp;様<br><br><h3 style="color: green">【骨董品販売店からの受注確認メールです】<br><br></h3>ご注文日時:'.$date.'<br>'; $kingaku2 = 'お支払合計金額:<h3 style="color: red">'.$sougoukeigaku.'&nbsp;円</h3>'; $number = '<br><br>受注番号:'.$receipt_number; ----------------------------------------------------------------------------------------------------------------- (2) <?php session_start();?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="refresh" content="10; url=login.php"> <title>ご注文確定画面</title> <!-- ◆ スマートフォン用 --> <meta name="viewport" content="width=device-width, initial-scale=1" /> <!-- jQuery本体--> <script type="text/javascript" src="./jquery/jquery-2.1.3.js"></script> <!-- スマホ用スタイルシート --> <link rel="stylesheet" href="./jquery/jquery.mobile-1.4.5.min.css" /> <!-- スマホ用JavaScript --> <script src="./jquery/jquery.mobile-1.4.5.min.js"></script> </head> <body bgcolor="#FFFFCC"> <?php mb_internal_encoding("UTF-8"); date_default_timezone_set("Japan"); $date = date('Y年m月d日(D)H時i分s秒'); <h1 style="color: green">ご注文が確定しました。有難うございました。</h1> <br><br><?php print("ご注文確定時間:".$date); ?> <br><br>お客様のメールアドレス宛てに、注文確定メールが送信されます。 <br><br><?php print("受注番号:".$receipt_number); ?> </center> <?php $con = mysql_connect("~", ”~", "~"); mysql_select_db("~"); mysql_set_charset('utf8'); $sql = "SET NAMES utf-8"; mysql_query($sql); mb_internal_encoding("UTF-8"); $sql = "SELECT * FROM cart_table WHERE order_kakutei=0"; $result = mysql_query($sql, $con); $rowco = mysql_num_rows($result); // テーブルの行数 ~ 中略 ~ $sougoukeigaku = 0; // 総合計金額の初期化 $points = 0; // 今回購入での単体商品のポイントの初期化 $point_sum = 0; // 今回購入での総ポイント値の初期化 $message = '受注日時:'.$date.'<br><br>'; for($i=0; $i<$rowco; $i++){ $row = mysql_fetch_row($result); // 取得された行に対応する配列を返し、内部のデータポインタを前に進める $sougaku = $row[4] * $row[6] * 1.08; // 税込総額 $sougoukeigaku+=$sougaku; $sql2 = "SELECT * FROM syouhin WHERE number='$row[1]';"; $result2 = mysql_query($sql2, $con); $row2 = mysql_fetch_row($result2); $points = $row2[6] * $row[6]; $point_sum+=$points; if($_SESSION['login']) $cart = '<br>商品コード:'.$row[1].'<br>商品名:'.$row[2].'<br>単価:'.$row[4].' &nbsp;円<br>個数:'.$row[6].'<br>税込総額:'.$sougaku.'&nbsp;円<br>付与ポイント:'.$row2[6].'&nbsp;pt<br><br>商品画像:<img src="http:/~/netshop/image_thumbnail/'.$row2[2].'"><br><br><br>'; // 会員IDでログインして購入した場合のみポイント付与 else $cart = '<br>商品コード:'.$row[1].'<br>商品名:'.$row[2].'<br>単価:'.$row[4].'&nbsp;円<br>個数:'.$row[6].'<br>税込総額:'.$sougaku.'&nbsp;円<br><br>商品画像:<img src="http://~/netshop/image_thumbnail/'.$row2[2].'"><br><br><br>'; $message.=$cart; // 購買商品情報を連結していく(管理者用) $message2.=$cart; // お客様用 } $cart_sum = '<br><br><br>お客様総合計額:'.$sougoukeigaku.'&nbsp;円<br><br>'; if($_SESSION['login']) $point = 'お客様総付与ポイント数:'.$point_sum.'pt<br><br>'; // 会員IDでログインして購入した場合のみポイント付与 $message.=$cart_sum; if($_SESSION['login']===1) $message.=$point; mysql_close($con);

    • 締切済み
    • PHP
  • phpのmb_send_mailで携帯のみ文字化け

    PHPのmb_send_mail関数でメールを送信しています。 メールサーバーはGoogleAppsのを使っています PHPのバージョンは5.1.6 --- 下記ソース --- //日本語と内部文字エンコードの指定 mb_language('ja'); mb_internal_encoding('UTF-8'); $parameter = "-f hoge@example.co.jp";//return_path設定 // ↓コレだと携帯では文字化けしないが、Gmailへ送信すると文字化け //$subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8")); $header = ""; $header .= "From: {$subject}<{$from}>"; $message = str_replace("\r", "", $message); $res = mb_send_mail($to, $subject, $message, $header, $parameter);

    • ベストアンサー
    • PHP
  • PHPとFALSH連携メール

    mail.fla と flash_mail.php に下記のように記述してます。 flash_mail.php で、var_dump() したら、すべてNULL になります。 .fla ファイルのシンタックスは通ってるのですが、 Action Scriptのどこかが間違っていると思います。 どこが間違っているのかお教え願いますでしょうか。 【mail.fla】 1フレーム目(キーフレーム)に書きを記述 LV1 = new LoadVars(); LV1.shimei = shimei; LV1.email = email; LV1.subject = subject; LV1.honbun = honbun; LV1.sendAndLoad("flash_mail.php", LV1, "POST"); submit_btn.onRelease = function(){ getURL("flash_mail.php"); } --------------------------------------------------------------------------- 【flash_mail.php】 <?php $shimei = $_POST['shimei']; $email = $_POST['email']; $subject = $_POST['subject']; $honbun = $_POST['honbun']; var_dump($shimei); var_dump($email); var_dump($subject); // 送信者へメール $to = $email; $from = "~"; $subject = mb_convert_encoding($subject, "utf-8", "auto"); // utf-8にエンコード $honbun = mb_convert_encoding($honbun, "utf-8", "auto"); mb_internal_encoding("UTF-8"); mb_send_mail($to, $subject, $honbun, $from); echo 'test complete!'; ?>

    • ベストアンサー
    • PHP
  • Gmailへのメール送信で文字化け

    PHPでフォームメールの作っているのですが、Gmailで送信したメールを受け取ると□□□□□というように文字化けが起こっていまいます。 アウトルック、ホットメールなどは大丈夫なのですが、グーグルのGmailだけ駄目なようです。なぜ文字化けするのでしょうか? mb_language("Ja"); $header = "From: reminder@aaa.com\r\n"; $header .= "MIME-Version: 1.0\r\n"; $header .= "Content-Type: text/plain;charset=ISO-2022-JP\r\n"; $header .= "Content-Transfer-Encoding: base64"; $to = "aaa@gmail.com"; $subject = "送信テスト"; $body = "本文テスト本文テスト"; $subject = base64_encode($subject); $subject = mb_convert_encoding($subject,"ISO-2022-JP"); $subject = "=?ISO-2022-JP?B?" . $subject . "=?="; $body = base64_encode($body); $body = mb_convert_encoding($body,"ISO-2022-JP"); $success = @mail($to,$subject,$body,$header); if($success) print "成功"; else print "失敗";

    • ベストアンサー
    • PHP
  • PHPでmb_send_mail()関数を使っときの件名について

    PHPでmb_send_mail()関数を使っときの件名について mb_send_mail()でメールの送信はできるのですが、件名(Subject)を日本語にすると8文字以上送信すると送信エラーが起こります。同じプログラムをLinuxでやるとうまくいきます。プログラムは以下のようにしています。(mail()関数を使うとこのような問題は起こりませんでした。) mb_language('Japanese'); $subject='メールテスト'; $subject=mb_convert_encoding($subject,'ISO-2022-JP','UTF-8'); $message='Webメールのテストです。'; $message=mb_convert_encoding($message,'ISO-2022-JP','UTF-8'); $head='私から送信されました。<****@****.net>'; $head=mb_convert_encoding($head, 'ISO-2022-JP', 'UTF-8'); $head=mb_encode_mimeHeader($head,'ISO-2022-JP','B'); if(mb_send_mail('****@****.com',$subject,$message,'From:'.$head)){ echo 'おくったよ。<br>'; } else{ echo 'おくれない。'; }  件名の全角での文字数を増やす方法があったら教えてください。  よろしくお願いいたします。 <システム環境>  Windows7(64Bit)  Apache2.2  PHP5.3.2

    • ベストアンサー
    • PHP
  • mb_send_mail で一部文字化けします

    mb_send_mail で一部文字化けします。 URLやキーワードとかそういった文字をいれた変数です。 基本UTF8で作ってます。 mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_regex_encoding("UTF-8"); mb_detect_order("ASCII, JIS, UTF-8, EUC-JP, SJIS"); $subject = "てすと"; $to =$email; $header .= "From:admin@example.jp\n"; $header .= "Return-Path:admin@example.jp\n"; $header .= "Date:"; $header .= date("D, d M Y H:i:s O"); $body .= "\n"; $body .= "◆URL:"; $body .= $url[$count]; mb_send_mail($to,$subject,$body,$header);

    • 締切済み
    • PHP
  • メールの文字化け

    define( 'CNST_MAIL_REPLY' , 'aaa@aaa.co.jp' ); define( 'CNST_MAIL_FROM_ADDR' , 'aaa@aaa.co.jp' ); define( 'CNST_MAIL_ERROR' , 'aaa@aaa.co.jp' ); define( 'CNST_MAIL_FROM_NAME' , 'ここが、差出人で、日本語表示したいんですが文字化け' ); define( 'CNST_MAIL_TO_ADDR' , 'aaa@aaa.co.jp' ); //* メールアドレス設定 *// $mail_header = ""; if ( CNST_MAIL_REPLY != "") { if ( $mail_header != "") { $mail_header .= "\n"; } $mail_header .= "Reply-To: ".CNST_MAIL_REPLY; } $from = "From: "; if ( CNST_MAIL_FROM_NAME != "") { $from .= "\"".CNST_MAIL_FROM_NAME."\""; } if ( CNST_MAIL_FROM_ADDR != "") { $from .= " <".CNST_MAIL_FROM_ADDR.">"; } if ( $mail_header != "") { $mail_header .= "\n"; } $mail_header .= $from; if( CNST_MAIL_ERROR != "") { $errors_to = "Errors-To: "; $errors_to .= CNST_MAIL_ERROR; if( $mail_header != "") { $mail_header .= "\n"; } $mail_header .= $errors_to; $sub_parm = "-f".CNST_MAIL_ERROR; $mail_subject = mb_convert_encoding($mail_subject, "ISO-2022-JP","SJIS"); $mail_text = mb_convert_encoding($mail_text, "ISO-2022-JP","SJIS"); $mail_header = mb_convert_encoding($mail_header,"ISO-2022-JP","SJIS"); // メール送信処理 mb_language("Japanese"); mb_send_mail($to, $mail_subject, $mail_text, $mail_header, $sub_parm); 上のメール送信プログラムなんですが、 差出人の名前が文字化けしてしまいます。 質問のしかたがよくわからなかったのでプログラムをのせました。 アドバイス宜しくお願いします。

    • ベストアンサー
    • PHP
  • mail()でメール送信で、特定のメーラーの受信のみ件名が文字化け

    PHPでメール配信プログラムを作っております。 配信テストを行なったのですが、特定のメーラーで件名が文字化けしてしまう現象に見舞われしてしまい、対処法を探しております。 ■テストメーラー 1、OutlookExpress 2、EdMax 3、Thunderbird ■ソース(一部抜粋) mb_language('Japanese'); mb_internal_encoding("SJIS"); //1 $subject = mb_encode_mimeheader($subject); //2 $subject = mb_convert_encoding($subject,"JIS","SJIS"); $send_body = mb_convert_encoding($send_body,"JIS","SJIS"); $header = "From: $fronmail.\n"; $header .= "Return-path: $return\n"; $header .= "Reply-To: $fronmail.\n"; //3 $header .= "Subject: $subject\n"; $header .= "Message-ID: {$MessageID}\n"; $header .= "MIME-Version: 1.0\n"; $header .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n"; $header .= "Content-Transfer-Encoding: 7bit\n"; //4 $header .= "Content-Transfer-Encoding: base64\n"; $header .= "X-Mailer:PHP/".phpversion(); $chk_mail = mail($to_email,$subject,$send_body,$header); ■設定値 $body = $subject = "日本語テスト"; メールアドレスはプロバイダなどが発行しているもの ■現象 ソースのままだと1、2は件名は文字化けせず、3は文字化け(???{????? ※?はひし形に囲まれた?です)します。 それぞれコメントアウトを外したり切り替えたりするのですが、1、2も件名が文字化けになったりします。 3は基本的にどのコメントアウトを有効にしても文字化けのままです。 $subjectに関しては、mail関数のものが優先のようでして、試しに空にしてみたのですが、件名も空のままでした。 何故この形式を取っているかというと、半角カナを使いたいが為でして、mb_send_mailだと半角カナが使えなかったような気がしてmailを使っております。 あと、popenで直接コマンドを打つという手もありそうですが、sendmailではなくpostfixなのですがpostfixでコマンドをという手段を探した方が良いのでしょうか? 出来ればmailを使って文字化けもしない方向を希望なのですが、それが駄目なら他の手段など誘導していただければ幸いです。 宜しくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう