Php isset$\u无法按预期工作
我正在尝试将Php isset$\u无法按预期工作,php,session-variables,getvalue,Php,Session Variables,Getvalue,我正在尝试将$user\u domain传递到login.php。我从first_page.phpfromheader()获取值。在returning\u user.php中,我设置了一个变量$\u SESSION['returning\u user'],让我的程序知道在login.php中该做什么。如果一切顺利,用户将停留在login.php。如果出现问题,用户将被重定向到first\u page.php,并且必须重新提交表单。我现在面临的问题是,当我在login.php中包含returnin
$user\u domain
传递到login.php
。我从first_page.php
fromheader()获取值代码>。在returning\u user.php
中,我设置了一个变量$\u SESSION['returning\u user']
,让我的程序知道在login.php中该做什么。如果一切顺利,用户将停留在login.php
。如果出现问题,用户将被重定向到first\u page.php
,并且必须重新提交表单。我现在面临的问题是,当我在login.php
中包含returning\u user.php
时,用户正在返回到first\u page.php
。当我删除它时,用户保持在login.php
上,但是if()
语句之间的代码似乎没有被执行。我不知道我做错了什么。任何帮助都将不胜感激
first_page.php
//rest of code above
if($stmt){
header("Location: returning_user.php?domain=".$domain."&key=".$key."");
exit;
}
session_start();
if(isset($_GET['key']) && isset($_GET['domain']) ){
//get domain variable
$user_domain = $_GET['domain'];
//put key variable in session
$_SESSION['user_domain'] = $user_domain;
//create a returning_user session
$_SESSION['returning_user']="TRUE";
//direct user to login page
header("location:../login.php");
exit;
}else{
header("location : first_page.php");
exit;
}
session_start();
include 'returning_user.php';
if(isset($_SESSION['returning_user']) && $_SESSION['returning_user']=="TRUE"){
//do something amazing here
}
返回_user.php
//rest of code above
if($stmt){
header("Location: returning_user.php?domain=".$domain."&key=".$key."");
exit;
}
session_start();
if(isset($_GET['key']) && isset($_GET['domain']) ){
//get domain variable
$user_domain = $_GET['domain'];
//put key variable in session
$_SESSION['user_domain'] = $user_domain;
//create a returning_user session
$_SESSION['returning_user']="TRUE";
//direct user to login page
header("location:../login.php");
exit;
}else{
header("location : first_page.php");
exit;
}
session_start();
include 'returning_user.php';
if(isset($_SESSION['returning_user']) && $_SESSION['returning_user']=="TRUE"){
//do something amazing here
}
login.php
//rest of code above
if($stmt){
header("Location: returning_user.php?domain=".$domain."&key=".$key."");
exit;
}
session_start();
if(isset($_GET['key']) && isset($_GET['domain']) ){
//get domain variable
$user_domain = $_GET['domain'];
//put key variable in session
$_SESSION['user_domain'] = $user_domain;
//create a returning_user session
$_SESSION['returning_user']="TRUE";
//direct user to login page
header("location:../login.php");
exit;
}else{
header("location : first_page.php");
exit;
}
session_start();
include 'returning_user.php';
if(isset($_SESSION['returning_user']) && $_SESSION['returning_user']=="TRUE"){
//do something amazing here
}
var\u dump($\u GET)
如果域
包含一个?
,它将中断键
变量
您应该将first_page.php
更改为
if($stmt){
header("Location: returning_user.php?domain=". urlencode($domain)."&key=".$key."");
}
当您执行时,包括“returning_user.php”
在login.php
中,运行returning\u user.php
中的代码。若您从顶部沿着该代码路径走,您可以看到,不管任何参数的内容如何,最终结果都是重定向到下一个目录(…这些路径看起来很奇怪,因为这意味着您添加的login.php
与您将用户重定向到的login.php
或first\u user.php
不同
我不确定您是否真的想执行包含“returning_user.php”;
-似乎您已经基于该页面上的所有其他内容设置了一个会话,然后将用户重定向到目标,而不是包含该文件(当它像这样被包含时,您正在将变量导入当前范围-不需要这样的会话)。我看到了您的沮丧。首先,您需要从登录中删除返回的\u user.php
然后,在登录中用以下代码替换您的代码:
session_start();
if(isset($_SESSION['returning_user'] == "TRUE")){
echo "Success!";
}
另外(这通常是一个不受欢迎的观点),为了避免使用标题,这可能会在其他地方导致其他问题,我更喜欢结束我的PHP标记,并放置以下Javascript
<script>location.replace("whatever.php");</script>
location.replace(“whatever.php”);
然后在之后立即提取我的PHP标记。之前:
您的代码有一个问题,我将尝试解释:
- 您,即用户,位于
first\u page.php
- 从那里你被重定向到
returning\u user.php
。获取值(“域”和“键”)也被传递
returning_user.php
读取GET值(现在已设置),将它们写入会话,并将您重定向到login.php
(也不传递GET值)。注意:从技术上讲,您将两个GET值传递到一个页面(returning_user.php
)为了在会话中保存它们,我认为不需要此步骤;您可以在会话中直接将它们保存在first\u page.php
中
- 在
login.php
中,包含了returning_user.php
页面。它会再次尝试读取GET值。但是,由于GET值不再设置,因此会将您重定向到first_page.php
另一个问题是@MatsLindh所描述的问题
之后:
因此,我对您想要实现的目标给出了一些想法,并提出了以下解决方案:
- 您,即用户,位于
first\u page.php
- 您填写一份表格并提交
- 提交后,值“域”、“键”和“返回用户”将写入会话
- 然后您将被重定向到
login.php
- 在
login.php
中包含名为protector.php
的文件。protector.php
检查会话值“domain”和“key”是否已设置。如果未设置,则重定向到first_page.php
- 如果
protector.php
中的会话变量验证成功,则可以处理login.php
中的进一步代码。例如:读取会话变量“returning\u user”,并在那里做一些令人惊奇的事情:-)
注意事项:
- 您可以将
protector.php
作为返回的\u user.php
的替代品
您可以在所有需要“保护”的页面中包含protector.php
我会将first\u page.php
重命名为dashboard.php
在first_page.php
中,我实现了一个表单,以便在从另一个页面重定向到first_page.php
时能够在屏幕上显示一些内容,并在单击按钮(例如表单提交时)时开始重定向到login.php
祝你好运
first_page.php
那么var\u dump($\u GET)是什么呢
告诉你?我的意见是,$domain
和$key
的值是问题所在。因此,正如@MatsLindh善意地问的那样,你应该向我们提供$\u GET
数组的输出。如果你忽略我们的评论,那么你希望我们如何帮助你?抱歉,但我不相信公认的答案。bot的价值是什么h获取数组/变量?我看到了$domain
和$user\u domain
,对我来说,这告诉我有些东西定义不正确。我用示例值测试了你的代码,它没有失败。@Fred ii-:测试代码后,你是对的,问题不在return.php,而在login.phpinclude(returning\u user.php)中;
如果这是实际的语法,它会出错,并且会有m