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

下記の様にjquery(ver1.4.x)の$.ajax関数を使って、
ajaxでPHPに値を渡したいと思っています。

■Javascript
(中略)
$.ajax({
type:"POST",
url:"test.php",
data:{"check":check},
success:function(){
alert("OK");
}
});

■PHP(test.php)
if ($_POST) {
$_SESSION["data"][] = $_POST["check"];
}

この時、普通の状態ならtest.phpで値が受け取れ、$_SESSION["data"]の配列内には$_POST["check"]の値が格納される事を確認しました。

しかし、ブラウザのCookieを無効(ブロック)に設定した場合のみ、$_SESSION["data"]の中には$_POST["check"]の値が入らないのです。
session_start();はJavascriptのあるHTML、test.php両方に書かれています。
クッキー無効の場合はJavascript(ajax)-PHP間でセッションは切断されてしまうのでしょうか?

php.iniの設定では
session_use_cookiesもsession_use_only_cookiesもOnになっています。
詳しい方おられましたらご教授宜しくお願いします。

A 回答 (4件)

> クッキーが使えない環境の場合はURLでセッションIDを受け渡す仕組みの筈ですが、



そんな仕組みはないです。
iniの指定で初めて有効になりますが、画面上に見えてしまうのはよろしくないですね。

<input type="hidden" name="<?php echo session_name(); ?>" value="<?php echo session_id(); ?>" />

<script>
function POSTするイベント()
{
data {
'PHPSESSID' : $("#PHPSESSID").val(),
'check' : check
}
・・・
}
</script>

的な感じはだめですかね?


他の方もおっしゃっているように
> session_use_cookiesもsession_use_only_cookiesもOnになっています。

これではcookieにセッションを書き込もうとしますので、ブラウザがcookieを拒否すれば動かないのは当然の結果になります。


余談ですが・・・
if ($_POST) {  じゃなくて
if (isset($_POST['check'])) { かな?
    • good
    • 0
この回答へのお礼

クッキー無効状態ではやはり動作しなかったため、諦める事にしました。

ご回答ありがとうございました。
大変参考になりました。

お礼日時:2012/09/13 11:58

こんにちは。



試してはいないのですが、URLにではなくパラメータに含めてみてはいかがでしょうか。
checkとPHPSESSIDを送信する感じです。
    • good
    • 0

>session_use_only_cookiesもOnになっています。



であれば、セッションIDがURLパラメータでは引き渡されないですよね。その状態でCookieが使えなければセッションの利用は無理です。

http://www.php.net/manual/ja/session.idpassing.php

この回答への補足

session.use_only_cookiesを0、session.use_trans_sidを1に設定してみましたが、
セッション渡しが出来ていない様です。

補足日時:2012/09/07 17:11
    • good
    • 0
この回答へのお礼

さっき試してみたので補足事項となりですが、

$.ajax({
type:"POST",
url:"test.php?<?=SID?>",
(略)

とした所、何とかソース上はセッションIDをURLの末尾に付けられましたが、
test.phpに値が渡されていないのは同様でした。
(クッキーを有効にすると渡される)
Jqueryのajaxでは、クッキー無効の環境でのセッションやり取り自体が出来ないのでしょうか。

お礼日時:2012/09/07 17:31

>しかし、ブラウザのCookieを無効(ブロック)に設定した場合のみ、$_SESSION["data"]の中には


なに当たり前の事言っているの?
セッションってクッキー(セッションID保持のため)使っているの知らないの?

この回答への補足

知っています。
クッキーが使えない環境の場合はURLでセッションIDを受け渡す仕組みの筈ですが、
session.use_only_cookiesを0、session.use_trans_sidを1に設定してみても、セッション渡しが出来ていない様です。

補足日時:2012/09/07 17:07
    • good
    • 0

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