De multe ori am avut nevoie sa rulez functia PHP phpinfo() ca sa aflu niste detalii legate de serverul web ce imi gazduieste fisierele. De aceea am facut o pagina phpinfo.php pe care o deschid oridecateori am nevoie sa aflu cate ceva despre setarile serverului.
<?php phpinfo(); ?>
Problema e ca accesul la continutul paginii nu este restrictionat. Oricine de pe intreg mapamond care are un PC conectat la Internet poate vedea continutul paginii mele. Ceea ce nu este prea indicat. Asadar, trebuie sa creez un sistem de autentificare care sa permita doar persoanelor autorizate sa vada continutul paginii. Acest sistem de autentificare este destul de simplu. Nu necesita un formular de login sau o baza de date. Ma folosesc doar de array-ul superglobal $_GET.
<?php
if ($_GET['pw'] != 'primavarapeinserate') {
echo 'You are NOT allowed to view this page.';
exit();
}
phpinfo();
?>
Ca sa pot accesa continutul paginii trebuie sa scriu URL-ul astfel: http://www.accesinterzis.ro/myportofolio/phpinfo.php?pw=primavarapeinserate.
Scriptul are doua mici dezavantaje:
Deci, trebuie sa rescriu scriptul. Sa il imbunatatesc.
<?php
/*
Titlu: Cum restrictionez accesul la continutul paginii mele web phpinfo.php?
Autor: Marian Barbu aka AccesInterzis
Website: http://www.accesinterzis.ro
2010 (c) Toate drepturile rezervate
*/
#1
session_start();
$php_self = htmlentities(strip_tags($_SERVER['PHP_SELF']), ENT_QUOTES, 'utf-8');
#2
if (!isset($_GET['pw'])) {
#2.1
if (!isset($_SESSION['pw']) || $_SESSION['pw'] != sha1('primavarapeinserate')) {
echo 'You are NOT allowed to view the content of this page.';
exit();
} else {
#2.2
if (isset($_GET['action'])) {
$action = trim($_GET['action']);
if (!preg_match('/^[a-z]{6}$/', $action)) {
echo 'Your action is wrong.';
exit();
} else {
if ($action == 'logout') {
$_SESSION = array();
if (session_destroy() && setcookie('PHPSESSID', '', time()-300, '/', '', 0)) {
header('Location:http://'.$_SERVER['HTTP_HOST'].$php_self);
exit();
}
}
}
}
}
} else {
#2.3
$pw = trim($_GET['pw']);
if (!preg_match('/^[a-zA-Z0-9]{5,30}$/', $pw)) {
echo 'Your password is NOT valid.';
exit();
} else {
if ($pw != 'primavarapeinserate') {
echo 'Your password is wrong.';
exit();
} else {
$_SESSION['pw'] = sha1($pw);
header('Location:http://'.$_SERVER['HTTP_HOST'].$php_self);
}
}
}
#3
phpinfo();
?>
Acum nu mai ramane decat sa punem scriptul de mai sus deasupra DOCTYPE-ului fiecarei paginii web pe care vrem sa o protejam de ochii curiosi. Am adaugat in script si functia de logout. Nu trebuie decat sa scriem URL-ul astfel: http://www.accesinterzis.ro/myportofolio/phpinfo.php?action=logout.
Scriptul poate fi dezvoltat si mai mult si poate fi folosit ca sistem de autentificare a utilizatorilor unei sectiuni de administrare. Diferenta dintre sistemul de login ce foloseste un formular HTML si acesta este ca in loc sa preiau datele de logare din array-ul superglobal $_POST, le preiau din array-ul superglobal $_GET.
Publica acest articol pe Twitter
Articole asemanatoare:
felicitari,asteptam mai multe tutoriale..