簡體   English   中英

通過輸入URL阻止直接訪問網頁

[英]Prevent direct access to a webpage by typing the URL

因此,我在goDaddy上托管了我的網站(我們的電話為abc.com )。

我有一個登錄頁面( abc.com/login.html )。

驗證登錄憑據后,將轉到第二個頁面,稱為預訂( abc.com/booking.html )。

因此,我不希望人們能夠輸入abc.com/booking.html並進行訪問。 我希望他們去abc.com/login.html ,然后去abc.com/booking.html

所以我遇到了2種解決方法-

  1. 在booking.html中包含一個可驗證的PHP腳本,並將擴展名從html更改為phtml。 ->這對我不起作用
  2. 包括一個.htacess文件。 ->我不太確定該怎么做

因此您的登錄屏幕上應該已經實現了會話代碼,該會話代碼具有一個變量,該變量指定用戶是否登錄。 如果尚未實現,則代碼將類似於:

<?php session_start();//at the very top of the page
?>
//... your own code
//if the user successfully logs in then:
$_SESSION['authenticated']=true;

然后在booking.php頁面上(應該是允許使用php腳本的php,這對於驗證用戶是否登錄非常重要),然后您將檢查用戶是否已登錄。如果已登錄,頁面的其余部分加載,如果他沒有加載,則將它們重定向到login.php:

在booking.php的最上方:

<?php session_start();
if (!isset($_SESSION['authenticated']))
{
    //if the value was not set, you redirect the user to your login page
    header('Location https://www.example.com/login.php');
    exit;
}
else
{
   //if the user did login, then you load the page normally
}
  1. 使用$ _SESSION或
  2. 將變量從login.php傳遞到booking.php。 然后根據使用$ _POST方法傳遞的變量對每個用戶進行身份驗證。

例如。

if (!isset($_POST['auth'])) {
 // redirect user back to login page
} else {
 // successful login
}

你可以像

重命名您要進行身份驗證的所有頁面的擴展名

例如

login.html >> login.php
booking.html >> booking.php
booking-suceess.html >> booking-success.php

使用以下代碼創建一個腳本即auth.php

<?php
session_start();
if(!isset($_SESSION['username'])){
    header("location:login.php");
}
?>

login.php中添加會話

$_SESSION['username'] = $_POST['username'];

現在,您可以在要強制登錄的任何php頁面中添加auth.php ,如下所示:

include ('auth.php');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM