Php 用户在同一会话中返回时未定义的索引

Php 用户在同一会话中返回时未定义的索引,php,switch-statement,isset,Php,Switch Statement,Isset,我有一个简单的会话登录系统。当用户成功登录时,该用户将被重定向到某个页面 问题是,当用户离开我的站点,稍后返回index.php(同一会话)时,用户将获得“未定义的索引”,因为当用户进入我的站点并且仍然登录时,没有提供任何参数 我使用php开关来控制我的页面 我的index.php中首先有以下代码: require_once('function.php'); session_start(); if (!is_user()) { redirect('signin.php'); } ?>

我有一个简单的会话登录系统。当用户成功登录时,该用户将被重定向到某个页面

问题是,当用户离开我的站点,稍后返回index.php(同一会话)时,用户将获得“未定义的索引”,因为当用户进入我的站点并且仍然登录时,没有提供任何参数

我使用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;


}

?>

我假设“无效索引”来自
$p=$\u请求['p']。您要检查该数组元素是否存在

if (isset($_REQUEST['p'])) {
那么这个呢:

if (isset($_REQUEST['p']))
{
    $p = $_REQUEST['p'];          
    // ...
}
但是请注意:

显然$\u请求['p']是未定义的

如果希望脚本在用户返回时仍然知道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 ....');
    }
?>

非常感谢-我从您的帮助中获得了灵感:)我在article.php中有我的switch语句。