[ djovan01 @ 20.12.2006. 16:11 ] @
napravila sam log in prompt koji pri unosu odredjenoh user name i pass prebacuje korisnika na odredjenu stranicu.

znaci korsnik pocinje od stranice www.blakompanija.com/login.html i posle bude prebacen na stranicu www.blakompanija.com/stranica1.html . kako da ucinim da ukoliko neko pokusa direktno da pristupi stranici1.html bude sprecen i ponovo bude trazeno da ukuca user i pass.


hvala
[ Dragan BL @ 20.12.2006. 17:24 ] @
Ako predpostavimo da username i password imas u bazi, pa kada user unese "username" i "password" ti provijeris to i prebacis ga na sljedecu stranicu.

Jedno od resenja je sljedece:

Prije nego usera prebacis na drugu stranicu kreiraj sesije.

Primjer:

Code:
if(isset($_POST['login_submit']))  //provjerava da li je user kliknuo na dugme
{
    $username = $_POST['username'];
    $password = $_POST['password'];
    
    if() //ovde pises svoj uslov sa kojim provjeravas username i password da li je tacan
    {
                //ako je tacan kreirace se sesija

        // session
        session_start();
        // session
        $_SESSION['username']    = $username;
        $_SESSION['password']    = $password;
            
                //user ce biti prebacen na neku stranicu
        header("Location: http://www.blakompanija.com/stranica1.html ");
    }
    else
       {
             //u slucaju da su username i password pogresni vrati ce ga na login page
            header("Location: http://www.blakompanija.com/login.html");
       }

Primjer koda koji tebe sada interesuje je sljedeci:

Ovo stavljas na svaku stranicu u kojoj zelis da user ne moze direktno da pristupi, tj. moze samo da pristupi ako je prethodno unio username i password (jer je sa tacnim unosom kreirao i sesije)


Code:
session_start();       //starta sesiju

//zapisuje username i password u varijable da bi dalje mogao provijeriti
$username     = $_SESSION['username'];
$password     = $_SESSION['password'];

if(!) //provjeravas username i password i ako uslov nije ispunjen vracas ga na logn page
{    
    header("Location: http://www.blakompanija.com/login.html");
}



Ovo je napamet pisano nije provjereno, pa ako ima bugova javi ili ako ti nije nesto jasno pitaj opet.

Nadam se da ce ti pomoci.


[Ovu poruku je menjao Nemanja Avramović dana 22.12.2006. u 12:35 GMT+1]
[ Seslak @ 20.12.2006. 20:09 ] @
Mada, mozda mozes da probas i ovo. Ako npr. imas MySQL tabelu u kojoj su ti u dve kolone username i passwordi mozda ne bi bilo lose da dodas jos jednu kolonu za autentifikaciju (nazovimo je AUT). To bi radilo na fazonu da kada neko ukuca username i password, ukoliko su tacni upisivao bi se neki random string u kolonu AUT. Takodje bi postavio i varijable za sledecu stranicu (npr. index.php). Jedan varijable bi bila user i ona bi nosila korisnicko ime a druga AUT i ona bi nosila taj random string.. Sad, sledeca stranica proverava da li username dostavljen postoji u tabeli. Ako da, proverava da li je u koloni AUT isti string kao i u varijabli AUT koja je upravo nasledjena sa prethodne stranice. Ukoliko jeste, moze dalje... Prilicno jednostavno i ne zonglira se sa passwordom. Mrsko mi je bilo kucati kod. :(
[ djovan01 @ 20.12.2006. 20:15 ] @
hvala vam puno , resila sam problem. kreirala sam checkLogin.php koji je uz pomoc proveravao user name i pass i posle redirektovao na datu stranicu a ukoliko bi neko pokusao direktno da pristupi stranici ubacila sam da prvo prodje kroz checkLoging.php pa da onda ide dalje.
[ Tyler Durden @ 20.12.2006. 20:43 ] @
Mislim da bi ti najbolje bilo da uradis kako ti je Dragan BL napisao.
Na ovom linku imas detaljnije uputstvo.
http://www.devarticles.com/c/a...-for-Beginners-by-a-Beginners/
[ monte_sandman @ 20.12.2006. 21:18 ] @
POstoje programi koji mogu da "povuku" php kod sa tvog servera i procitaju pass i user zato obavezno koristi neku bazu u kojoj ces cuvati pass i user.
Nesto tipa ovoga u php-u:

Code:
<?
session_start();
$_SESSION['lozinka']=$_POST['korisnik'];
$_SESSION['sifra']=$_POST['password'];
$_SESSION['autorizacija']=0;

$link=mysql_connect("localhost", "root", "admin") or die (mysql_error());
mysql_select_db("baza") or die (mysql_error());

$upitkorisnik="SELECT korisnik_nalog,korisnik_sifra FROM korisnik WHERE 
    korisnik_nalog='".$_SESSION['lozinka']."' AND korisnik_sifra='".$_SESSION['sifra']."'"; 

$rezultat=mysql_query($upitkorisnik) or die (mysql_error());

if (mysql_num_rows($rezultat)==1)
{
$_SESSION['autorizacija']=1;

ELSE 
{
echo "Nemate pravo da otvorite ovu stranicu"; 
exit();
}
?>

I svaka stranica poslije treba da ima nesto tipa ovoga na pocetku:

Code:
<?php
session_start();
if ($_SESSION['autorizacija'] != 1) {
echo "Nemate pravo da pristupate ovoj stranici";
exit();
}
?>


[Ovu poruku je menjao Nemanja Avramović dana 22.12.2006. u 12:36 GMT+1]
[ Jbyn4e @ 21.12.2006. 09:07 ] @
Citat:
monte_sandman: POstoje programi koji mogu da "povuku" php kod sa tvog servera i procitaju pass i user zato obavezno koristi neku bazu u kojoj ces cuvati pass i user.

Ne lupaj, koji su ti to pa programi?
Da je tako, niko ne bi pisao php kod koji moze da se "vidi" kakav je.

Mozda tako nesto i postoji, ali ja za to jos nisam cuo. Prosvetli nas koji je to program?
[ Nemanja Avramović @ 22.12.2006. 11:37 ] @
Slažem se sa Jbyn4e-om
[ glavince @ 22.12.2006. 12:13 ] @
Ako striktno takve podatke cuvas u fajl sa extenzijom PHP, a ne INC ili nesto slicno. Kod moze da se vidi jedino kad rikne PHP mod na serveru. A mislim da se takve stvari vrlo retko u nekim promilima desavaju.
[ defufna @ 22.12.2006. 15:49 ] @
osim ako je u pitanju shared hosting, tada komsija moze da ti zaviri u file-ove ili neko ko je razvalio komsijin skript i dobio mogucnost izvrsavanja skriptova :)
[ centaur @ 22.12.2006. 20:20 ] @
Elegantnije rešenje umesto pisanja istog koda na svakoj stranici je da sve to radi klasa.
U tom slučaju,u svakom skriptu se na početku napravi jedna instanca klase koja sama odradi sve poslove.
Kasnije se takva klasa uz eventualne minimalne modifikacije koristi i u drugim projektima.

Što se tiče listanja PHP koda,mislim da je preko HTTP protokola to nemoguće (osim ako server ne prsne).

@monte_sandman
U tvom kodu si promenjivama sesije direktno dodelio vrednosti koje korisnik unosi,i bez ikakve provere ih
prosledio MySQL serveru.
Bombona za Mysql Injection!!!


[Ovu poruku je menjao centaur dana 22.12.2006. u 23:28 GMT+1]