該網站采用的是ThinkPHP框架制作,有一頁面上面展示很多圖片,要求每個圖片下面有對應的投票,通過限制ip地址來,限制游客在一 " /> 日本福利一区,91精品日本,色婷婷一区二区

色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

ThinkPHP的cookie和session沖突造成Cookie不能使用的解決方法

近期做一個網站的投票時,遇到Thinkphp中的cookie和session沖突導致Cookie不能使用的情況。

  該網站采用的是Thinkphp框架制作,有一頁面上面展示很多圖片,要求每個圖片下面有對應的投票,通過限制ip地址來,限制游客在一定時間范圍內,能對多個圖片投票,但是每個圖片只能投票一次,開始使用ip存儲在數據庫解決,后來改進為使用session存儲,ip在服務文件里,不過要把生成的sessionid存儲在本地的cookie中,按照Thinkphp手冊說明操作session一切順利,但是在生成cookie之后,卻在本地電腦中找不到cookie文本,原本以為是本地電腦限制cookie的生成,可是查看和測試的結果是沒有限制,于是自己又單獨建立了一個php文件,測試生成cookie,沒問題,在本地找到了cookie文本,于是在網上查找到如下內容。順序解決了問題,使用setcookie()函數設置cookie,得到了想要的結果。

  解決辦法如下:

  找到php.ini 這個配置文件,然后查找一項:output_buffering將其值由原來的off改為on,重新啟動Apache就ok了。

  另外還有很多相似的問題:

  有些時候會發現原在本地運行沒有問題的文件,在服務器上測試時,竟然提示本地沒有出現的錯誤: Warning: Cannot modify header information - headers already sent by…
  這樣的語句,很顯然,造成這個原因是因為setcookie造成的,查了一下網上,有如下的解釋: cookie本身在使用上有一些限制,例如:

  1.呼叫setcookie的敘述必須放在標簽之前
  2.呼叫setcookie之前,不可使用echo
  3.直到網頁被重新載入後,cookie才會在程序中出現
  4.setcookie函數必須在任何資料輸出至瀏覽器前,就先送出

  基於上面這些限制,所以執行setcookie()函數時,常會碰到“Undefined index”、“Cannot modify header information - headers already sent by”…等問題,解決“Cannot modify header information - headers already sent by”這個錯誤的方法是在產生cookie前,先延緩資料輸出至瀏覽器,因此,您可以在程序的最前方加上ob_start()這個函數。這樣問題就可以解決了。 但是如果要加上ob_start()的話,有不大可行,程序都寫完了,才來改這個似乎有點郁悶!發現提示這個錯誤的時候,我就在想我本地怎么沒提示這個問題呢,還以為是php.ini配置不一樣,想想又不對,都是差不多的。于是看看后面跟的那句“output started at…”意思是在setcookie之前已經在另一處有輸出了,于是找到output started at后面跟的那個文件,最后發現第一行是空白的。

php技術ThinkPHP的cookie和session沖突造成Cookie不能使用的解決方法,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 汉源县| 大理市| 东海县| 丹巴县| 防城港市| 沁阳市| 太和县| 搜索| 涪陵区| 固阳县| 拜城县| 社旗县| 桃园县| 安达市| 大名县| 临澧县| 葫芦岛市| 商城县| 柳州市| 凌海市| 栾川县| 揭东县| 洪湖市| 漳州市| 大石桥市| 即墨市| 外汇| 惠水县| 睢宁县| 山阴县| 加查县| 巴林左旗| 佛教| 辉南县| 桑植县| 堆龙德庆县| 石渠县| 大宁县| 交口县| 怀仁县| 英吉沙县|