2014-01-14 49 views
1

編輯4:爲什麼這個問題是不是重複的鏈接的問題*解決* <PHP>會話不工作(曲奇不送?)

雖然潛在的問題竟然是一樣的鏈接的問題,我沒有收到錯誤信息標題不發送,所以我讀到的答案在這個時候對我沒有用處。因此,這個問題雖然可能過長,但有其自身的價值。

原貼

很抱歉打擾你,但經過調研兩天,我崩潰了。我會盡量提供最大量的信息。

我在做什麼:

我目前正在寫一個登錄系統,只是爲了好玩。註冊,輸入數據到數據庫中,登錄工作非常好。我主持1and1,我的數據庫也在那裏。

現在繼續前進,我想從會議開始。最初,一切似乎都很好,很簡單。

session_start(); 
//returns true when put into an if() 

$_SESSION['id'] = //user ID read from databse 
echo $_SESSION['id']; //prints out the ID just fine. 

當我去另一個頁面時,我立即調用session_start();再次。 事實上,我的所有網頁開始

include 'functions.php'; 
$con = startup(); 

//statup(); is in functions.php, connects to a databse, 
//calls session_start(); succesfully, then returns the connection. 

的問題不應該是在功能,因爲它工作得很好,我也嘗試了連接/會話開始的事情是在每一個文件,而不是共享功能 - 沒有改變任何東西。

但是沒有一個會話變量保留值。

Cookies沒有發送

的JavaScript

可能出現的問題:警報(document.cookie中);在Firefox給我

__qca = P0-1714752251-1385128732260

鉻告訴我沒有收到餅乾,也沒有阻止。

鑑於很多人都遇到了cookie無法發送的問題,因此他們調用session_start();由於Cookie之前已發送,因此我認爲我不需要撥打有關在我的代碼中發送Cookie的任何信息。

我不知道該怎麼做。

我的主機不允許會話

是我的另一個想法。但是,我可以看到我的php_info();它告訴我:

會話設置

會話支持啓用

session.cache_expire 180

session.cookie_domain沒有價值

session.cookie_httponly關

session.co okie_lifetime 0

session.cookie_path/

session.use_cookies在

session.use_only_cookies在

session.use_trans_sid指定0

這些僅僅是線,似乎有點相關我。

所以,我從中讀到的是,會議應該工作得很好,與餅乾和東西。但是我也不太瞭解這個水平。

所以,那是我卡住了。我的代碼的所有組件工作正常,我很確定語法是正確的,據我瞭解,服務器支持會話。

哦,我也嘗試將會話路徑從/ tmp更改爲我的web空間上的一個目錄 - 它似乎沒有做任何事情,沒有數據存儲在服務器的「部分」上。

我真誠地希望我不會因爲一個過長而簡單的問題而煩惱你,因爲我在某個地方犯了一個小錯誤。我真的試圖通過兩天內搜索其他人的問題來解決這個問題。

我感謝大家的時間,耐心和幫助。

編輯:

使用關於使用error_reporting(E_ALL)的新信息;我現在收到的一般錯誤消息

警告:在session_start():不能發送會話cookie - 在頭已經發出(輸出開始/homepages/23/d315777983/htdocs/mtm/index.php:14) /homepages/23/d315777983/htdocs/mtm/functions.php on line 9

Warning:session_start():無法發送會話緩存限制器 - 已發送的頭文件(輸出開始於/ homepages/23/d315777983/htdocs/mtm /index.php:14)在上線/homepages/23/d315777983/htdocs/mtm/functions.php 9

我想我可以開始與舊的工作建議小號解決方案現在。

編輯2:

如所建議的,我添加的print_r($ _ SESSION);包括之後。

它只是打印「陣列()」(不帶引號)

我也感動的session_start返回到各個文件,調用之前functions.php的是包括在內。

它說餅乾是在第14行派 - 這在我的代碼是從字面上只是

<?php 

好吧,我現在閱讀更多關於這方面的答案。非常感謝!

編輯3: 那麼,這是一些浪費時間。在functions.php結尾刪除了名爲startup()的空白字符;在任何html輸出之前,現在它完美的工作。

非常感謝大家!

+0

很好描述。但['session_start()'](http://php.net/session_start)幾乎總是返回true;除非事先啓用['error_reporting(E_ALL)'](http://php.net/error_reporting),否則不會告知cookie問題。 – mario

+0

哦,那改變了很多。現在回到頭文件已經發送錯誤。謝謝。 –

回答

1

當您轉到下一行後的下一頁時嘗試打印所有會話並查看是否獲得它。

include 'functions.php'; 
print_r($_SESSION); 

一個可能性,我看到,有可能是在function.php已經派出一些頭調用

session_start(); 
0

好,甚至成爲解決之後很長一段時間之前,發現了另一個,我有一個問題$ _SESSION在清理瀏覽器數據後,我的連接腳本沒有收到數據,所以我創建了另一個腳本,它們通過$ _REQUEST接收數據,然後將這些數據轉換爲新會話。希望能幫助任何人。

2

我有一個類似的問題,我解決了它刪除源代碼中的空格。

具體而言,錯誤發生在過早向客戶發送答案時。如果在<?php ?>標籤之外有空白,則可能發生意外。主要防止這種錯誤的一種方法是在文檔的末尾沒有?>

+0

什麼?這非常符合我的問題。答案本身可以使用改進,但它絕不是錯誤的。 –