【问题标题】:Allow Form to go to page but dis-allow url based access允许表单转到页面但不允许基于 url 的访问
【发布时间】:2011-08-11 06:20:24
【问题描述】:

大家晚上好,

我对我要问的那个问题没有经验,所以这可能是一个完全愚蠢的想法。

我们有几个不同的页面要求提供不同的信息

在每个表单上,我们都有到下一页的帖子,然后我们有 php 代码来收集前一页的信息并填写下一页 - 我们在第二页上有一些依赖于第一页的代码要填写,否则它们将保持空白。

我们想知道的是 .. 如果有人访问 page2.php,它会重定向到 page1.php,或者只是说访问被拒绝但允许访问,如果我们的表单将信息发布到第 2 页

如果这很混乱,我很抱歉,如果你给我打分,我同意,但我只是一个初学者,想自己解决这个问题,我知道你们中的很多人都很有知识,如果有任何帮助,我将不胜感激全部信息

谢谢

所以基本上回顾一下

第1页>用户填写信息>通过>page2.php

用户尝试在他们的浏览器 url 窗口中输入 page2.php >> 拒绝 >> 重定向

【问题讨论】:

    标签: php


    【解决方案1】:

    在第 1 页将隐藏值放入表单中,

    <input type="hidden" id="page" name="page" value="1" />
    

    在第 2 页

        if($_POST['page'] !='1'){
        header('Location: http://www.example.com/page1.php');
        exit();
        }
    

    【讨论】:

    • 仍然可以被机器人绕过。
    • 对我们来说无关紧要:),这不是为了保护任何东西,第二页上没有任何东西可供他们访问 - 基本上,第 2 页从第 1 页获取发布的字段并从其他获取一些图像网站基于他们从第 1 页开始的用户名,所以它所做的只是防止他们看到一个满是破损图像的页面 :) 但是谢谢你的注释 yoda 也谢谢你 Dagon 的回答——我还没有足够的代表来投票给你,但是谢谢
    【解决方案2】:

    你也可以使用sessions

    page1.php 顶部:

    <?php
    session_start();
    $_SESSION['last_page'] = 1;
    
    // your code
    

    page2.php 顶部:

    <?php
    session_start();
    if(! isset($_SESSION['last_page']) && $_SESSION['last_page'] == 1){
        header('Location: http://domain.com/page1.php');
        exit(0);
    }
    
    // if you have more pages increment the last_page count
    $_SESSION['last_page']++;
    
    // your code
    

    【讨论】:

      【解决方案3】:

      您可以检查 REQUEST_METHOD 变量以确保用户通过 POST 请求来到页面,就像这样

      if ($_SERVER['REQUEST_METHOD'] === 'POST')
      {
          //Your code goes here
      }
      

      或者,检查它们是否通过其他方法(例如 GET)来并相应地进行处理

      if ($_SERVER['REQUEST_METHOD'] != 'POST')
      {
          //send the user back to page one
          header('Location: page1.php');
      
          //don't allow the script to continue
          die('access denied!');
      }
      
      //Your code goes here
      

      【讨论】:

      • 仍然可以被机器人绕过。
      【解决方案4】:

      是的,是的。您只需要存储一个变量(可能在当前的$session 用户数组中,或者在相关的数据库表/文件/任何它发生的地方)作为该表单进程的当前$index 的标志。

      【讨论】:

        猜你喜欢
        • 2011-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-18
        • 1970-01-01
        • 1970-01-01
        • 2018-04-02
        • 1970-01-01
        相关资源
        最近更新 更多