如果用户直接在URL中输入页面名称,如何重定向页面

时间:2017-05-28 09:48:59

标签: javascript php html5 .htaccess url

如果用户在网址中输入了网页名称,我必须重定向页面。我有两个页面叫做index.php和shop.php

在index.php页面中有一个名为<a href="shop.php?function=add">Click here</a>的链接。如果我点击链接,那么页面正在shop.php正确重定向。

现在的问题是,如果有任何用户直接在URL上输入shop.php,那么该页面应该在index.php页面上重定向。这意味着用户将无法直接访问shop.php页面。

我不是在谈论header('location')

4 个答案:

答案 0 :(得分:1)

我想,你应该尝试类似的事情:

if(isset($_GET['function']) && $_GET['function'] == 'add') {
    // Show page contents
}
else {
    header('location: index.php');
}

答案 1 :(得分:0)

if(isset($_GET['function'])) {
    if($_GET['function'] == 'add'){
        // Show page if function is "add"
    }
    else {
      // "Function" is not "add", it can be anything else: "remove", "edit", etc.
    }
}
else {
    header('location: index.php');
    exit();
}

如果您不想使用header('location: index.php');,可以使用。

?>
<script type="text/javascript">
    window.location.href = 'index.php';
</script>
<?php

$URL = 'index.php';
echo '<script type="text/javascript">document.location.href="' . $URL . '";</script>';
echo '<meta http-equiv="refresh" content="0; url=' . $URL . '">';

答案 2 :(得分:0)

您应该尝试将随机字符串添加到会话

 <?php 
 session_start();
$random = bin2hex(random_bytes(32));
$_SESSION['random'] = $random;
 echo '<a href="shop.php?function=add&token='.$random.'">Click Here</a>';
?>

然后通过将此添加到top off shop.php

进行检查
if(!isset($_GET['token']) || $_GET['token'] != $_SESSION['random']){
header('Location : index.php');
}

这样,用户就无法直接访问该页面

答案 3 :(得分:0)

最后,我找到了解决方案。我不知道我的代码是否格式正确,但我的问题得到了解决。

我改变了这个

的链接
<a href="shop.php?function=add">Click here</a>
to
<a href="shop.php?function=add&p_id=1">Click here</a>

并在shop.php中添加以下代码

if ( !($_GET['function']='add' && $_GET['p_id'])){
    header("Location: index.php");// send to login page
   exit;
}

如果有什么不妥,请建议我。