php pomoc

Hardware, software, mobiteli, programiranje, internet...

Moderator: Bobi

Post Reply
epik
Posts: 417
Joined: 10/05/2011 14:15

php pomoc

Post by epik » 23/02/2012 16:37

Kako da napravim na sajtu da odredjenim fajlovima imaju pristup samo registrovani korisnici?
Napravio sam Login za clanove i sve super fercera, al ovo sam zaribao. Imam par obrazaca u pdf-u kojima bi trebali pristupiti samo reg. clanovi.


xamp
Posts: 1242
Joined: 31/03/2010 18:43

Re: php pomoc

Post by xamp » 23/02/2012 17:04

Jel svi registrovani clanovi trebaju moci pristupiti tim fajlovima ili samo odredjeni clanovi?

epik
Posts: 417
Joined: 10/05/2011 14:15

Re: php pomoc

Post by epik » 23/02/2012 19:11

xamp wrote:Jel svi registrovani clanovi trebaju moci pristupiti tim fajlovima ili samo odredjeni clanovi?
svi registrovani korisnici trebaj imati pristup za nekoliko fajlova ili ako ne moze to onda da stavim restrict za tu stranicu na kojoj su linkovi za download. Imam msql bazu, vrlo jednostavnu i to bi trebalo da bude jednostavno, al nikako da svarim

User avatar
hakazvaka
Forum administrator
Posts: 6313
Joined: 11/02/2008 09:27
Location: $_SESSION[]
Contact:

Re: php pomoc

Post by hakazvaka » 23/02/2012 19:41

Vrlo jednostavno.

Napravis direktorij u koji spasis te fajlove, u taj direktorij ubacis .htaccess sa sljedecim sadrzajem

Code: Select all

order deny, allow
allow from 127.0.0.1
deny from all
Ovo ce zabraniti request bilo kome ko nije tvoj server na ove fajlove

Zatim ces napraviti PHP skriptu koja unutar sebe ucitava taj neki fajl (recimo PDF) (ne smijes odati direktan link do fajla, pa ces onda unutar PHP-a dakle pozvati taj neki fajl)
Bitno je da odredis headere ispravno... Evo nadjoh na internetu primjer kako izgleda PHP fajl koji ucitava PDF

Code: Select all

<?php
  $file = "test/test.pdf";
  header('Content-type: application/pdf');
  header("Content-Disposition: inline; filename=".$file);
  /*header("Content-Disposition: attachment; filename=".$file);*/
  header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
  header('Cache-Control: no-store, no-cache, must-revalidate');
  header('Cache-Control: pre-check=0, post-check=0, max-age=0');
  header('Pragma: anytextexeptno-cache', true);
  header('Cache-control: private');
  header('Expires: 0');
  readfile($file); 
?>
Zatim ces napraviti provjeru da li je korisnik logiran (to je do tebe kako ces), i u zavisnosti od rezultata, ponuditi ces mu listing na ovaj PHP fajl, a varijablu $file ces passati vec nekako (post ili get metodom)...

epik
Posts: 417
Joined: 10/05/2011 14:15

Re: php pomoc

Post by epik » 23/02/2012 23:02

eh sad ovo ono :) ma ne znam ni to drug, ako mozes napisi mi primjer pozivanja tog fajla, . ovo sa sa .htaccess radi odnosno kada pokusam da ucitam fajl izbacuje 500 internal server error. No to nije bitno ja cu na sajtu naznaciti da je potreban login i blablabla.
E krenuo sam sa pravljenjem fajla sa ovim gore kodom i naslovio ga "pristup.php" gdje sam ubacio neke svoje podatke i isao logikom da promjenim ovo pdf u .docx :
<?php
$file = "dokumenti/mojdokument.docx";
header('Content-type: application/docx');
header("Content-Disposition: inline; filename=".$file);
/*header("Content-Disposition: attachment; filename=".$file);*/
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0');
header('Pragma: anytextexeptno-cache', true);
header('Cache-control: private');
header('Expires: 0');
readfile($file);
?>

i poziv tog fajla "pristup.php" sam pokusao da izvrsiti krenuvsi sa
<?php
if (is_user_logged_in())
i tu mi je bio kraj....

da li treba ovo sto sam krenuo praviti treba spasiti kao zaseban fajl ili se moze zaljepiti u ovaj "pristup.php" i fakat ne znam sta dalje....totalno sam zaribao

User avatar
gentoo
System
Posts: 1480
Joined: 05/01/2008 12:10
Location: Ze
Has thanked: 4 times
Been thanked: 10 times
Contact:

Re: php pomoc

Post by gentoo » 23/02/2012 23:08


itekako
Posts: 538
Joined: 21/12/2011 11:17
Been thanked: 3 times

Re: php pomoc

Post by itekako » 23/02/2012 23:33

