web-dev-qa-db-ja.com

jQueryを使用してPHP $ _SESSION ['var']を設定する

JQueryを使用してPHP $ _SESSION変数を設定する必要があります。ユーザーが画像をクリックすると、その画像に関連付けられた情報をphpのセッション変数として保存します。

これは、phpページまたは関数を呼び出して、その情報をクエリ文字列に追加することで実現できると思います。

何か案は。私はグーグルを通してほとんど助けを見つけていません。

ありがとうマイク

32
mmundiff

JQueryだけではできません。 Ajax(jQueryで実行可能)とPHPバックエンド。非常に単純なバージョンは次のようになります。

HTML:

<img class="foo" src="img.jpg" />
<img class="foo" src="img2.jpg" />
<img class="foo" src="img3.jpg" />

Javascript:

$("img.foo").onclick(function()
{
    // Get the src of the image
    var src = $(this).attr("src");

    // Send Ajax request to backend.php, with src set as "img" in the POST data
    $.post("/backend.php", {"img": src});
});

PHP(backend.php):

<?php
    // do any authentication first, then add POST variable to session
    $_SESSION['imgsrc'] = $_POST['img'];
?>
75
Luke Dennis

PHP関数を別のPHPページに配置し、AJAX呼び出しを使用して変数を設定してみてください。

7
Bryan A

ここでの多くの回答は、理由ではなく、方法に取り組んでいます。 PHP $ _SESSIONキー/値ペアはサーバーに保存されます。これは、ブラウザに保存されるCookieとは異なります。これが、両方のCookieの値にアクセスできる理由です= PHPとJavaScript。さらに悪いことに、AJAXブラウザーからのリクエストには、Webサイトに設定したCookieは含まれません。したがって、 JavaScriptがセッションID Cookieをプルし、サーバーがその先頭または末尾を作成できるようにするためのすべてのAJAXリクエストに含めます。明るい側面では、PHPセッションは、HTTP GETまたはCookieがHTTPヘッダーとともに送信されない場合はPOST変数にフェイルオーバーするように設計されています。RESTfulWebアプリケーションの原則のいくつかを調べます。セッションハンドラをマングルしようとする代わりに、これらの種類のアプリケーションに共通のデザインパターンを使用します。

5
Nolte

探しているのは jQuery Ajax です。そして、リクエストを処理するためにphpページをセットアップするだけです。

5
Hawk Kroeger

また、自分で「phpセッション値セッター」ソリューションを設計しましたが(Luke Dennisのソリューションと同様です。ここでは大したことはありません)、セッション値を設定した後、「別の.phpファイルにジャンプ」しました。わかりました、jqueryコード内でそれをしました...しかし、何かがうまくいきませんでした...

私の問題は簡単なものでした。

-小さな.phpファイルに値を「$ .post」した後、「成功/失敗」の戻り値を待機し、この成功値を読み取った後にジャンプを実行する必要があります。すぐに次の大きな.phpファイルにジャンプした場合、セッション値はphpセッションランタイムエンジンに設定されていない可能性があり、おそらく$ _SESSION ["my_var"]を実行すると「空」と表示されます。宛先.phpファイルから。

私の場合、その状況を修正するために、jQuery $ .postコードを次のように変更しました。

$.post('set_session_value.php', { key: 'keyname', value: 'myvalue'}, function(ret){
    if(ret==0){
        window.alert("success!");
        location.replace("next_page.php");
    }
    else{
        window.alert("error!");
    }
});

もちろん、「set_session_value.php」ファイルは「echo「0」を返す必要があります。 'または' echo "1"; '(または必要な成功値)。

ご挨拶。

3
Isaac

(backend.php)に含めるようにしてください

session_start();

-テイラー http://www.hawkessolutions.com

3
antioch1st

Lukeの答えに似ていますが、GETを使用します。

このphp-codeをphp-pageに置きます(例)。 getpage.php:

<?php
$_SESSION['size'] = $_GET['size'];
?>

次に、次のようなjQueryスクリプトで呼び出します。

$.get( "/getpage.php?size=1");

フェデリコに同意します。場合によっては、POSTを使用して問題が発生する可能性がありますが、ブラウザに関連する可能性があるかどうかはわかりません。

1
Waltur Buerk

Javascript部分でonClick()をclick()に変更すると、Firefoxで動作します。

$("img.foo").click(function()
{
    // Get the src of the image
    var src = $(this).attr("src");

    // Send Ajax request to backend.php, with src set as "img" in the POST data
    $.post("/backend.php", {"img": src});
});
0
Petko Doichev