简体   繁体   中英

How to redirect users based on random URL string?

For security purposes, I need to only display a page to users if they are coming from a specific site, and not direct visitors.

The way I currently have it set up, there will be a random 12-character string generated and appended to the url. For example:

http://www.example.com?skey=a72bzy321bgf

The skey parameter will always be random, but always have 12 characters. So basically, if my URL has a &key= parameter with 12 random characters, the page is displayed correctly. If not, the visitors go somewhere else.

Any help in regards to how to code this into the page, or what I should Google to find the necessary instructions? I have looked all over and haven't found how to go on about this, nor do I really know exactly what to look for. So any help would be greatly appreciated.

Thanks!

You can get key for URL and then check in your function as it is valid on starting of your page

$key = trim($_GET['key']);

if(!isValidKey($key)){
  //die('Invalid Key'); //or
  header("Location: wrongkey.html");
  exit;
}

Request the value of skey and find the length of the value.If the length is not equal to 12 then use die() to prevent the user see the page.Use as follows in the destination page.( http://www.example.com/index.php?skey=a72bzy321bgf )

<?php 
    if(!isset($_REQUEST['skey']) || strlen($_REQUEST['skey']) != 12){
        die("Soory,You came to this page in a Wrong Way.");
    }
?>
//Your Code will goes here.

You need to check if $_GET['skey'] isset() , and if the string length is 12 characters.

if (isset ($_GET['skey']) && strlen($_GET['skey']) == 12) {
    // Get in
}
else {
    // Go away
}

This is of course not the correct way to check where the user came from, as your referer URL will need to have the skey set as part of the URL somehow.

Can you instead check if your $_SERVER['HTTP_REFERER'] isset() ?

Thanks everyone!

Based on all your suggestions, I combined some things and this is working perfectly for me so far:

<?php 
if(!isset($_REQUEST['skey']) || strlen($_REQUEST['skey']) != 12){
     header("Location: http://example.org/not-allowed.php");
     exit;
}
?>

Thanks! Wish I could upvote all your replies. Hope this helps others.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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