acces in pagina doar la user logat

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
sterica
Mesaje: 256

acces in pagina doar la user logat

Salutare,

Am o pagina de login.php unde introduc user, parola si am un buton de submit, daca este introdus corect, imi face trimitere cu:

Cod: Selectaţi tot

header ('Location: index.php');
daca nu sunt corecte datele primesc un mesaj de eroare. Problema mea apare catunci cand in browser este tastat localhost/site/index.php se deschide in continuare pagina, teoretic partea de login o am asa doar de dragul de a fi. Ce pot face ca sa nu imi deschida pagina daca nu am introdus user si parola.

Multumesc!

MarPlo
Salut
1. In "login.php" inregistrezi un $_SESSION daca datele de logare sunt trimise si corecte, altfel stergi acea sesiune.

Cod: Selectaţi tot

if($date_logare_corecte){
  $_SESSION['loged'] ='Name';
}
else if(isset($_SESSION['loged'])) unset($_SESSION['loged']);
2. In paginile cu acces doar cu logare verifici daca exista acea sesiune.

Cod: Selectaţi tot

if(isset($_SESSION['loged'])){
  echo 'Content..';
}
else echo 'You must logg in.';
- In toate acele fisiere sa fie la inceput: session_start().

sterica
MarPlo, cum imi recomanzi sa procedez in cazului lui acel echo 'Content..' ; atunci cand pagina este formata din foarte multe linii de cod HTML. Va trebui sa o transpun sa fie interpretata de php prin acel echo, sau am o alta posibilitate mult mai usoara?
Multumesc!

MarPlo
O varianta mai simpla in cazul acelui "echo" cu continutul paginii e aceasta:

Cod: Selectaţi tot

if(isset($_SESSION['loged'])){
  include 'get_content.php';
}
else echo 'You must logg in.';
Iar in "get_content.php" definesti continutul cum stii.

- Ca sa nu se poata accesa din browser fisierul get_content.php, adaugi in fisieru ".htaccess" acest cod:

Cod: Selectaţi tot

# Blocks the external access to get_content.php
<files get_content.php>
 order allow,deny
 deny from all
</files>

sterica
M-am gandit si la a include o pagina in acel if, insa asa cum ai spus si tu se poate accesa din browser, dar .htaccess se pare ca face minuni :)
Voi folosi pentru fiecare fisier codul tau:

Cod: Selectaţi tot

<files get_content.php>
 order allow,deny
 deny from all
</files>
Multumesc mult de ajutor!

cadou
Si daca as avea un fisier intr-un folder... de exemplu calea fisierului (daca as tasta in browser) .....ro/Dosar/Fisier.php , iar fisier.php nu as dori sa il acceseze cineva direct din browser,

Am incercat sa pun in htaccess asa :

Cod: Selectaţi tot

<files folder/fisier.php>
 order allow,deny
 deny from all
</files>
, dar nu a mers, se putea accesa din browser, apoi daca am pus asa :

Cod: Selectaţi tot

<files fisier.php>
 order allow,deny
 deny from all
</files>
Nu se putea accesa din browser, dar nici din alta parte dintr-un form prin ajax ...

MarPlo
Nu mai merge sa accesezi din browser, ajax sau alt mod extern un fisier blocat cu .htacces.
Se poate accesa doar dintr-un script de pe server, de exemplu cu include() in alt fisier .php.

cadou
Pai si pentru fisiere care nu ar trebui accesate extern/din browser, sa inteleg ca trebuie sa punem cumva conditii sa nu fie accesate direct din adress bar .... deci asta cu regula in htaccess cam pica ....

Stefan
cadou scrie:
14 Noi 2017
Pai si pentru fisiere care nu ar trebui accesate extern/din browser, sa inteleg ca trebuie sa punem cumva conditii sa nu fie accesate direct din adress bar .... deci asta cu regula in htaccess cam pica ....
interzicere-accesare-directa-fisiere-t2611.htm , vezi acest topic

Subiecte similare