允许表单转到页面但禁止基于URL访问

时间:2011-08-10 22:09:18

标签: php

晚上筹码会员,

我没有相关的经验,所以这可能是一个完全愚蠢的想法。

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

在每个表单上我们都有帖子到下一页,然后我们有php代码从上一页收集信息并填写下一页 - 我们在第二页上依赖第一页的代码位如果被填补,他们就会留空。

我们想知道的是..如果有人去了page2.php它重定向到page1.php或者只是说访问被拒绝但是如果我们的表单发布了信息,我们可以通过网络拒绝请求第2页

我很抱歉,如果这是非常混乱,我同意如果你评价我,但我只是一个初学者,并试图为自己解决这个问题,我理解你很多人都知识渊博,并会感激任何所有信息

由于

所以基本上要回顾一下

第1页>用户信息>传递>使page2.php

用户尝试将page2.php输入其浏览器网址窗口>>否认>>重定向

4 个答案:

答案 0 :(得分:2)

第1页的

在表单中添加了隐藏值

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

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

答案 1 :(得分: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

答案 2 :(得分:1)

您可以检查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

答案 3 :(得分:0)

是的,确实如此。您只需要存储一个变量(可能在当前的$session用户数组中,或者存储在相对数据库表/文件中/无论它是什么)作为该表单进程的当前$index的标志。