window.location.href 跳转后 session失效

WBOY
發布: 2016-06-20 12:33:34
原創
1900 人瀏覽過

在一个php中调用window.location.href跳转后,在跳转后的页面中session失效无法使用,怎么解决


回复讨论(解决方案)

跳转到哪里?

你的代码

跳转到哪里?

你的代码

$url = "main.php";window.location.href='$url';
登入後複製


就是这样

你的代码中根本就没有设置 session
何来的 session 丢失?

你的代码中根本就没有设置 session
何来的 session 丢失?



有设置啊,在代码前面 我以为你要看是这怎么跳转的呢
就是在前面设置了session=['check']=true
然后在后面都这个的时候读不出这个真值

你这不有写错啦?!
session=['check']=true
这是火星人的写法吧?

你这不有写错啦?!
session=['check']=true
这是火星人的写法吧?


是这个写错了 代码里没有问题 我在 没跳转的那个页面里可以读出来session里的东西
但是在跳转到的那个页面就读不到session了

不想和你说什么了
讨论的前提是真诚,基础是对等

不想和你说什么了
讨论的前提是真诚,基础是对等


我这个问题就是很简单的 在php中用window.location.href 来跳转网页的时候,跳转的网页和原网页的session不能共享
这是session的性质,我在别的地方也是查到这个问题但没有明确的解决办法,不是说我的代码有问题,也不是代码的问题,我认为我已经把我的问题已经说明白了,就是当用跳转网页的时候,原网页的session 对于跳转后的网页是无法读取的,这样怎么解决。
另外 我觉得我已经够真诚了,并且我已经把我所知道的都告诉你了

Session 正确的写法是
session_start();
$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time();
类似这样。
不同的域会导致session的改变。下面是要给jsp的例子,一看就懂,虽然你使用php,但是思路才是重点。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String JSESSIONID = request.getSession().getId();//获取当前JSESSIONID (不管是从主域还是二级域访问产生)

Cookie cookie = new Cookie("JSESSIONID", JSESSIONID);
cookie.setDomain(".test.com"); //关键在这里,将cookie设成主域名访问,确保不同域之间都能获取到该cookie的值,从而确保session统一
response.addCookie(cookie); //将cookie返回到客户端

request.getRequestDispatcher("indes.jsp").forward(request, response);

%>
引用页面
http://www.cnblogs.com/nicholas_f/archive/2010/11/05/1869811.html

Session 正确的写法是
session_start();
$_SESSION['favcolor'] = 'green';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time();
类似这样。
不同的域会导致session的改变。下面是要给jsp的例子,一看就懂,虽然你使用php,但是思路才是重点。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
String JSESSIONID = request.getSession().getId();//获取当前JSESSIONID (不管是从主域还是二级域访问产生)

Cookie cookie = new Cookie("JSESSIONID", JSESSIONID);
cookie.setDomain(".test.com"); //关键在这里,将cookie设成主域名访问,确保不同域之间都能获取到该cookie的值,从而确保session统一
response.addCookie(cookie); //将cookie返回到客户端

request.getRequestDispatcher("indes.jsp").forward(request, response);

%>
引用页面
http://www.cnblogs.com/nicholas_f/archive/2010/11/05/1869811.html


你的我懂了 但是我还想问一下window.location.href 跳转具体是怎么实现的

你的态度是真诚的,但你我掌握的信息(是你不愿提供)是不对等的
你的代码有问题,所以会有错误的表现!

<?phpsession_start();$_SESSION['test'] = 'abcd';echo "<script>location='session_target.php'</script>";
登入後複製
登入後複製
登入後複製
登入後複製

session_target.
<?phpsession_start();print_r($_SESSION);
登入後複製
登入後複製
登入後複製
登入後複製

事实在那里,多说没有!

你的态度是真诚的,但你我掌握的信息(是你不愿提供)是不对等的
你的代码有问题,所以会有错误的表现!

<?phpsession_start();$_SESSION['test'] = 'abcd';echo "<script>location='session_target.php'</script>";
登入後複製
登入後複製
登入後複製
登入後複製

session_target.
<?phpsession_start();print_r($_SESSION);
登入後複製
登入後複製
登入後複製
登入後複製

事实在那里,多说没有!
index.php:

<?php  session_start();echo "<script>alert('登陆成功!');location='main.php'</script>";$_session["check"]=true;?>
登入後複製
登入後複製

main.php:
<?php session_start(); 	print_r($_SESSION);?>
登入後複製
登入後複製




我的这个和你的差不多 但是输出就是空值


你的态度是真诚的,但你我掌握的信息(是你不愿提供)是不对等的
你的代码有问题,所以会有错误的表现!

<?phpsession_start();$_SESSION['test'] = 'abcd';echo "<script>location='session_target.php'</script>";
登入後複製
登入後複製
登入後複製
登入後複製

session_target.
<?phpsession_start();print_r($_SESSION);
登入後複製
登入後複製
登入後複製
登入後複製

事实在那里,多说没有!
index.php:

<?php  session_start();echo "<script>alert('登陆成功!');location='main.php'</script>";$_session["check"]=true;?>
登入後複製
登入後複製

main.php:
<?php session_start(); 	print_r($_SESSION);?>
登入後複製
登入後複製




我的这个和你的差不多 但是输出就是空值


有段代码贴反了 是先赋值的

你的态度是真诚的,但你我掌握的信息(是你不愿提供)是不对等的
你的代码有问题,所以会有错误的表现!

<?phpsession_start();$_SESSION['test'] = 'abcd';echo "<script>location='session_target.php'</script>";
登入後複製
登入後複製
登入後複製
登入後複製

session_target.
<?phpsession_start();print_r($_SESSION);
登入後複製
登入後複製
登入後複製
登入後複製

事实在那里,多说没有!




然后我按照你的重新改了一下
index.php
<?php  session_start();$_session["check"]=1;print_r($_SESSION);echo "location='session_target.php'</script>";?>
登入後複製


session_target.php:
<?phpsession_start();print_r($_SESSION);?>
登入後複製


也输出为空

这有你的!明明写错了,还不认账
$_session["check"]=true;
应写作
$_SESSION["check"]=true;

php 的变量名是区分大小写的

这有你的!明明写错了,还不认账
$_session["check"]=true;
应写作
$_SESSION["check"]=true;

php 的变量名是区分大小写的



哦哦哦哦哦       很抱歉耽误了你这么长时间  非常感谢!
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板