クッキーを使って、ホームページ上にメールを受け取った方の名前、ニックネームを表示させることができると聞きました。
メール配信システム(独自配信)を使って、メールマガジン、ステップメール登録時に、メールアドレスと名前を入力させます。
メール内URLをクリックすると、ジャンプ先のページで、メルマガ登録者それぞれの名前を表示させたいと思っています。
こういった方法はクッキーで可能なのでしょうか。
アマゾンのように、ログインすると表示ではなく、登録者それぞれのユニークURLをクリックするだけで、ジャンプ先のページに、任意の場所に名前を表示させたいのです。
もし可能なら、その方法を教えて頂けますでしょうか。
専門的すぎて、まったく検討がつきません。
ご存じの方がいらっしゃいましたが、ぜひご回答頂ければ幸いです。
もし、私の質問がわかりにくいようでしたら、質問を頂ければと思います。
よろしくお願いいたします。
「登録者それぞれのユニークURLをクリックするだけで、
ジャンプ先のページに、任意の場所に名前を表示させたい
」という場合で、クッキーを使わずにやるなら、
HTTPの「GET送信」のしくみを使うと有効です。
そのCGIにジャンプするためのURLの末尾に、
URL?変数名=値&変数名=値 ...
のように、データを追加することで、
リンク先のCGIで指定された値を送信し、CGI側で受け取ることができます。
考え方で言うと、
http://CGIのアドレス?name=名前&addr=メールアドレス
のような感じで、入れるのですが、
たとえば、
反映さえたい名前が
「田中」でメールアドレスが「test@yahoo.co.jp」ならば、
http://CGIのアドレス?name=田中&addr=test@yahoo.co.jp
という風に指定するのですが、
このままでは、日本語や記号類が混ざってしまっていて正しく処理できないので、
「田中」および「test@yahoo.co.jp」という文字列に対し、
URLエンコードという、URLで受け取れるようにする処理を通して、
田中=> %C5%C4%C3%E6 test@yahoo.co.jp => test%40yahoo.co.jp
と変換し、最終的にこのようなリンクを生成します。(CGIはサンプルとしてうちのを使ってます)
生成リンク例:↓
クリックすると、リンク先のページで名前とメールアドレスのデータを受け取っているのを確認できます。
http://f29.aaa.livedoor.jp/~morg/wiki/sample/disp_send.php?name=...
アドレスの詳細
http://f29.aaa.livedoor.jp/~morg/wiki/sample/disp_send.php?name=%C5%C4%C3%E6&addr=test%40yahoo.co.jp
リンク先のPHPのスクリプト側では、アドレスで指定したnameとaddrの値を、
$_GET["name"]
$_GET["addr"]
という変数として内容を受け取ることができ、
その内容をページを記述するプログラム内で使うことができます。
例で使っているPHPのスクリプトのソースはこんな感じです。
<html> <head> <meta http-equiv="content-type" content="text/html; chaset=EUC-JP"> </head> <body> [データ]<br> <?php // phpスクリプトを記述 // $_GET[変数名]の中に入っているすべてのデータを列挙する echo "GETデータ:<br>"; foreach( $_GET as $key => $e) { // 変数名と内容を表示 echo " " . $key . "=" . $e . "<br>\n"; } ?> </body> </html>
これらの技術を使えば可能です。
色々な方法で実現可能です。
例えば、単純なのは名前をURLに埋め込んでしまう方法。
メルマガ送信時に、ニックネームをURLエンコードした値を埋め込んだアドレスを設定します。
http://hoge.com/melma/にアクセスさせる場合に
http://hoge.com/melma/?nick=ニックネームのようにして、GETパラメタとして与えて、表示先のページでそれを使う。 最初のページで、このニックネームをセッションクッキーに設定する。
一般的な方法としては、ユーザIDを埋め込んで
http://hoge.com/melma/?uid=UserIDの様に配信しておいて、DBからユーザ名を拾う方法です。
クッキーのみと言うのであれば、長期有効なクッキーでニックネームを保持しておいて、メルマに限らず、常時、そのクッキーのニックネームを使うという方法ですが、あまりスマートではありませんね。
ご回答ありがとうございました。参考にさせて頂きます。
「登録者それぞれのユニークURLをクリックするだけで、
ジャンプ先のページに、任意の場所に名前を表示させたい
」という場合で、クッキーを使わずにやるなら、
HTTPの「GET送信」のしくみを使うと有効です。
そのCGIにジャンプするためのURLの末尾に、
URL?変数名=値&変数名=値 ...
のように、データを追加することで、
リンク先のCGIで指定された値を送信し、CGI側で受け取ることができます。
考え方で言うと、
http://CGIのアドレス?name=名前&addr=メールアドレス
のような感じで、入れるのですが、
たとえば、
反映さえたい名前が
「田中」でメールアドレスが「test@yahoo.co.jp」ならば、
http://CGIのアドレス?name=田中&addr=test@yahoo.co.jp
という風に指定するのですが、
このままでは、日本語や記号類が混ざってしまっていて正しく処理できないので、
「田中」および「test@yahoo.co.jp」という文字列に対し、
URLエンコードという、URLで受け取れるようにする処理を通して、
田中=> %C5%C4%C3%E6 test@yahoo.co.jp => test%40yahoo.co.jp
と変換し、最終的にこのようなリンクを生成します。(CGIはサンプルとしてうちのを使ってます)
生成リンク例:↓
クリックすると、リンク先のページで名前とメールアドレスのデータを受け取っているのを確認できます。
http://f29.aaa.livedoor.jp/~morg/wiki/sample/disp_send.php?name=...
アドレスの詳細
http://f29.aaa.livedoor.jp/~morg/wiki/sample/disp_send.php?name=%C5%C4%C3%E6&addr=test%40yahoo.co.jp
リンク先のPHPのスクリプト側では、アドレスで指定したnameとaddrの値を、
$_GET["name"]
$_GET["addr"]
という変数として内容を受け取ることができ、
その内容をページを記述するプログラム内で使うことができます。
例で使っているPHPのスクリプトのソースはこんな感じです。
<html> <head> <meta http-equiv="content-type" content="text/html; chaset=EUC-JP"> </head> <body> [データ]<br> <?php // phpスクリプトを記述 // $_GET[変数名]の中に入っているすべてのデータを列挙する echo "GETデータ:<br>"; foreach( $_GET as $key => $e) { // 変数名と内容を表示 echo " " . $key . "=" . $e . "<br>\n"; } ?> </body> </html>
これらの技術を使えば可能です。
ご回答ありがとうございます。極めて具体的に教えて頂き、感謝します。楽メールというシステムを使っていますが、登録時に姓名をURLエンコードすることができれば、手間が減りそうですね。いろいろ実験してみます、ありがとうございます。
#2でちょっと補足します。すみません。
2のCGIのPHPのスクリプトは、
文字コードがEUC-JPで保存されています。
メモ帳ではなく、EUCが使えるエディタで保存します。
扱えるエディタは、
TeraPad
http://www.vector.co.jp/soft/win95/writing/se104390.html
や
秀丸
http://hide.maruo.co.jp/software/hidemaru.html
などがあります。
また、PHPスクリプトの3行目のchasetが正しくはcharsetです。
すみません訂正します。
また、クッキーも、PHPやJavaScriptなどで
比較的簡単に使えますが、
クッキーだけを使った方法の場合は、
全く初回訪問のときに適用できないのと、
セキュリティの設定でブロックされていると適用できない
という注意点があります。
PHPでにおけるクッキーの読み書き
了解しました。ありがとうございます。
ご回答ありがとうございます。極めて具体的に教えて頂き、感謝します。楽メールというシステムを使っていますが、登録時に姓名をURLエンコードすることができれば、手間が減りそうですね。いろいろ実験してみます、ありがとうございます。