アプリ版:「スタンプのみでお礼する」機能のリリースについて

画像が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?>

よいアイデアを頂けますと大変助かります。
よろしくお願い致します。

A 回答 (3件)

こんにちは。



まず、サーバサイドでの処理(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という存在しない画像の番号も入ってしまいますので、
直接の入力を防ぐ(リファラを参照する)や存在する番号かのチェックが必要かもしれません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/12/05 14:37

#2です。



2つの画像でしたね。

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

単純にimgidの内容が1であるか2であるかチェックすれば良いですね。
訂正します。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/12/05 14:38

アイデアと言うより最大の欠点は、サーバーサイド実行(php)と、クライアントブラウザ上のjavascript動作(onclick)をごっちゃにしていることでしょう。



画像にリンクを張ってクリックされたら、画像名をqueryに付けた自分にジャンプして、session登録後再表示。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>画像にリンクを張ってクリックされたら、画像名をqueryに付けた自分にジャンプして、session登録後再表示。

ここのところがよく分からないので、もう少し詳しく教えていただけますと大変助かります。何卒よろしくお願い致します。

お礼日時:2005/12/04 23:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!