1.通过cookie可以解决上篇中多个用户对数据的修改,每个COOKIE保存不同用户的数据

<?php
if(empty($_COOKIE['num'])||empty($_GET['num'])){
//第一次提交,执行这里面的代码
$num=rand(0,100);
setcookie('num',$num);
}else{
//不是第一次提交
$count = empty($_COOKIE['count']) ? 0:(int)$_COOKIE['count'];//如果是第一次猜count=0,如果不是第一次猜count就为当前的值 if($count<10)
{
$num1=(int)$_GET['num']; //用户提交的数据
$num2=(int)$_COOKIE['num'];//保存在cookie里面的数据
$result=$num1-$num2;
if($result==0){
echo "猜对了";
setcookie('num');
setcookie('count');
}elseif($result>0){
echo "数字太大";
}else{
echo "数字太小";
} setcookie('count',$count+1);//执行完一次就将$count加1
}else{
echo "游戏结束,挑战失败";
setcookie('num');
setcookie('count');
} }
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>猜数字</title>
<style>
body {
padding: 100px 0;
background-color: #2b3b49;
color: #fff;
text-align: center;
font-size: 2.5em;
}
input {
padding: 5px 20px;
height: 50px;
background-color: #3b4b59;
border: 1px solid #c0c0c0;
box-sizing: border-box;
color: #fff;
font-size: 20px;
}
button {
padding: 5px 20px;
height: 50px;
font-size: 16px;
}
</style>
</head>
<body>
<h1>猜数字游戏</h1>
<p>Hi,我已经准备了一个0~100的数字,你需要在仅有的10机会之内猜对它。</p>
<form action="guss.php" method="post">
<input type="number" min="0" max="100" name="num" placeholder="随便猜">
<button type="submit">试一试</button>
</form>
</body>
</html>

但是在使用COOKIE的时候存在不安全的地方。比如在这个案列中,如果用户是一个开发人员,通过控制台,就可以看到COOKIE里面的值

我们用session来解决这个问题

<?php
session_start();
if(empty($_SESSION['num'])||empty($_GET['num'])){
//第一次提交,执行这里面的代码
$num=rand(0,100);
$_SESSION['num']=$num; }else{
//不是第一次提交
$count = empty($_SESSION['count']) ? 0:(int)$_SESSION['count'];//如果是第一次猜count=0,如果不是第一次猜count就为当前的值 if($count<10)
{
$num1=(int)$_GET['num']; //用户提交的数据
$num2=(int)$_SESSION['num'];//保存在cookie里面的数据
$result=$num1-$num2;
if($result==0){
echo "猜对了";
unset($_SESSION['num']);
unset($_SESSION['count']);
}elseif($result>0){
echo "数字太大";
}else{
echo "数字太小";
} $_SESSION['count']=$count+1;//执行完一次就将$count加1
}else{
echo "游戏结束,挑战失败";
unset($_SESSION['num']);
unset($_SESSION['count']);
} }
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>猜数字</title>
<style>
body {
padding: 100px 0;
background-color: #2b3b49;
color: #fff;
text-align: center;
font-size: 2.5em;
}
input {
padding: 5px 20px;
height: 50px;
background-color: #3b4b59;
border: 1px solid #c0c0c0;
box-sizing: border-box;
color: #fff;
font-size: 20px;
}
button {
padding: 5px 20px;
height: 50px;
font-size: 16px;
}
</style>
</head>
<body>
<h1>猜数字游戏</h1>
<p>Hi,我已经准备了一个0~100的数字,你需要在仅有的10机会之内猜对它。</p>
<form action="session2.php" method="get">
<input type="number" min="0" max="100" name="num" placeholder="随便猜">
<button type="submit">试一试</button>
</form>
</body>
</html>

