PHP-如果访问者在过去x秒内没有访问过1.PHP,则拒绝访问2.PHP

PHP-如果访问者在过去x秒内没有访问过1.PHP,则拒绝访问2.PHP,php,html,Php,Html,我知道我应该包括“一些知识”在这方面,但老实说,我非常坚持这一点。我甚至不知道从哪里开始 要停止垃圾邮件,我可以在index.php上添加谷歌验证码,但用户只需访问example.com/code\u execute.php,仍然会创建一个空白粘贴页面 我需要它,这样如果用户进入code\u execute.php在x秒内没有访问index.php(可能是在变量中定义的),他们就会被重定向回索引 有人能给我指出正确的方向吗?我是PHP新手,只懂一点简单的HTML和CSS。足以让网站正常运行 提前

我知道我应该包括“一些知识”在这方面,但老实说,我非常坚持这一点。我甚至不知道从哪里开始

要停止
垃圾邮件
,我可以在
index.php
上添加
谷歌验证码
,但用户只需访问
example.com/code\u execute.php
,仍然会创建一个空白粘贴页面

我需要它,这样如果用户进入
code\u execute.php
在x秒内没有访问
index.php
(可能是在变量中定义的),他们就会被重定向回索引

有人能给我指出正确的方向吗?我是PHP新手,只懂一点简单的HTML和CSS。足以让网站正常运行

提前感谢!:)

  • 您可以使用会话变量<代码>会话缓存过期(5);会话_start();会话['set']='something'
  • 您可以使用默认的
    $\u服务器['HTTP\u REFERER']
    检查页面的访问源url
  • 您提到允许用户在特定时间后访问2.php,您可以将会话设置为访问1.php时的某个时间,然后使用
    $maxlifest=ini_get(“session.gc_maxlifest”)检查用户访问2.php的时间
  • 编辑: 示例:2.php中

    <?php
    // This is to check if the request is coming from a specific URL
    $ref = $_SERVER['HTTP_REFERER'];
    
    if($ref !== 'http://example.com/1.php') {
      header('Location: 1.php');
       //Alternates as necessary
      // header('Location: /directory/1.php');
     //header('Location: http://example.com/1.php');
      exit;
    }
    
    //Your code if from 1.php
    ?>
    
    
    
    当他们完成验证码时,在index.php上设置会话变量,并在code_execute.php上验证会话变量

    举个例子

    index.php:

    <?php 
    session_start();
    
    $_SESSION['some_key'] = true;
    $_SESSION['when'] = time();
    
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Index</title>
    </head>
    <body>
        <h1>Index Page</h1>
        <center>
            <h3>Thank you for visiting us!!!</h3>
            <br><br><br><br>
            <a href="code_exec.php">Go to next page</a>
        </center>
    </body>
    </html>
    
    
    指数
    索引页
    谢谢你访问我们!!!
    



    code_exec.php:

    <?php 
    session_start();
    
    if (! isset($_SESSION['some_key'], $_SESSION['when']) 
    || ((time() - $_SESSION['when']) > 60)) { //redirect if more than 60 seconds have passed
    
        header('location:index.php');
        die();
    
    }
    
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Code Exec</title>
    </head>
    <body>
        <center>
            <h1>Code Exec Page</h1>
            <h3>Thank you for participating</h3>
            <h5>Now go away...</h5>
        </center>
    </body>
    </html>
    
    
    代码执行器
    代码执行页面
    感谢您的参与
    现在走开。。。
    
    本例在get请求上设置会话变量,这不是您想要的。只要他们请求
    index.php
    计时器就开始计数。
    您应该在他们提交验证码后设置会话变量

    并使用60秒以上,否则用户可能会感到恼火

    当他们完成验证码并在code_execute.phmm上验证会话变量时,在index.php上设置会话变量你能给我一个小例子吗?还是精心设计?谢谢你的回复。嗯,这对我来说还是很新鲜,所以我很难理解。如果$\u SERVER['HTTP\u REFERER']=example.com/index.php什么都不做,我将如何在2.php上添加类似的内容(请注意我糟糕的格式设置)。否则返回index.php--update--IT work!非常感谢你,乔希。我真的很感激。我必须包括}session_unset();会话_destroy();在模具零件之后,使其完全工作:D