.php和.html只能通过" server"

时间:2016-04-27 07:18:56

标签: php html authorization

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

第一个问题(我只是curius)..加载正确的菜单是否正确?或者必须避免?

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

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您正在使用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> 

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

登录

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

  

这与&#34; Auth&#34;不同,因为在这种情况下,您将创建像&#34; Login.php&#34;

这样的文件

首先,将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

  

阻止用户访问&#34; Welcome.php&#34;没有登录:

<?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(/|$)