吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 303|回复: 17
收起左侧

[其他求助] php代码出错求解

[复制链接]
吾爱老司机250 发表于 2023-8-26 16:07
200吾爱币
想给网站首页加一个访问验证码,不会写代码,都是百度拼接的
[PHP] 纯文本查看 复制代码
<?php
$password = "1234"; 
$p = "";
if(isset($_COOKIE["isview"]) and $_COOKIE["isview"] == $password){
$isview = true;
}else{
if(isset($_POST["pwd"])){
if($_POST["pwd"] == $password){
setcookie("isview",$_POST["pwd"],time()+60*3);
$isview = true;
}else{
$p = (empty($_POST["pwd"])) ? "需要密码才能查看,请输入密码。" : "密码不正确,请重新输入。";
}
}else{
$isview = false;
$p = "请输入密码查看";
}
}
if($isview){ ?>

网站首页内容
  
<?php }else{ ?>

    <h1>请输入验证码</h1>  
	<form action="?yes" method="post">
    <input type="password" name="pwd" placeholder="验证码是<?php echo $password; ?>">  
    <input type="submit" class="submit-button"value="确定" />  
	</form> 

<?php } ?>

;

上面的代码可以正常运行,但是我想设置随机四位数验证码,改成$password = rand(1000, 9999);或者$password = sprintf("%04d", mt_rand(0, 9999)); 都会出错,提示未定义变量: isview,改回固定数值又能正常访问。
求大神帮忙解决

最佳答案

查看完整内容

4位随机验证码,输入正确时进入网站首页。输入错误时提示错误。 每次输入的验证码有效期为3分钟。其中setcookie("isview", "true", time() + 60 * 3); 是isview状态的过期时间,可以自己改成需要的。

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zzzh 发表于 2023-8-26 16:07
4位随机验证码,输入正确时进入网站首页。输入错误时提示错误。 每次输入的验证码有效期为3分钟。其中setcookie("isview", "true", time() + 60 * 3); 是isview状态的过期时间,可以自己改成需要的。
[Asm] 纯文本查看 复制代码
<?php
function generateRandomCode($length = 4) {
    $characters = '0123456789';
    $code = '';
    for ($i = 0; $i < $length; $i++) {
        $code .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $code;
}

$p = "";

// 提交表单时的处理
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_POST["pwd"])) {
        $password = $_COOKIE["password"];
        if ($_POST["pwd"] == $password) {
            setcookie("isview", "true", time() + 60 * 3);
            header("Location: " . $_SERVER['PHP_SELF']);
            exit;
        } else {
            $p = "密码不正确,请重新输入。";
        }
    }
}

// 检查是否已输入正确密码
$isview = isset($_COOKIE["isview"]) && $_COOKIE["isview"] == "true";

if (!$isview) {
    $password = generateRandomCode();  // 生成一个新的验证码
    setcookie("password", $password);
}

if ($isview) {
    echo "网站首页内容";
} else {
    echo "<h1>请输入验证码</h1>";
    echo '<form action="" method="post">';
    echo '<input type="password" name="pwd" placeholder="验证码是 ' . $password . '">';
    echo '<input type="submit" class="submit-button" value="确定" />';
    echo '</form>';
    if ($p) {
        echo '<p>' . $p . '</p>';
    }
}
?>
zhang120300 发表于 2023-8-26 16:41
[PHP] 纯文本查看 复制代码
<?php
$password = sprintf("%04d", mt_rand(1000, 9999)); // Generate a random four-digit password
$p = "";

if (isset($_COOKIE["isview"]) && $_COOKIE["isview"] == $password) {
    $isview = true;
} else {
    if (isset($_POST["pwd"])) {
        if ($_POST["pwd"] == $password) {
            setcookie("isview", $_POST["pwd"], time() + 60 * 3);
            $isview = true;
        } else {
            $p = (empty($_POST["pwd"])) ? "需要密码才能查看,请输入密码。" : "密码不正确,请重新输入。";
        }
    } else {
        $isview = false;
        $p = "请输入密码查看";
    }
}

