session逻辑问题跟cookie也差不多的,所以这里只附上cookie的代码
效果图
逻辑
1、首先判断用户是否之前有登录过产生过随机数,如果有的话,就不再产生随机数。之后用户输入一个数字之后提交,后台判断是大还是小,然后输出对应的错误信息,太大了或者太小了,然后猜的cookie次数也++,放在用户的硬盘当中
html页面
<h1>猜数字游戏</h1>
<p>Hi,我已经准备了一个0~100的数字,你需要在仅有的10机会之内猜对它。</p>
<?php if (isset($message)): ?>
<p><?php echo $message; ?></p>
<?php endif ?>
<form action="session.php" method="get">
<input type="number" min="0" max="100" name="num" placeholder="随便猜">
<button type="submit">试一试</button>
</form>
php页面
1、判断之前是否生成过随机数或者用户有没有输入数字进行猜测
2、
C
O
O
K
I
E
【
′
′
】
取
出
对
应
的
值
3
、
_COOKIE【''】取出对应的值 3、
COOKIE【′′】取出对应的值3、_GET【’’】获得表单提交的数据
4、如果之前没有登录过,也就是cookie[‘num’]为空的话,那就随机生成一个数字并且给用户设置cookie,下次用户再次登录或者刷新的时候还是这个随机数,就不会再次生成
5、如果直接提交空白的话,那就是重新随机生成一个数,并且给用户设置cookie,下次用户再次登录或者刷新的时候还是这个随机数,就不会再次生成
<?php
if (empty($_COOKIE['num']) || empty($_GET['num'])) {
$num = rand(0, 100);
setcookie('num', $num);
} else {
// 用户来试一试 猜了一次
// 还是通过cookie记录之前输入的内容
//通过之前设置的cookie来判断用户是否猜过
$count = empty($_COOKIE['count']) ? 0 : (int)$_COOKIE['count'];
if ($count < 10) {
// 对比用户提交的数字和用户 Cookie 中存放的被猜的数字
// $_GET['num'] => 用户试一试的数字
// $_COOKIE['num'] => 被猜的数字
$result = (int)$_GET['num'] - (int)$_COOKIE['num'];
if ($result == 0) {
$message = '猜对了';
// 重新开始,删除cookie即可
setcookie('num');
setcookie('count');
} elseif ($result > 0) {
$message = '太大了';
} else {
$message = '太小了';
}
setcookie('count', $count + 1);
} else {
// 游戏结束
$message = 'looooooooooooow!';
setcookie('num');
setcookie('count');
}
}