猜数字案例

一、方案一:使用post方法(基本版)

<?php
    if($_SERVER['REQUEST_METHOD']==='GET'){
        //登录网站时,采用的是get的方法
        $num=rand(0,100);
        //不能存在文件中,因为有可能有多个用户使用
        //cookie是每个用户自己本地客户端保存的,每个用户存的都是自己要猜的数字
        setcookie('num',$num);
    }else{
        //用户点击了试一试,采用的是POST的方法
        //$_POST['num']是用户试一试的数字,$_COOKIE['num']是用户要猜的数字
        $result=(int)$_POST['num']-(int)$_COOKIE['num'];
        if($result==0){
            echo '猜对了';
        }elseif($result>0){
            echo '太大了';
        }else{
            echo '太小了';
        }
    }
?>
<!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>
    <!-- post方法 -->
    <form action="test.php" method="POST">
        <input type="number" min="0" max="100" name="num" placeholder="随便猜">
        <button type="submit">试一试</button>
    </form>
</body>
</html>

二、方案二:使用get方法(完善版)

  • 基本概念的实现
  • 解决10次限制的问题
  • session解决F12可以查看密码的“漏洞”
<?php
    //开启session
    session_start();
    if(empty($_COOKIE['num'])){
        //登录网站时,产生随机数
        $num=rand(0,100);
        //setcookie('num',$num);
        $_SESSION['num']=$num;
    }else{
        //设置次数限制
        $count=empty($_SESSION['count'])? 0 : (int)$_SESSION['count'];
        if($_COOKIE['count']<10){
            $result=(int)$_GET['num']-(int)$_SESSION['num'];
            if($result==0){
                $message= '猜对了';
                //游戏结束,出现开始,删除cookie(一个参数)
                unset($_SESSION['num']);
                unset($_SESSION['count']);
            }elseif($result>0){
                $message= '太大了';
            }else{
                $message= '太小了';
            }
            $_SESSION['count']=$count+1;
        }else{
            //游戏结束
            $message= '游戏结束';
            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>
    <?php if(isset($message)): ?>
        <p><?php echo $message; ?></p>
    <?php endif ?>
    <!-- GET方法 -->
    <form action="test.php" method="GET">
        <input type="number" min="0" max="100" name="num" placeholder="随便猜">
        <button type="submit">试一试</button>
    </form>
</body>
</html>

猜你喜欢

转载自www.cnblogs.com/EricZLin/p/9216892.html