• ベストアンサー

選択された画像を onclick と $_SESSION を使って識別する方法について

画像が2種類あって、どの画像がクリックされたかを onclick() と $_SESSION[] を使って記録したいと思っているのですが、その方法が分かりません。 以下のスクリプトのようなことをしたいのですが、このスクリプトは動きません。。。($modeには何も値が入りませんでした)。 <a class="1q" id="1a" onclick="<?php $_SESSION['mode']=1 ?>" href="index.php"><img id="image1" alt="Fig1" src="images/fig1.gif"></a> <a class="2q" id="2a" onclick="<?php $_SESSION['mode']=2 ?>" href="index.php"><img id="image1" alt="Fig2" src="images/fig2.gif"></a> MODE=<?=$mode?> よいアイデアを頂けますと大変助かります。 よろしくお願い致します。

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 まず、サーバサイドでの処理(PHP)とクライアントでの処理(JavaScript)をわけて考えてください。 $_SESSIONに値を入れるには、サーバ側で処理を行う必要があります(ブラウザからのリクエストがあった時) ということは、index.phpに特定の値(画像の番号や名前)を投げてあげればいいのです。 (ここのindex.phpは下の画像を表示するタグも出力している) (自分自身にリンクを貼ります) ====================================================================== <?php session_start(); $mode = $_GET['imgid']; $_SESSION['mode'] = $mode; ?> <a href="./index.php?imgid=1"><img src="1.jpg"></a> <a href="./index.php?imgid=2"><img src="2.jpg"></a> <a href="./index.php?imgid=3"><img src="3.jpg"></a> <a href="./index.php?imgid=4"><img src="4.jpg"></a> ====================================================================== (余分なタグは端折ってます) こうすることで$_SESSION['mode']に選択された画像の番号が入ります。 注意点としては、直接、http://*************/index.php?imgid=10と打ち込まれると 10という存在しない画像の番号も入ってしまいますので、 直接の入力を防ぐ(リファラを参照する)や存在する番号かのチェックが必要かもしれません。

dewyamada
質問者

お礼

作成して頂いたソースコードが大変参考になり、無事に目的を達成することができました。ありがとうございました!

その他の回答 (2)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.3

#2です。 2つの画像でしたね。 >注意点としては、直接、http://*************/index.php?imgid=10と打ち込まれると >10という存在しない画像の番号も入ってしまいますので、 >直接の入力を防ぐ(リファラを参照する)や存在する番号かのチェックが必要かもしれません。 単純にimgidの内容が1であるか2であるかチェックすれば良いですね。 訂正します。

dewyamada
質問者

お礼

細かいところまでフォローをありがとうございます。 重ねてお礼申し上げます。

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

アイデアと言うより最大の欠点は、サーバーサイド実行(php)と、クライアントブラウザ上のjavascript動作(onclick)をごっちゃにしていることでしょう。 画像にリンクを張ってクリックされたら、画像名をqueryに付けた自分にジャンプして、session登録後再表示。

dewyamada
質問者

お礼

ご回答ありがとうございます。 >画像にリンクを張ってクリックされたら、画像名をqueryに付けた自分にジャンプして、session登録後再表示。 ここのところがよく分からないので、もう少し詳しく教えていただけますと大変助かります。何卒よろしくお願い致します。

関連するQ&A