こんにちは。クッキーを使った名前表示についてお聞きしたいことがあり、質問いたします。

クッキーを使って、ホームページ上にメールを受け取った方の名前、ニックネームを表示させることができると聞きました。

メール配信システム(独自配信)を使って、メールマガジン、ステップメール登録時に、メールアドレスと名前を入力させます。
メール内URLをクリックすると、ジャンプ先のページで、メルマガ登録者それぞれの名前を表示させたいと思っています。

こういった方法はクッキーで可能なのでしょうか。
アマゾンのように、ログインすると表示ではなく、登録者それぞれのユニークURLをクリックするだけで、ジャンプ先のページに、任意の場所に名前を表示させたいのです。
もし可能なら、その方法を教えて頂けますでしょうか。

専門的すぎて、まったく検討がつきません。

ご存じの方がいらっしゃいましたが、ぜひご回答頂ければ幸いです。
もし、私の質問がわかりにくいようでしたら、質問を頂ければと思います。

よろしくお願いいたします。





回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2007/05/31 08:37:06
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:jack_sonic No.2

回答回数124ベストアンサー獲得回数25

ポイント100pt

登録者それぞれのユニークURLをクリックするだけで、

ジャンプ先のページに、任意の場所に名前を表示させたい」

という場合で、クッキーを使わずにやるなら、

HTTPの「GET送信」のしくみを使うと有効です。

  • リンク先のページを、PHPなどで書かれたCGIにし、

その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

URLエンコード - Wikipedia


リンク先の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>

これらの技術を使えば可能です。

id:jonasundwibi

ご回答ありがとうございます。極めて具体的に教えて頂き、感謝します。楽メールというシステムを使っていますが、登録時に姓名をURLエンコードすることができれば、手間が減りそうですね。いろいろ実験してみます、ありがとうございます。

2007/05/31 08:34:21

その他の回答2件)

id:studioes No.1

回答回数523ベストアンサー獲得回数61

ポイント27pt

 色々な方法で実現可能です。

 例えば、単純なのは名前をURLに埋め込んでしまう方法。

 メルマガ送信時に、ニックネームをURLエンコードした値を埋め込んだアドレスを設定します。

http://hoge.com/melma/にアクセスさせる場合に

http://hoge.com/melma/?nick=ニックネームのようにして、GETパラメタとして与えて、表示先のページでそれを使う。 最初のページで、このニックネームをセッションクッキーに設定する。

 一般的な方法としては、ユーザIDを埋め込んで

http://hoge.com/melma/?uid=UserIDの様に配信しておいて、DBからユーザ名を拾う方法です。

 クッキーのみと言うのであれば、長期有効なクッキーでニックネームを保持しておいて、メルマに限らず、常時、そのクッキーのニックネームを使うという方法ですが、あまりスマートではありませんね。

id:jonasundwibi

ご回答ありがとうございました。参考にさせて頂きます。

2007/05/31 08:29:17
id:jack_sonic No.2

回答回数124ベストアンサー獲得回数25ここでベストアンサー

ポイント100pt

登録者それぞれのユニークURLをクリックするだけで、

ジャンプ先のページに、任意の場所に名前を表示させたい」

という場合で、クッキーを使わずにやるなら、

HTTPの「GET送信」のしくみを使うと有効です。

  • リンク先のページを、PHPなどで書かれたCGIにし、

そのCGIにジャンプするためのURLの末尾に、

 URL?変数名=値&amp;変数名=値 ...

のように、データを追加することで、

リンク先のCGIで指定された値を送信し、CGI側で受け取ることができます。

考え方で言うと、

http://CGIのアドレス?name=名前&amp;addr=メールアドレス

のような感じで、入れるのですが、

たとえば、

反映さえたい名前が

田中」でメールアドレスが「test@yahoo.co.jp」ならば、

http://CGIのアドレス?name=田中&amp;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&amp;addr=test%40yahoo.co.jp

URLエンコード - Wikipedia


リンク先の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>

これらの技術を使えば可能です。

id:jonasundwibi

ご回答ありがとうございます。極めて具体的に教えて頂き、感謝します。楽メールというシステムを使っていますが、登録時に姓名をURLエンコードすることができれば、手間が減りそうですね。いろいろ実験してみます、ありがとうございます。

2007/05/31 08:34:21
id:jack_sonic No.3

回答回数124ベストアンサー獲得回数25

ポイント26pt

#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でにおけるクッキーの読み書き

http://www.sakura-pc.jp/php/cookie.shtml

id:jonasundwibi

了解しました。ありがとうございます。

2007/05/31 08:34:40
  • id:jack_sonic
    >jonasundwibiさま

    #2のソースの
    「&amp;」という単語についてなのですが、

    「&」と入力した記号が、
    回答送信時にはてな側のシステムで変換されて、
    そうなってしまっているので、

    「&amp;」は「&」として置き換えてご利用下さい。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません