看板 PHP 關於我們 聯絡資訊
故事是這樣的... [淚目] 我用 CodeIgniter 寫一個 widget,要有登入(keep session)的功能 所以說,在某個網站的某個網頁上頭會有這段程式碼 (也就是兩個網頁的 host 不一樣) <!-- @ http://foo.com/foo.html --> <iframe src="http://my.web/index.php/widget/index" /> 問題是,在 IE7 上頭「session 完全失效」 在 Firefox 3.0.6 跟 Chrome 1.0.x 都正常 原本以為是 CodeIgniter 的問題 後來殺進去 CI 的 session.php 發現最終的問題在於 setcookie() 時,雖然值回傳 true 實際上,在 setcookie() 之後 var_dump($_COOKIE) 的時候是啥都沒有 (同樣程式在 Firefox 跟 Chrome 都取得出來) 於是乎,把程式碼簡化到這個樣子: <!-- http://my.web/test.php --> <?php if(isset($_POST['loginBtn'])) { setcookie("login",'true'); } if(isset($_POST['logoutBtn'])) { setcookie("login",'false'); } var_dump($_COOKIE); ?> <form method="POST" action="index.php"> <input type="submit" name = "loginBtn" value="Login" /> <input type="submit" name = "logoutBtn" value="Logout" /> </form> 包在 <iframe> 當中,用 IE7 執行是死翹翹的... 因為覺得很奇怪,所以無聊跑去寫一個 JSP 版本的: <?xml version="1.0" encoding="UTF-8" ?> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% if(request.getParameter("login")!=null){ session.setAttribute("user", true); }else{ session.removeAttribute("user"); } %> <c:if test="${empty user}"> NOT Login...... <form action="test.jsp"> <input type="submit" name="login" value="login" /> </form> </c:if> <c:if test="${not empty user}"> OK, I am in... <form action="test.jsp"> <input type="submit" name="logout" value="logout" /> </form> </c:if> </body> </html> 奇怪(還是說正常? [毆飛])的事情是,都正常耶... 所以厚著臉皮 po 上來,請教各位前輩 是有哪裡做錯了? 或是更改一些(不是 browser 的)設定就能解決? 開發環境: (XAMPP for Windows 1.7.0) Apache 2.2.11 PHP 5.2.8 (CodeIgniter 1.7.0) -- 侃侃長論鮮窒礙 首頁:http://www.psmonkey.idv.tw 眾目睽睽無心顫 Blog:http://ps-think.blogspot.com 煢居少聊常人事 殺頭容易告白難 歡迎參觀 Java 版(@ptt.cc)精華區 \囧/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.114.200.219
aquarianboy :試試看在php裡加上 header('P3P:CP="CAO PSA OUR"'); 04/13 22:20
aquarianboy :不確定能解.. :) 04/13 22:20
aquarianboy :之前在IE跟IFrame處理session時候有遇到.. 04/13 22:21
PsMonkey :感謝... 可以了.... Orz 04/13 22:41