cookie猜数字游戏(上)---------------思路分析(踩坑)
- 说明:用户第一次请求页面的时候,同时会产生一个随机数,用户点提交表单的时候,会将输入的数字与第一次请求产生的数字进行一个对比。
- 问题一:如何保存用户每次提交的数据
我们常见的在服务器中保存数据的方式是通过file_put_content()函数,将用户输入的数据保存在服务端的一个.txt文件中,那么问 题来了===========如果同一时刻有另外一个用户也在提交表单,那么.txt文件中的数据就可能被另外一个用户修改。
这里我们用cookie将不同用户提交的数据保存到不同的cookie中
- 问题二:不是每次提交表单都要产生随机数,浏览器如何辨别用户提交页面的时候是不是游戏开始
解决方案一:我们可以通过识别用户提交的方式是GET方式还是POST方式(如from表单里method="get"就会有问题,这个时候每次提交的都是get请求)

解决方案二:我们可以通过提交次数来辨别,如果是第一次提交就产生随机数,如果是第二次提交就不产生随机数

问题三我们如何做到猜10次
方法1:另外存一个cookie['count']用来记录,每猜一次就让他的值+1
$count = empty($_COOKIE['count']) ? 0:(int)$_COOKIE['count'];
//如果是第一次猜count=0,如果不是第一次猜count就为当前的值
if($count<10)
{
........
setcookie('count',$count+1);//执行完一次就将$count加1
}else{
echo "游戏结束,挑战失败";
setcookie('num');
setcookie('count');
}
方法2:将每次猜的数保存在COOKIE中,然后判断这个数组的长度
cookie猜数字游戏(上)---------------思路分析(踩坑)的更多相关文章
- cookie猜数字游戏(下)------------以及cookie使用的不安全之处
1.通过cookie可以解决上篇中多个用户对数据的修改,每个COOKIE保存不同用户的数据 <?php if(empty($_COOKIE['num'])||empty($_GET['num'] ...
- Java完成简单猜数字游戏v2.0
猜数字游戏v2.0 优化了获取随机数.输入数据超出边界值的代码,并增加了异常处理,能够在玩家输入错误数据错误时给出可靠指引,希望对和我一样的新人有帮助, 最后希望有大神愿意帮我解决代码优化的问题,谢谢 ...
- 【原创Android游戏】--猜数字游戏Version 0.1
想当年高中时经常和小伙伴在纸上或者黑板上或者学习机上玩猜数字的游戏,在当年那个手机等娱乐设备在我们那还不是很普遍的时候是很好的一个消遣的游戏,去年的时候便写了一个Android版的猜数字游戏,只是当时 ...
- 用MFC完成一个简单的猜数字游戏: 输入的四位数中,位置和数字都正确为A,数字相同而位置不同的为B。
最近学习了MFC一些比较基础的知识,所以打算通过做一个简单的数字游戏来理解MFC的流程并进一步熟悉其操作. 在这里,我做了一个猜数字的小游戏.第一步当然是设计主界面,先给大家展示一下游戏界面: 主界面 ...
- 【python小练习】简单的猜数字游戏
简单的猜数字游戏 前两天在论坛回答问题时候,看到一个猜数字的游戏,就在原来的基础上改了一下,玩一玩. 此程序,数字范围和尝试次数是事先设定好的,当然可以通过代码修改.经过测试,由于难度过大,我在其中加 ...
- 实验三 Java猜数字游戏开发
课程:Java实验 班级:201352 姓名:程涵 学号:20135210 成绩: 指导教师:娄佳鹏 实验日期:15.06.03 实验密级: ...
- Java初学者作业——实现控制台的猜数字游戏。游戏运行时产生一个1~100之间的随机数字
返回本章节 返回作业目录 需求说明: (1)实现控制台的猜数字游戏.游戏运行时产生一个1-100之间的随机数字 (2)要求用户从控制台输入数字,若输入的数字比随机数小,则输出"太小了,再大一 ...
- JavaScript一个猜数字游戏
效果图: 代码: <body> <script type="text/javascript"> window.onload = newgame; //页面载 ...
- 猜数字游戏 在控制台运行--java详解!了;来玩
import java.util.Scanner;//导入包 import java.util.Scanner; 注意格式 符号的使用 public class Demo{ //猜数字游戏 练习 pu ...
随机推荐
- 扒一扒开源世界有哪些licenses?
摘要:license,中文译为“许可证”.在开源世界里,license是具有法律效力的,通过选择相应的license,版权拥有者可以声称自己相应的权利,包括其他人使用.修改.引用.共享等一系列涉及版权 ...
- Windows & RabbitMQ:安装
可以参考:在 Windows 上安装Rabbit MQ 指南 本文RabbitMQ版本为3.6.1 Step 1:安装Erlang Step 2:安装RabbitMQ Step 3:启用Managem ...
- Ftp、Ftps与Sftp之间的区别
Ftp FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Applica ...
- 【数学建模】day08-数理统计III
2. 回归分析 回归分析与曲线拟合区分. 曲线拟合是,根据得到的若干有关变量的一组数据,寻找因变量与(一个或几个)自变量之间的一个函数,使这个函数对那组数据拟合得好.通常,函数的形式可以由经验.先验知 ...
- .net core 2.0 MVC区域
区域 创建对应的目录结构 Areas System Controllers Views 在Startup.cs 注册路由 在控制器上方加上`[Area("system")]` // ...
- windows新增/修改/删除系统环境变量bat示例,一键配置JAVA_HOME
setx JAVA_HOME "C:\Program Files\java\jdk1.6.0_27" /m setx classpath = ".;%JAVA_HOME% ...
- POJ 3580-SuperMemo-splay树
很完整的splay操作.做了这题就可以当板子用了. #include <cstdio> #include <algorithm> #include <cstring> ...
- HDU4292-Food-网络流
裸网络流题. #include <cstdio> #include <algorithm> #include <cstring> #include <queu ...
- BZOJ 4196 软件包管理器
树链剖分 建树之后,安装软件就是让跟节点到安装的节点路径所有点权+1,卸载软件就是让一个节点和他的子数-1 要求变化数量的话直接求和相减就行啦(绝对值) 注意一点,一开始的lazyatag应该是-1, ...
- 使用python和selenium写一个百度搜索的case
今天练习的内容主要写了一个小功能,在百度上搜索某词汇,然后实现web上的back功能 代码如下: import unittest from selenium import webdriver from ...