Ako sam dobro shvatio, ako vec ne postoji, trebao bi napraviti PHP stranicu na kojoj ces imati linkove do tih dokumenata. S obzirom da useri vec postoje, na toj stranici ti je potrebna samo autentikacija usera ili redirekcija na login page u zavisnoti da li je vec logovan ili ne.

Code: Select all

<?php
// startamo session
session_start();

// provjeravamo jeli vec logovan ili ne
if (!isset($_SESSION['is_logged_in'])
    || $_SESSION['is_logged_in'] !== true) {

    //ako nije logovan saljemo ga na stranicu za logovanje
    header('Location: login.php');
    exit;
}
?>

edit:
nije ti ovo neka pomoc. Sve i da zabranis indexiranje foldera u kojem se nalaze dokumenti, postojeci user moze poslati link do PDFa bilo kome.... :D

epik
Posts: 417
Joined: 10/05/2011 14:15

Re: php pomoc

Post by epik » 24/02/2012 08:07

Izbacuje mi error:

session_start() [function.session-start]: Cannot send session cookie - headers already sent by

<?php
// startamo session
session_start();

// provjeravamo jeli vec logovan ili ne
if (!isset($_SESSION['is_logged_in'])
|| $_SESSION['is_logged_in'] !== true) {

//ako nije logovan saljemo ga na stranicu za logovanje
header('Location: login.php');
exit;
}
?>

ovaj kod sam postavio na stranu gdje su mi linkovi za dokumente

itekako
Posts: 538
Joined: 21/12/2011 11:17
Been thanked: 3 times

Re: php pomoc

Post by itekako » 24/02/2012 10:02

epik wrote:Izbacuje mi error:

session_start() [function.session-start]: Cannot send session cookie - headers already sent by

<?php
// startamo session
session_start();

// provjeravamo jeli vec logovan ili ne
if (!isset($_SESSION['is_logged_in'])
|| $_SESSION['is_logged_in'] !== true) {

//ako nije logovan saljemo ga na stranicu za logovanje
header('Location: login.php');
exit;
}
?>

ovaj kod sam postavio na stranu gdje su mi linkovi za dokumente
ocigledno je nesto vec poslano browseru prije session_start();
prebaci sve na pocetak stranice (linija 1)

epik
Posts: 417
Joined: 10/05/2011 14:15

Re: php pomoc

Post by epik » 24/02/2012 10:23

izbrisao sam sve i ostavio samo ovaj kod i link za dokument. i opet isto izbacuje kao da ima vec header

itekako
Posts: 538
Joined: 21/12/2011 11:17
Been thanked: 3 times

Re: php pomoc

Post by itekako » 24/02/2012 10:36

epik wrote:izbrisao sam sve i ostavio samo ovaj kod i link za dokument. i opet isto izbacuje kao da ima vec header
ako to izgleda ovako, trebalo bi da radi...

Code: Select all

<?php
// startamo session
session_start();

// provjeravamo jeli vec logovan ili ne
if (!isset($_SESSION['is_logged_in'])
|| $_SESSION['is_logged_in'] !== true) {

//ako nije logovan saljemo ga na stranicu za logovanje
header('Location: login.php');
exit;
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Naziv stranice sa linkovima</title>
</head>

<body>
<a href="../folder/dokument.pdf">naziv dokumenta</a>
</body>
</html>

epik
Posts: 417
Joined: 10/05/2011 14:15

Re: php pomoc

Post by epik » 25/02/2012 08:16

Ma nece pa nece. ima li neki drugi nacin?

itekako
Posts: 538
Joined: 21/12/2011 11:17
Been thanked: 3 times

Re: php pomoc

Post by itekako » 25/02/2012 12:04

epik wrote:Ma nece pa nece. ima li neki drugi nacin?
Postoji nacin koji ti je Haka predlozio. On je malo tezi ali radi bas kako treba.
Postoji nesto laksi od onog koji ti je Haka predlozio, ali ti on vjerujem ne bi odgovorao jer bi u jedan od dva .htaccess morao "pjeske" upisivati svakog usera i njegovu sifru. Besmisleno.
Postoji najlaksi, ali s manom, onaj koji sam ti ja dao.
Fakat ne znam za neke druge.

Sto se tice mog prijedloga, on mora raditi!
Iz primjera koji sam ti dao potrebno je, naravno, samo promjeniti ime varijable "is_logged_in" u onu tvoju koja se kreira prilikom logovanja usera.

epik
Posts: 417
Joined: 10/05/2011 14:15

Re: php pomoc

Post by epik » 25/02/2012 12:32

lijepi drupal i jomla sve servirano gotovo :) .

mjenjao sam varijablu naravno, haj probcu jos nekih kombinacija.

Meni u stvari uopste ne dozvoljava da pokrene sessiu

Post Reply