2012-06-08 88 views
0

我的網站有問題。AJAX調用會話

請參閱網頁:

  • 的index.php < - 在session_start()
  • /includes/functions.php
  • /modules/feedback.php < - 閱讀一些$ _SESSION
  • /gui/savefeedback.php < - 讀一些$ _SESSION
  • /ajaxGateway.php

在index.php中有一個鏈接。當我按下該鏈接時,會出現fancybox2彈出窗口。我將該URL傳遞給fancybox(/gui/savefeedback.php?somestuff=blablabla)

在那個框中,我有一個帶有textarea和提交按鈕的窗體。我使用$ _SESSION變量來配置一些GUI元素。在該頁面中,我使用jQuery與AJAX調用,比如/ ajaxGateway?行動=反饋

AjaxGateway簡單解析命令,包括/feedback.php?vote=1 &評論= AAAAAAAAA

問題!在/modules/feedback.php中,我無法讀取$ _SESSION變量。

爲什麼?

+1

您需要爲每個請求執行'session_start()'。 –

+1

*在每個頁面/文件中* – OptimusCrime

+0

OptimusCrime,不,您不應該在include():d文件中調用session_start。每個請求只需調用一次。 –

回答

3

您需要該頁面上的session_start();(/modules/feedback.php)。

+0

我已經在index.php中使用了session_start(),因爲我使用了像index.php?page = XXX這樣的鏈接。事實上,如果我在/modules/feedback.php中使用session_start(),我收到錯誤「會話已開始」... – Kaiser69

0

假設你正在使用的cookie,那麼每個AJAX請求處理Cookie的完全一樣,如果你曾瀏覽手動的URL以同樣的方式...

See here瞭解更多信息

,確定一切工作,如果您手動瀏覽這些網址會發生什麼?你在每個頁面上都會有session_start()嗎?

+0

我不知道爲什麼,但當我手動在該URL中有一個奇怪的東西。例如。在saveFeedback.php我必須改變include_once('../../ modules/feedback.php'); include_once('modules/feedback.php');否則我得到了一些包含錯誤.. – Kaiser69

+0

如果它在你的瀏覽器不起作用,它不會通過AJAX工作 - 所有的AJAX所做的是瀏覽到頁面,並給出你的JavaScript代碼的響應,而不是渲染它。 。在使用AJAX調用它們之前,您需要使頁面正常工作。 – Basic

0

每頁開頭if(!isset($_SESSION)) session_start();如果你只是做session_start();它可能會引發錯誤,如果您的會話已在另一頁上啓動。