允许仅从另一个.php文件访问.php文件,而不是直接访问url

时间:2013-08-14 16:18:36

标签: php apache http

我的本​​地服务器中有两个文件存放在一个文件夹login.php和update.php中。只要输入以下内容,就可以从任何位置访问这两个文件:

ip:port/folder/login.php

ip:port/folder/update.php.

我要做的是阻止用户在网址中输入 update.php ,并且只允许他们通过以下方式访问 update.php 文件首先进入 login.php login.php ,按下按钮时将其重定向到 update.php 。)

我是php和apache的新手。我不确定这是应该在PHP或.htaccess文件中完成的。

先谢谢!

4 个答案:

答案 0 :(得分:2)

您可以使用$_SESSION

// Let's say this is you update.php
session_start();

if (isset($_SESSION['email']) /* or something like that */)
{                     
    session_unset();
    session_destroy();
    header("Location: login.php");
    exit();
}

// do whateven you need to do and set up $_SESSION variables 
// for example get the user entered info here

// This is how you set session variables
$_SESSION['username'] = ...;
$_SESSION['email']    = ...;

// Then after you did the registration part or something else you wanted to do
// You can redirect the user to any page you want
header("Location: some_other_page.php");

每当用户尝试立即进入update.php时,他或她将在注册后重定向到登录,因为会话不存在。

希望这会有所帮助。

答案 1 :(得分:0)

用户有时只能访问的URL是不可能的。

如果你想要一个登录系统,那就做别人做的事情:

  1. 在登录时设置识别cookie
  2. 当用户访问受限页面时:
    1. 测试您已识别出来
    2. 测试所识别的用户是否有权查看该页面
    3. 如果前两个条件中的任何一个失败,则将它们重定向到登录页面或给他们一个未经授权的回复

答案 2 :(得分:0)

您可以检查引荐网址。您还可以创建用户会话,以便用户访问更新时。 php,变量已经过验证。会话变量可以在登录时设置为正确的值。 PHP的。

会话允许您存储人们在您网站上从一个页面到另一个页面的变量。

答案 3 :(得分:0)

执行此操作的一个好方法是使用readfile

<?php
// This is the path to your PDF files. This shouldn't be accessable from your
// webserver - if it is, people can download them without logging in
$path_to_pdf_files = "/path/to/pdf/files";

session_start();

// Check they are logged in. If they aren't, stop right there.
if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] != true) {
    die("You are not logged in!");
}

// Get the PDF they have requested. This will only allow files ending in 'pdf'
// to be downloaded.
$pdf_file = basename($_GET['file'], ".pdf") . ".pdf";

$pdf_location = "$path_to_pdf_files/$pdf_file";

// Check the file exists. If it doesn't, exit.
if (!file_exists($pdf_location)) {
    die("The file you requested could not be found.");
}

// Set headers so the browser believes it's downloading a PDF file
header("Content-type: application/pdf");
header("Content-Disposition: inline; filename=$pdf_file");
$filesize = filesize($pdf_location);
header("Content-Length: $filesize");

// Read the file and output it to the browser
readfile($pdf_location);

?>

这取自wildeeo-ga对谷歌答案的回答。