我有一个索引.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(/|$)