Salut,
Am pe server un folder cu acces 0777, in acest folder profesorul salveaza cursurile de sah in format HTML, cursuri pe care le editeaza direct in pagina cu CKEditor.
Cum fac sa aiba acces la acest folder doar userii logati sau anumiti useri?
Daca pun alt nivel de acces (ex.0755) nu se mai poate salva fisierul HTML pe server. Daca salvez fisierul in format PDF iarasi este vizibil in browser.
Cum se rezolva de obicei astfel de situatii? Multumesc.
Acces selectiv in director pe server
-
- Mesaje:430
Acces selectiv in director pe server
MarPlo
Mesaje:4343
Salut
Stiu 2 posibilitati:
1. La sectiunea de salvare fisier. Daca directorul e creat din php, sau are permisiuni sa scrie in el, ii poti modifica din php permisiunile chmod.
De exemplu, il poti lasa initial cu chmod 0777 (fiindca oricum il va schimba dupa prima accesare), iar cand vrei sa scrii /modifici ceva in el, setezi chmod 0777, apoi iar 0640. Cam asa:
2. Sau la partea de citire a fisierului. Poti sa blochezi cu .htaccess accesul direct la fisierele din director, cu acest cod intr-un fisier ".htaccess" in acel director:
Si vand ai nevoie de vreun fisier, il preiei printr-un script php care le poate citi si returna. La acel script trimiti prin GET sau POST numele fisierului, iar daca utilizatorul e logat, citeste acel fisier:
Stiu 2 posibilitati:
1. La sectiunea de salvare fisier. Daca directorul e creat din php, sau are permisiuni sa scrie in el, ii poti modifica din php permisiunile chmod.
De exemplu, il poti lasa initial cu chmod 0777 (fiindca oricum il va schimba dupa prima accesare), iar cand vrei sa scrii /modifici ceva in el, setezi chmod 0777, apoi iar 0640. Cam asa:
Cod: Selectaţi tot
$dir ='path_to/dir';
if(chmod($dir, 0777)){
//salveaza /scrie fisier
chmod($dir, 0640); //schimba chmod
}
else echo 'Unable to set chmod for: '. $dir;
Cod: Selectaţi tot
<Files *>
Order Allow,Deny
Deny from All
</Files>
Cod: Selectaţi tot
//Access this script with: script.php?f=file_name.html
if($user_loged && isset($_REQUEST['f'])){
$f = trim(strip_tags($_REQUEST['f']));
readfile($f);
}
andras
Mesaje:430
Am inteles, dar mai am o intrebare. Pe server am incercat cu prima varianta. Directorul cu chmod 0777 este in root-ul aplicatiei si este copiat pe server pentru ca nu pot atribui chmod 0777 la root (deci in root nu pot defini director cu script PHP, nu executa comanda). Apoi definesc (cu script PHP) subdirectoare cu chmod 0755 in acest director, dar nu are efect, toate sint vizibile (continutul) in browser chiar daca am pus la subdirector chmod o755. Sa inteleg ca trebuie sa folosesc varianta 2?
MarPlo
Mesaje:4343
Chmod 0755 permite citirea directorului /fisierului. Ca sa blochezi citirea pentru nivelul public, seteaza chmod 0640.
- Daca vrei sa intelegi cum e cu setarile CHMOD, vezi lectia de pe site: https://marplo.net/php-mysql/fisiere.html punctul 2. Privilegii de fisier.
- Daca vrei sa intelegi cum e cu setarile CHMOD, vezi lectia de pe site: https://marplo.net/php-mysql/fisiere.html punctul 2. Privilegii de fisier.