if ($isview) {
    // Website content
} else {
    echo "<h1>请输入验证码</h1>";
    echo '<form action="?yes" method="post">';
    echo '<input type="password" name="pwd" placeholder="验证码是' . $password . '">';
    echo '<input type="submit" class="submit-button" value="确定" />';
    echo '</form>';
}
?>
PHP的我也是小白 你可以参考下。
hrh123 发表于 2023-8-26 16:48
因为没有指定cookie有效期吧,可以试试在生成随机数后将其存储到session而不是cookie中
皮卡丘2000 发表于 2023-8-26 16:51
[PHP] 纯文本查看 复制代码
<?php
$password = sprintf("%04d", mt_rand(0, 9999));
$p = "";
$isview = false;

if (isset($_COOKIE["isview"]) and $_COOKIE["isview"] == $password) {
    $isview = true;
} else {
    if (isset($_POST["pwd"])) {
        if ($_POST["pwd"] == $password) {
            setcookie("isview", $_POST["pwd"], time()+60*3);
            $isview = true;
        } else {
            $p = (empty($_POST["pwd"])) ? "需要密码才能查看,请输入密码。" : "密码不正确,请重新输入。";
        }
    } else {
        $p = "请输入密码查看";
    }
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>网站首页</title>
</head>
<body>
<?php if ($isview) { ?>
    <h1>网站首页内容</h1>
<?php } else { ?>
    <h1>请输入验证码</h1>
    <form action="?yes" method="post">
        <input type="password" name="pwd" placeholder="验证码是<?php echo $password; ?>">
        <input type="submit" class="submit-button" value="确定" />
    </form>
<?php } ?>
</body>
</html>

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
吾爱老司机250 + 1 + 1 谢谢@Thanks!

查看全部评分

winjeak 发表于 2023-8-26 17:08
[PHP] 纯文本查看 复制代码
<?php
$password = "1234"; 
$isview = false;
$message = "请输入密码查看";

if(isset($_COOKIE["isview"]) && $_COOKIE["isview"] == $password) {
    $isview = true;
} elseif(isset($_POST["pwd"])) {
    if($_POST["pwd"] == $password) {
        setcookie("isview", $_POST["pwd"], time() + 60*3);
        $isview = true;
    } else {
        $message = empty($_POST["pwd"]) ? "需要密码才能查看,请输入密码。" : "密码不正确,请重新输入。";
    }
}

if($isview): ?>
    网站首页内容
<?php else: ?>
    <h1>请输入验证码</h1>  
    <form action="?yes" method="post">
        <input type="password" name="pwd" placeholder="验证码是<?php echo $password; ?>">  
        <input type="submit" class="submit-button" value="确定" />  
    </form> 
    <p><?php echo $message; ?></p>
<?php endif; ?>

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
吾爱老司机250 + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| 吾爱老司机250 发表于 2023-8-26 17:19
zhang120300 发表于 2023-8-26 16:41
PHP的我也是小白 你可以参考下。

还是出错
 楼主| 吾爱老司机250 发表于 2023-8-26 17:20

输入验证码后没有显示首页内容 一直在输入界面
 楼主| 吾爱老司机250 发表于 2023-8-26 17:28
winjeak 发表于 2023-8-26 17:08
[mw_shl_code=php,true]
    网站首页内容

我想要随机四位数密码,我用你这个结合其他回答改了一下,输入密码后没有显示首页内容,还是停留在输入界面,密码刷新了一下,搞不懂什么原因,可能是网站源码的问题
 楼主| 吾爱老司机250 发表于 2023-8-26 17:32
hrh123 发表于 2023-8-26 16:48
因为没有指定cookie有效期吧,可以试试在生成随机数后将其存储到session而不是cookie中

不会改 我都是用百度和AI写的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-29 09:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表