当用户 returns 在同一会话中时未定义的索引
Undefined index when user returns in same session
我有一个带会话的简单登录系统。当用户成功登录时,用户将被重定向到一个页面。
问题是当用户离开我的站点并稍后返回到 index.php(同一会话)时,用户将得到 "Undefined index",因为当用户进入我的站点时没有提供任何参数,并且仍处于登录状态。
我使用 php 开关来控制我的页面。
我的 index.php:
中首先有此代码
require_once('function.php');
session_start();
if (!is_user()) {
redirect('signin.php');
}
?>
我的带有开关的文件如下所示:
<?php
$p=$_REQUEST['p'];
if (isset($p)) {
switch ($p) {
case "vine":
include "vine.php";
break;
}
?>
我假设 'Invalid index' 来自 $p=$_REQUEST['p'];
。您想检查该数组元素是否存在。
if (isset($_REQUEST['p'])) {
这个怎么样:
if (isset($_REQUEST['p']))
{
$p = $_REQUEST['p'];
// ...
}
但请注意:http://php.net/manual/en/function.array-key-exists.php#example-5520
显然 $_REQUEST['p'] 未定义。
如果您希望您的脚本在用户 returns 时仍然知道 p 参数,您必须以某种方式保存它以供进一步请求。这可以在 index.php:
中这样完成
<?php
session_start();
$p = isset($_REQUEST['p']) ?
$_REQUEST['p'] : (
isset($_SESSION['p']) ?
$_SESSION['p'] :
false
)
);
if ($p !== false) {
$_SESSION['p'] = $p;
switch ($p) {
case "vine": include "vine.php";
break;
}
} else {
die ('Unknown category ....');
}
?>
该代码查找 明确给定的参数 p 并在可用时采用该参数。否则它会查找 session 参数 p.
否则它将 p 设置为 false 以指示没有可用的值。
如果给定 p 的值,则设置会话变量 $_SESSION['p']。当然,必须在脚本顶部调用 sesssion_start() 以使会话变量可用。
我有一个带会话的简单登录系统。当用户成功登录时,用户将被重定向到一个页面。
问题是当用户离开我的站点并稍后返回到 index.php(同一会话)时,用户将得到 "Undefined index",因为当用户进入我的站点时没有提供任何参数,并且仍处于登录状态。
我使用 php 开关来控制我的页面。
我的 index.php:
中首先有此代码require_once('function.php');
session_start();
if (!is_user()) {
redirect('signin.php');
}
?>
我的带有开关的文件如下所示:
<?php
$p=$_REQUEST['p'];
if (isset($p)) {
switch ($p) {
case "vine":
include "vine.php";
break;
}
?>
我假设 'Invalid index' 来自 $p=$_REQUEST['p'];
。您想检查该数组元素是否存在。
if (isset($_REQUEST['p'])) {
这个怎么样:
if (isset($_REQUEST['p']))
{
$p = $_REQUEST['p'];
// ...
}
但请注意:http://php.net/manual/en/function.array-key-exists.php#example-5520
显然 $_REQUEST['p'] 未定义。
如果您希望您的脚本在用户 returns 时仍然知道 p 参数,您必须以某种方式保存它以供进一步请求。这可以在 index.php:
中这样完成<?php
session_start();
$p = isset($_REQUEST['p']) ?
$_REQUEST['p'] : (
isset($_SESSION['p']) ?
$_SESSION['p'] :
false
)
);
if ($p !== false) {
$_SESSION['p'] = $p;
switch ($p) {
case "vine": include "vine.php";
break;
}
} else {
die ('Unknown category ....');
}
?>
该代码查找 明确给定的参数 p 并在可用时采用该参数。否则它会查找 session 参数 p.
否则它将 p 设置为 false 以指示没有可用的值。
如果给定 p 的值,则设置会话变量 $_SESSION['p']。当然,必须在脚本顶部调用 sesssion_start() 以使会话变量可用。