acces in pagina doar la user logat

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

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 Mesaje: 4343
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 Mesaje: 285
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 Mesaje: 4343
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 Mesaje: 285
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 Mesaje: 328
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 Mesaje: 4343
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 Mesaje: 328
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 Mesaje: 117
cadou scrie:
Mar Noi 14, 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