window.location.href 跳转后 session失效

WBOY
发布: 2016-06-20 12:33:34
原创
1877 人浏览过

在一个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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板