作者PsMonkey (痞子軍團團長)
看板PHP
標題[問題] iframe 內無法 setcookie?
時間Mon Apr 13 19:19:22 2009
故事是這樣的... [淚目]
我用 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