session中储存的数据长度
时间: 2023-09-29 13:08:17 浏览: 226
Session中存储的数据长度是由具体实现的技术和存储介质等因素决定的,一般来说可以存储数百到数千个字符长度的数据。在Web应用中,session数据通常被存储在服务器端的内存或者数据库中,因此也受限于服务器的内存和数据库的容量等因素。如果需要存储更大的数据,可以考虑使用其他技术,比如将数据分片存储,或者存储到文件系统中。
相关问题
编写一道图形记忆测试试题,掌握session bean存储用户的数据 步骤如下 (1)编写JavaBean类 Memory.java用于构建模型 (2)编写choiceGrage. jsp, 该页面中的form 表单中使用radio 标记选择记忆测试级别: 初级、中级和高级。初级需要记忆一个长度为5 个字符的字符序列(例如★■★▲●) , 中级需要记忆一个长度为7 个字符的字符序列,高级需耍记忆一个长度为10 个字符的字符序列。在choiceGrage.jsp 页面选择级别后,单击form 表单的提交键提交给giveTest. jsp 页面。 (3)编写giveTest. jsp 页面,该页面获取choiceGrage. jsp 贞面提交的级别后.使用session bean 显示testString 的屈性值(例如展性值是长度为7 个字符的字符序列),然后提示用户在5 秒内记住这个字符序列。5 秒后,该页面将自动定向到answerTest.jsp 页面。 (4)编写answerTest. jsp 页面, 该页面的form 表单提供用户给出答案的界面,即使用radio 标记让用户选择字符序列中的各个字符,以此代表用户认为自己记住的字符序列。单击提交键. 将选择提交给judgeAnswer. jsp 页面 (5)编写judgeAnswer. jsp 页面,该页面负责判断有户是否记住了giveTest. jsp 页面给出 的字符序列。
(1) Memory.java
```java
public class Memory implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private String testString;
public Memory() {
}
public String getTestString() {
return testString;
}
public void setTestString(String testString) {
this.testString = testString;
}
}
```
(2) choiceGrage.jsp
```jsp
<html>
<head>
<title>选择级别</title>
</head>
<body>
<h2>请选择级别</h2>
<form action="giveTest.jsp" method="post">
<input type="radio" name="grade" value="1">初级<br>
<input type="radio" name="grade" value="2">中级<br>
<input type="radio" name="grade" value="3">高级<br>
<input type="submit" value="开始测试">
</form>
</body>
</html>
```
(3) giveTest.jsp
```jsp
<%@ page import="javax.servlet.http.HttpSession" %>
<%@ page import="java.util.Random" %>
<%
HttpSession session = request.getSession(true);
Memory memory = (Memory) session.getAttribute("memory");
if (memory == null) {
memory = new Memory();
session.setAttribute("memory", memory);
}
int grade = Integer.parseInt(request.getParameter("grade"));
int length = 0;
String chars = "";
switch (grade) {
case 1:
length = 5;
chars = "★■★▲●";
break;
case 2:
length = 7;
chars = "★■★▲●◆♦";
break;
case 3:
length = 10;
chars = "★■★▲●◆♦□■▲●";
break;
}
Random random = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
sb.append(chars.charAt(random.nextInt(chars.length())));
}
memory.setTestString(sb.toString());
response.setHeader("Refresh", "5; URL=answerTest.jsp");
%>
<html>
<head>
<title>记忆测试</title>
</head>
<body>
<h2>请记住以下字符序列</h2>
<p><%= memory.getTestString() %></p>
<p>这个字符序列将在5秒钟后消失,请在5秒内记住它</p>
</body>
</html>
```
(4) answerTest.jsp
```jsp
<%@ page import="javax.servlet.http.HttpSession" %>
<%@ page import="java.util.Arrays" %>
<%
HttpSession session = request.getSession(false);
if (session == null) {
response.sendRedirect("choiceGrage.jsp");
return;
}
Memory memory = (Memory) session.getAttribute("memory");
if (memory == null) {
response.sendRedirect("choiceGrage.jsp");
return;
}
%>
<html>
<head>
<title>记忆测试</title>
</head>
<body>
<h2>请在下面选择你记住的字符序列</h2>
<form action="judgeAnswer.jsp" method="post">
<% String testString = memory.getTestString();
char[] chars = testString.toCharArray();
Arrays.sort(chars);
for (char c : chars) { %>
<input type="radio" name="answer" value="<%= c %>"><%= c %>
<% } %>
<br>
<input type="submit" value="提交">
</form>
</body>
</html>
```
(5) judgeAnswer.jsp
```jsp
<%@ page import="javax.servlet.http.HttpSession" %>
<%
HttpSession session = request.getSession(false);
if (session == null) {
response.sendRedirect("choiceGrage.jsp");
return;
}
Memory memory = (Memory) session.getAttribute("memory");
if (memory == null) {
response.sendRedirect("choiceGrage.jsp");
return;
}
String answer = request.getParameter("answer");
if (answer == null || answer.length() != memory.getTestString().length()) {
out.println("<h2>答案错误</h2>");
} else {
char[] correct = memory.getTestString().toCharArray();
Arrays.sort(correct);
char[] userAnswer = answer.toCharArray();
Arrays.sort(userAnswer);
if (Arrays.equals(correct, userAnswer)) {
out.println("<h2>答案正确</h2>");
} else {
out.println("<h2>答案错误</h2>");
}
}
session.removeAttribute("memory");
%>
```
PHP中利用 Session 判断用户的访问权限,要求完成三个功能,一是练习设置和获取 Session 变量信息。二是编写利用 Session 限制未登录用户访问的程序。三是编写通过删除 Session 实现用户注销功能的程序。 Cookie 管理方面,完成以下三个要求,一是练习创建和修改 Cookie 变量。二是编写使 用 Cookie 实现用户登录的程序。三是编写利用 Cookie 记录用户浏览路径的程序。 编写验证码程序。要求利用 session 或 cookie 存储验证码,用以在提交数据时 验证。
好的,我会根据你的要求回答你的问题。首先,关于 PHP 中利用 Session 判断用户的访问权限,以下是三个功能的实现方法:
一、设置和获取 Session 变量信息
要在 PHP 中设置和获取 Session 变量信息,可以使用 $_SESSION 超全局变量。具体实现方法如下:
// 设置 Session 变量
session_start(); // 开启 Session
$_SESSION['username'] = 'John'; // 设置 Session 变量 username 的值为 John
// 获取 Session 变量
session_start(); // 开启 Session
echo $_SESSION['username']; // 输出 Session 变量 username 的值,即 John
在设置和获取 Session 变量之前,需要先开启 Session,否则无法使用 $_SESSION 变量。
二、利用 Session 限制未登录用户访问的程序
要实现利用 Session 限制未登录用户访问的程序,可以在需要判断用户是否登录的页面中添加如下代码:
session_start(); // 开启 Session
if (!isset($_SESSION['username'])) {
// 如果 Session 变量 username 不存在,说明用户未登录
header('Location: login.php'); // 跳转到登录页面
exit; // 结束脚本执行
}
其中,login.php 是登录页面的文件名,可以根据实际情况进行修改。
三、通过删除 Session 实现用户注销功能的程序
要实现通过删除 Session 实现用户注销功能的程序,可以在注销按钮的点击事件中添加如下代码:
session_start(); // 开启 Session
unset($_SESSION['username']); // 删除 Session 变量 username
header('Location: index.php'); // 跳转到首页
exit; // 结束脚本执行
其中,index.php 是首页的文件名,可以根据实际情况进行修改。
四、创建和修改 Cookie 变量
要在 PHP 中创建和修改 Cookie 变量,可以使用 setcookie() 函数。具体实现方法如下:
// 创建 Cookie 变量
setcookie('username', 'John', time()+3600); // 创建名为 username 的 Cookie 变量,值为 John,过期时间为 1 小时后
// 修改 Cookie 变量
setcookie('username', 'Mary', time()+3600); // 修改名为 username 的 Cookie 变量的值为 Mary,过期时间为 1 小时后
在设置 Cookie 变量时,需要指定变量名、变量值和过期时间等参数。
五、利用 Cookie 实现用户登录的程序
要实现利用 Cookie 实现用户登录的程序,可以在登录成功后创建一个名为 username 的 Cookie 变量,值为用户名,过期时间为一定时间后。在需要判断用户是否登录的页面中,可以使用 isset() 函数判断 Cookie 变量是否存在。具体实现方法如下:
// 登录成功后创建 Cookie 变量
setcookie('username', 'John', time()+3600); // 创建名为 username 的 Cookie 变量,值为 John,过期时间为 1 小时后
// 判断用户是否登录
if (!isset($_COOKIE['username'])) {
// 如果 Cookie 变量 username 不存在,说明用户未登录
header('Location: login.php'); // 跳转到登录页面
exit; // 结束脚本执行
}
其中,login.php 是登录页面的文件名,可以根据实际情况进行修改。
六、利用 Cookie 记录用户浏览路径的程序
要实现利用 Cookie 记录用户浏览路径的程序,可以在每次页面加载时将当前页面的 URL 添加到一个名为 history 的 Cookie 变量中,使用 implode() 函数将 history 变量中的 URL 以逗号分隔的形式输出即可。具体实现方法如下:
// 将当前页面的 URL 添加到 history 变量中
if (isset($_COOKIE['history'])) {
$history = explode(',', $_COOKIE['history']); // 将 history 变量中的 URL 以逗号分隔的形式转换成数组
array_push($history, $_SERVER['REQUEST_URI']); // 将当前页面的 URL 添加到数组末尾
while (count($history) > 5) {
array_shift($history); // 如果数组长度超过 5,删除数组开头的元素
}
setcookie('history', implode(',', $history), time()+3600); // 将修改后的 history 数组以逗号分隔的形式存入 Cookie 变量中
} else {
setcookie('history', $_SERVER['REQUEST_URI'], time()+3600); // 如果 history 变量不存在,直接将当前页面的 URL 存入 Cookie 变量中
}
// 输出浏览历史记录
if (isset($_COOKIE['history'])) {
$history = explode(',', $_COOKIE['history']); // 将 history 变量中的 URL 以逗号分隔的形式转换成数组
foreach ($history as $url) {
echo "<a href="$url">$url</a><br>"; // 输出每个 URL
}
}
其中,将浏览历史记录存储在 Cookie 变量中时,需要限制历史记录的长度不超过 5 条,可以使用 array_push() 和 array_shift() 函数实现。
七、验证码程序
要实现验证码程序,可以使用 PHP 中的 GD 库生成验证码图片,并将验证码存储在 Session 或 Cookie 中。具体实现方法如下:
// 生成验证码图片
session_start(); // 开启 Session
$code = ''; // 用于存储验证码的变量
$width = 100; // 验证码图片的宽度
$height = 40; // 验证码图片的高度
$image = imagecreate($width, $height); // 创建一个指定宽度和高度的空白画布
$bg_color = imagecolorallocate($image, 255, 255, 255); // 设置画布的背景颜色为白色
$font_color = imagecolorallocate($image, 0, 0, 0); // 设置画布的文本颜色为黑色
$font_size = 20; // 设置画布的字体大小
$char_arr = array_merge(range(0, 9), range('a', 'z'), range('A', 'Z')); // 候选字符集,包括数字、小写字母和大写字母
for ($i = 0; $i < 4; $i++) {
$char = $char_arr[array_rand($char_arr)]; // 随机选择一个字符
$code .= $char; // 将字符添加到验证码中
$x = ($width/4)*$i + 10; // 计算字符的 x 坐标
$y = mt_rand(15, $height-15); // 计算字符的 y 坐标
imagettftext($image, $font_size, mt_rand(-30, 30), $x, $y, $font_color, 'arial.ttf', $char); // 在画布上绘制字符
}
$_SESSION['code'] = $code; // 将验证码存储在 Session 变量中
header('Content-Type: image/png'); // 设置输出格式为 PNG 图片
imagepng($image); // 输出验证码图片
imagedestroy($image); // 销毁画布对象
在生成验证码图片时,需要使用 GD 库提供的 imagettftext() 函数绘制字符,并将绘制好的验证码存储在 Session 变量中。
验证提交数据时,可以从 Session 或 Cookie 中读取验证码,与用户输入的验证码进行比较,判断验证码是否正确。
阅读全文