如果不满足条件,则阻止用户查看页面

时间:2015-04-22 13:03:33

标签: php

如果有人回答,但是我无法找到我的问题的明确答案。

假设我有2个页面,名为fruit.phpsalad.php

当用户在fruit.php的字段中输入数据时,他将被定向到salad.php但是没有什么能阻止用户在他的浏览器中输入salad.php,这将打开第二页并给出错误的结果,因为他的第1页数据fruit.php尚未输入。

知道如何在fruit.php完成之前阻止用户访问salad.php吗?

6 个答案:

答案 0 :(得分:1)

让我们说fruit.php会像get一样发送数据

salad.php&donut=yummy

您想要的是,当您加载salad.php时,验证是否已发送甜甜圈。您需要使用isset()来实现此目的。 (请注意,这也适用于$_POST,但为了示例,我将坚持使用$_GET

if (isset($_GET['donut'))
//Good, your script has been called from fruit.php 
else 
//Nope ! He tried to type the adress in the browser ! Let's serve him an empty page here.

首先,这应该可以解决问题,之后我建议先查看$_POST而不是$_GET,然后再查看$_session。 你有它。

答案 1 :(得分:1)

在这种情况下你可以这样做: 由于用户需要在第一页输入一些值,所以(表格)将在那里出现,让我们说出这一个:

fruit.php

<form name="fruit" id="fruit" action="salad.php" method="POST">
First component: <input type="text" name="component1">
Second component: <input type="text" name="component2">
<input type="submit" value="check">
</form>

现在是第二页:

salad.php

<?php
//first thing first, we're going to check whether the user
//is being redirected by the form by doing something like
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
//do something
} else {
//this thing will redirect the user to the former page in case no form was applied
header('Location: fruit.php') or die('Unexpected error');
}
?>

我希望这会对你有所帮助,有很多方法,你总是建议在处理任何数据之前检查(空(字段))以避免不愉快的结果

答案 2 :(得分:0)

你应该写一个salad.php,它只接受POST请求,如果有GET请求,将它重定向到fruit.php

答案 3 :(得分:0)

位于salad.php的顶部:

if(($_SESSION['HTTP_REFERER'] !="http://domain.ext/dir/fruit.php") || (!isset($_POST['essentialFormVar1From_fruit.php'])) || ...){
  header('location: http://domain.ext/dir/fruit.php');
};
else{
  ...
  //render page
  ...
}

答案 4 :(得分:0)

如果您通过POST传递值,您可以在“salad.php”页面中验证:

if(!isset($_POST['myVariable'])) {
    header('Location: fruit.php');
    exit;
}

... continue my salad page ...

如果您正在使用GET,只需将$ _POST更改为$ _GET。

答案 5 :(得分:0)

您可以在salad.php中添加检查请求中是否发送了正确的数据:

if($_POST['fieldname'] == ''){
  echo 'you enterd the page wrong. Please go back to the <a href="...">Form</a> and enter the data needed';
}else{
  // normal page content here.
}

因此,观众只有在提交了拟合请求时才能获得该页面。