Shams schrieb:
> Hi,
> 
> i've written a secure PHP login script which will allow users to login to a
> directory such as this:
> 
> smezone.com/members/index.php
> 
> however, how do I restrict people from accessing HTML files in that
> directory (which they can easily do so by typing the URL into their
> browser), such as:
> 
> smezone.com/members/document1.html
> 
> ?
> 
> Since its a regular HTML files (and we have lots), I can't check whether the
> user has a valid session as I would do in a PHP file.
> 

if you are using linux & apache ... just use a .htaccess file like the one below

AuthUserFile /usr/home/.htpasswd
AuthName "Secret Area"
AuthType Basic
<FilesMatch "\.(gif|jpe?g|png|htm|html)$">
  require valid-user
</FilesMatch>

with this you restrict access only to users listet in the /usr/home/.htpasswd
files which look like

user1:668c1d6Hc6yCg
test:85FRBo8cHrAZc

the code after ":" is a MD5 key
the FilesMatch mean that all files ending with .gif,.html,.. is restricted and
.php is not.

in a php file you now can read the authentications from a user and compare it
with the /usr/home/.htpasswd entrys.

<?php
  ...
  if (!isset($PHP_AUTH_USER)) {
    // $PHP_AUTH_USER is empty ... no login
    header('WWW-Authenticate: Basic realm="My Private Stuff"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Authorization Required.';
    exit;
  }
  // If not empty, check authentication ...
  else {
    if ($PHP_AUTH_USER==$username && $PHP_AUTH_PW==$mypasswd) {
      echo "<P>Your Login is OK";
?>
...
<?php
    } else {
      echo "<P>wrong login !";
    }
  }
?>

note that the the /usr/home/.htpasswd file must include all usernames and
passwords as MD5. You can create a line of this file with:

<?php
  echo "$username:".md5($mypasswd);
?>

maybe you also can use "mod_auth_db" ... but this is apache specific so
take a look at http://httpd.apache.org/docs/mod/core.html



-- 
 @  Goetz Lohmann, Germany   |   Web-Developer & Sys-Admin
\/  ------------------------------------------------------
()  He's the fellow that people wonder what he does and
||  why the company needs him, until he goes on vacation.


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to