PHP中session(报错Notice: Undefined index)无法获取值的原因(原因之一)与分析

PHP中的SESSION问题:


本文主题: 在页面之间传递session时,两页面文件不在同文件夹中而导致session无法传递,报错Notice: Undefined index…

此问题测试:

  • 文件结构:

    test文件夹:
    —gameIndex.php
    —out.php
    —php文件夹:in.php

    如图:
    在这里插入图片描述
    在这里插入图片描述

  • 文件内容:

gameIndex.php:

<?php
	session_start();
	echo $_SESSION['userid'];
?>

out.php:

<?php
	session_start();
	$_SESSION['userid'] = 4;
	echo "<script>window.location.href = 'gameIndex.php'</script>";
?>

in.php:

<?php
	session_start();
	$_SESSION['userid'] = 4;
	echo "<script>window.location.href = '../gameIndex.php'</script>";
?>
  • 测试:

1.浏览器访问:http://localhost:8081/dashboard/test/php/in.php
在这里插入图片描述
2.浏览器访问:http://localhost:8081/dashboard/test/out.php
在这里插入图片描述

解决方法: 将两文件放到同一目录下。

好的,下面是一个使用会话(session)来传递变量,并进行Web重定向的HTML示例: ```html <!DOCTYPE html> <html> <head> <title>Web重定向示例</title> </head> <body> <h1>欢迎使用Web重定向示例</h1> <form action="redirect.php" method="post"> <label for="username">用户名:</label> <input type="text" id="username" name="username"><br><br> <label for="password">密码:</label> <input type="password" id="password" name="password"><br><br> <button type="submit">登录</button> </form> </body> </html> ``` 在上面的示例,我们创建了一个包含登录表单的HTML页面。当用户提交表单时,它将重定向到`redirect.php`页面,该页面将检查用户提供的用户名和密码,并根据结果重定向到不同的页面。 下面是`redirect.php`的示例代码: ```php <?php session_start(); // 模拟检查用户提供的用户名和密码 if($_POST['username'] == 'admin' && $_POST['password'] == '123456'){ // 如果用户提供的用户名和密码是正确的,则将变量$is_logged_in设置为true,并将其存储在会话(session) $_SESSION['is_logged_in'] = true; // 重定向到受保护的页面 header('Location: protected.php'); exit; } else { // 如果用户提供的用户名和密码是错误的,则将变量$is_logged_in设置为false,并将其存储在会话(session) $_SESSION['is_logged_in'] = false; // 重定向到登录失败页面 header('Location: login_failed.php'); exit; } ?> ``` 在上面的示例,我们使用`session_start()`函数启动会话(session),并检查用户提供的用户名和密码。如果用户名和密码正确,则将`$_SESSION['is_logged_in']`变量设置为`true`,并将用户重定向到受保护的页面`protected.php`。如果用户名和密码错误,则将`$_SESSION['is_logged_in']`变量设置为`false`,并将用户重定向到登录失败页面`login_failed.php`。 在受保护的页面`protected.php`,我们可以使用以下代码检查用户是否已登录: ```php <?php session_start(); // 检查用户是否已登录 if(!isset($_SESSION['is_logged_in']) || $_SESSION['is_logged_in'] !== true){ // 如果用户未登录,则将其重定向到登录页面 header('Location: login.php'); exit; } ?> <!-- 受保护的内容 --> <!DOCTYPE html> <html> <head> <title>受保护的页面</title> </head> <body> <h1>欢迎访问受保护的页面</h1> <p>只有已登录用户才能看到这个页面。</p> </body> </html> ``` 在上面的示例,我们使用`session_start()`函数启动会话(session),并使用`$_SESSION['is_logged_in']`变量检查用户是否已登录。如果用户未登录,则将其重定向到登录页面`login.php`。如果用户已登录,则显示受保护的内容。 希望这个示例可以帮助你了解如何使用会话(session)来传递变量,并进行Web重定向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超周到的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值