.php和.html只能通过“服务器”打开


.php and .html openable only by "server"

我有一个索引.php页面,我有一个菜单:这个菜单是不同的,取决于我是否被记录。到目前为止,我已经创建了两个文件 html:"logged-menu-html"和"not-logged-menu.html",然后在索引中.php我用 php 写了这样的东西:
"如果(已记录)包含(已记录菜单.html),则包括(未登录菜单.html)"

第一个问题(我只是库里乌斯)。这种方式是否正确加载正确的菜单?还是必须避免?

现在,'回合我真正的问题:我希望这两个文件.html"私有"的,这意味着如果不是槽索引,它们就无法加载.php!到目前为止,我只有一个解决方案:当我通过FileZilla连接到我的服务器(它来自我的大学)时,我有一个文件夹public_html我必须在其中放置我想要在线可用的文件。
我找到的解决方案是创建一个同级文件夹来public_html:这样我就不能使用符号"../privatefile/*.html"(如果 index.php 在 public_html 中),但用户无法访问该文件夹。这个解决方案可以吗?还是必须避免?:)

谢谢!

如果您

使用的是 Apache - 版本 2.4(因为这是我当前使用的)

认证

您可以在任何人访问您的页面之前设置登录名。

转到 Apache 文件夹> bin> htpasswd - 从终端打开 htpasswd

如果这是您第一次创建密码文件:

htpasswd -c /dir username

然后输入用户的密码。

否则,如果您之前创建过密码文件,只需删除-c标志即可。

然后,在.htaccess文件上,键入以下内容:

AuthType Basic #Type of authentication used
AuthName "This is a private area, please Log In!" #Your Login Text
AuthUserFile "C:'Apache24'Password.txt" #In which your password file is stored.
AuthGroupFile /dev/null
require valid-user

或者,如果您想在httpd.conf上执行此操作:

<Location "/protected-area"> 
AuthUserFile "C:'Apache24'Password.txt" 
AuthName "This is a private area, please Log In!" 
AuthGroupFile /dev/null 
AuthType Basic 
Require valid-user 
</Location> 

现在,如果有人访问您的页面,系统将提示他们登录。

登录

您可以设置登录页面以允许有效用户访问。

这与"身份验证"不同,因为在这种情况下,您将创建"登录.php"之类的文件

首先,将DirectoryIndex设置为 Login.php ,或为登录页面设置的任何文件名。

然后,创建您的登录页面。

<form> 中,将 action 属性设置为:

<?php echo htmlspecialchars($_SERVER[PHP_SELF]); ?>

<head>部分中的 php:

<?php
$err = '';
if (isset($_POST['login']) && !empty($_POST['username']) && !empty($_POST['password'])) {
  if ($_POST['username'] == 'user' && $_POST['password'] == '123456') {
    $_SESSION['valid'] = true;
    $_SESSION['timeout'] = time();
    $_SESSION['username'] = 'user';
    header('Location: Welcome.php');
  } else {
    $err = 'Wrong username or password';
  }
}
?>

welcome.php

要防止用户在未登录的情况下访问"欢迎.php",请执行以下操作:

<?php
if(isset($_SESSION['valid']) && $_SESSION['valid'] == true) {
  echo "You are logged in!";
} else {
  header("Location: Login.php");
}
?>

拒绝访问

我不确定这个...

<Directory  ~ "'.private">
Order allow,deny
Deny from all
</Directory>

重写规则

RewriteRule ^(.*/)?''.private/ - [F,L]

重定向

RedirectMatch 404 /''.private(/|$)