cookie猜数字游戏(下)------------以及cookie使用的不安全之处的更多相关文章

  1. cookie猜数字游戏(上)---------------思路分析(踩坑)

    说明:用户第一次请求页面的时候,同时会产生一个随机数,用户点提交表单的时候,会将输入的数字与第一次请求产生的数字进行一个对比. 问题一:如何保存用户每次提交的数据 我们常见的在服务器中保存数据的方式是 ...

  2. 不一样的猜数字游戏 — leetcode 375. Guess Number Higher or Lower II

    好久没切 leetcode 的题了,静下心来切了道,这道题比较有意思,和大家分享下. 我把它叫做 "不一样的猜数字游戏",我们先来看看传统的猜数字游戏,Guess Number H ...

  3. 【原创Android游戏】--猜数字游戏Version 0.1

    想当年高中时经常和小伙伴在纸上或者黑板上或者学习机上玩猜数字的游戏,在当年那个手机等娱乐设备在我们那还不是很普遍的时候是很好的一个消遣的游戏,去年的时候便写了一个Android版的猜数字游戏,只是当时 ...

  4. 【原创Android游戏】--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用

    --------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...

  5. Java完成简单猜数字游戏v2.0

    猜数字游戏v2.0 优化了获取随机数.输入数据超出边界值的代码,并增加了异常处理,能够在玩家输入错误数据错误时给出可靠指引,希望对和我一样的新人有帮助, 最后希望有大神愿意帮我解决代码优化的问题,谢谢 ...

  6. JavaScript一个猜数字游戏

    效果图: 代码: <body> <script type="text/javascript"> window.onload = newgame; //页面载 ...

  7. 【python小练习】简单的猜数字游戏

    简单的猜数字游戏 前两天在论坛回答问题时候,看到一个猜数字的游戏,就在原来的基础上改了一下,玩一玩. 此程序,数字范围和尝试次数是事先设定好的,当然可以通过代码修改.经过测试,由于难度过大,我在其中加 ...

  8. HTML5 Canvas之猜数字游戏

    主要的内容描述的是如何渲染一个矩形的边框和填充背景,以及文字. 代码中有详细的注释: 效果图: 以下是代码: <!DOCTYPE html> <html lang="cn& ...

  9. java实现登录的验证码和猜数字游戏_图形化界面

    实验任务四 1,出现设计思想 (1)先定义文本框.密码框和验证码框的组件 (2)定义面板和按钮的个数 (3)定义公有的虚构方法,通过对象实例化来调用 (4)利用Random类来实现生成0-9的随机数 ...

随机推荐

  1. composer 出现You are running Composer with SSL/TLS protection disabled.

    开启php的ssl开启 composer config -g -- disable-tls false

  2. LODOP中预览界面查看打印机的可打区域具体值

    LODOP在打印预览的时候,如果选择的打印机是真实打印机,会发现可能会有虚线,不同打印机虚线的位置不同,这个虚线是打印机的可打区域,Lodop无法控制. 可打区域,顾名思义,就是打印机可以打印的区域, ...

  3. LODOP字体不识别 英文字母连起来 引号不正常

    打印超文本的时候,有时候会发现html中设置的css样式显示不正常,字体根本不是设置的字体,这种情况有可能是:1.该操作系统没有安装自己指定的那种字体,那么没有安装自然就不能显示设置的字体.2.该操作 ...

  4. 关于构造器中的super()

    1.为什么在子类的constructor里面要加一句super()? 答:如果子类用了extends的关键字继承的父类,那么子类在使用构造器的时候就要加super()语句,这是语法规范,就是这么定的. ...

  5. codeforces659C

    Tanya and Toys CodeForces - 659C In Berland recently a new collection of toys went on sale. This col ...

  6. Mybatis常见问题总结

    1.大于号.小于号在sql语句中的转换 使用mybatis 时sql语句是写在xml文件中,如果sql中有一些特殊的字符的话,比如< ,<=,>,>=等符号,会引起xml格式的 ...

  7. 【数学建模】day08-数理统计III

    2. 回归分析 回归分析与曲线拟合区分. 曲线拟合是,根据得到的若干有关变量的一组数据,寻找因变量与(一个或几个)自变量之间的一个函数,使这个函数对那组数据拟合得好.通常,函数的形式可以由经验.先验知 ...

  8. JAVA优先级队列元素输出顺序测试

    package code.test; import java.util.Comparator; import java.util.Iterator; import java.util.Priority ...

  9. springboot 学习

    参考:http://www.cnblogs.com/sam-uncle/p/8796212.html spring boot 系列之一:spring boot 入门 注意:main启动类和contro ...

  10. scrapy爬取知乎问答

    登陆 参考 https://github.com/zkqiang/Zhihu-Login # -*- coding: utf-8 -*- import scrapy import time impor ...