繁体   English   中英

PHP中重定向页面中的授权控制

[英]Authorization control in redirected page in php

我有一个简单的控制器,其中显示要批准的确认。当用户按下注册按钮时,将显示确认页面。

但是,如果用户在未注册的情况下将URL输入为.... / confirmation,则会显示该页面。 我不希望不注册就显示它。

在asp.net mvc4中,可以使用ChildActionOnly注释来完成。

可能吗?

首先确保您已开始会话:

<?php session_start(); ?>

好的,这似乎很简单-在注册之后,以及在将用户重定向到确认页面之前,请执行以下操作(这自然是伪代码 )。 假设$ user-> registered()作为注册结果返回TRUE / FALSE,而$ user-> hasConfirmedRegistration()作为注册确认结果返回TRUE / FALSE。 因此,您应该执行以下操作:

//this should be in your registration controller/function, i.e. /users/register
if ($user->registered()) {
   $_SESSION['showConfirmation'] = TRUE;
}

然后,应将其放在功能的开头,以防止向未注册用户显示确认页面。

//This should be in your confirmation controller/function, 
//i.e. /users/confirm_registration:

//if user has not registered, do not show the page
if (! $_SESSION['showConfirmation']) {
   header('Location: /'); // redirect to main page
   return;
}

// -- enter code that handles storing confirmation, handling $_GET/$_POST etc. --

//then unset session variable, which is no longer needed
if ($user->hasConfirmedRegistration()) {
   unset($_SESSION['showConfirmation']);
}

我没有完全看到您的代码就无法完全理解您要实现的目标。 但这听起来好像您不希望某人无需先执行操作即可访问特定页面。

这样的事情可能会帮助您。

<?php
session_start();
if(!session_is_registered(somesessionamehere)){
header("location:form.php");
}
?>

当用户提交表单时注册会话,然后当他们转到该页面时,它将检查会话是否已注册。 如果不是,则重定向到上一页。

查看此URL,以获取基于登录的示例: http : //www.phpeasystep.com/phptu/6.html

据我了解,您需要在确认页面上检查用户是否刚刚发送了注册数据。

例如,如果您的表单中有一个名为“ login”的输入字段,则可以根据表单的“ method”属性来检查$_REQUEST$_POST$_GET中“ login”的存在和值。 如果不存在,则该表单尚未发布,您可以假定用户只是输入URL。 您可以将他重定向到登录页面。

<form method="post" action="/confirmation">
    <input type="text" name="login" />
    [...]
    <input type="submit" />
</form>
<?php
if (!isset($_POST["login"])) {
    // redirect
    header("HTTP/1.0 302 Found");
    header("Location: /login");

    return;
}

// show confirmation
// [...]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM