php sesije

1

php sesije

offline
  • Pridružio: 19 Jan 2005
  • Poruke: 286
  • Gde živiš: Tamo daleko,tj.Beograd City

Za sta tacno sluze sesije u php,zavrsavam admin panel za sajt moga kluba,imam problema kod logavanja administratora, npr do stranice admin/adminpanel.php dolazi se preko /admin/login.php,problem je slideci, u admin/index.php se ucitavaju
skripte koje sluze za npr dodavanje,brisanje,i menjanje vesti, problem je sto do tih stranica moze doci npr kucanjem adrese www.sajt.org/admin/includes/edit.php , i sad s ovom stranicom moze da se izmene postojece vesti,sto je naravno veliki propust,kako npr kad neko pokusa da pozove skriptu www.sajt.org/admin/includes/edit.php, prebaci na admin/login.php, ja koliko sam shvatio deo problema moze da se resi sa sesijama i kolacicima,do sada sam radio samo s kolacicima,i vise pitu sam ih u adminpanelu koristio,poceli su da buguju (naravno jer sam ja napisao nesto kako netreba)



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 18 Okt 2004
  • Poruke: 444
  • Gde živiš: Pozarevac

Jednostavno ih CHMOD-uj ... tj taj fajl , to bi trebalo da ti zavrsi posao ... chmod u 601 ako se ne varam



offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3745
  • Gde živiš: 127.0.0.1

Cookie ima "rok trajanja" koji navodis prilikom pisanja php skripte, i moguce je da ostane "ziv" i kad zatvoris browser, dok sesije traju dok ne zatvoris browser ili istekne vreme trajanja sesije (ne znam zasto ali mislim da je po defaultu 23 minuta - proveri jos negde za ovo)...

Meni je lakse da radis sa sesijama, username i passworde cuvam u bazi (password je md5 hashovan), na pocetku svakog fajla ide provera da li je sesija otvorena i da li se username i password poklapaju sa onima iz baze, ako se poklapaju, onda otvara stranicu, ako ne ide na login.php Smile

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Kao sto rece Rastafarii inace kako se to radi.
Na pocetak admin/index.php fajla stavi provjeru

$prolaz = 0; if( isset($_COOKIE['username'] ) && isset( $_COOKIE['password'] ) ) {    $username = $_COOKIE['username'];    $password = $_COOKIE['password']; /* Provjeris da li korisnik sa ovim $username i md5($password) postoji u bazi, ako ti je password hashovan. I ako postoji postavis $prolaz = 1; */ } if ( $prolaz ==0 ) { header("Location link_na_kojem_ce_se_korisnik_ulogovati"); }

dalje pises svoju skiptu i da bilo koji fajl pozivas unutar admin foldera
moras proci kroz ovaj gore dio.

offline
  • Pridružio: 19 Jan 2005
  • Poruke: 286
  • Gde živiš: Tamo daleko,tj.Beograd City

@igor86 ja sam upravo ovako i radio sa kolacicima,zbog toga sam i pitao za prakticnu primenu sesija,hteo sam da vidim da li bi poboljsao security skripti,koliko ja znam sesije su "sigurnije" od kolacica, sutra (ili bolje reci danas) cu dodati code sa sesijama,pa cu videt sta dalje cinit

btw nadjoh neko parce code, jel ovaj code ok,btw u codu postoji greska kod slanja upita bazi,a mrzi me sad da je ispravljam

<?php

session_start();

if($_SERVER['REQUEST_METHOD'] == "POST")) {
$result = mysql_query("SELECT * FROM users WHERE username='" . $_POST['username'] . '" AND password=md5('" . $_POST['password'] . "')", $dbh);
if(mysql_num_rows($result) > 0) {
$_SESSION['is_logged_in'] = 1;
}
}

if(!isset($_SESSION['is_logged_in'])) {
// display your login here
} else {
header("location:adminindex.php");
}
?>
i drugi deo (da li ovaj deo code mora da ide na svaku stranicu)

<?php
session_start();

if (!isset($_SESSION['is_logged_in'])) {
header("Location:login.php");
die(); // just to make sure no scripts execute
}
?>

offline
  • Pridružio: 18 Okt 2004
  • Poruke: 444
  • Gde živiš: Pozarevac

Ups , ja to razumeo drugacije ^^... lol

offline
  • Pridružio: 06 Apr 2005
  • Poruke: 403
  • Gde živiš: Beograd

loš primer koda.
Zašto?
Nikad promenjive koje upisuje korisnik ne prosleđivati direktno u query.
Prvo provera,pa tek onda u query.
Posle na svakoj strani proveravaš da li je ulogovan ili nije.Ako jeste puštaš ga dalje,ako nije vraćaš ga na login stranu .

offline
  • Pridružio: 19 Jan 2005
  • Poruke: 286
  • Gde živiš: Tamo daleko,tj.Beograd City

da ja ne bi filozofirao u svom kodu,aj daj ti pravilniji primer, nisam obracao paznju na taj propust,al naravno da se slazem s tobom

offline
  • Pridružio: 06 Apr 2005
  • Poruke: 403
  • Gde živiš: Beograd

Evo pročitaj ovde:
http://www.php.net/manual/en/function.mysql-real-escape-string.php

offline
  • Pridružio: 19 Jan 2005
  • Poruke: 286
  • Gde živiš: Tamo daleko,tj.Beograd City

eh nesto me zeza sad funkcija mysql_num_rows, pogledao sam u manualu, sve sam pokusao al opet nece, kaze da mysql query nije u redu,al query je napisan kako treba,pokusao sam vise kombinacija al nista nepomaze,i dalje naravno postoji mogucnost da nisam dobar code napisao,al cisto sumljam

evo parce koda


$sql=mysql_query("SELECT * FROM t_admin WHERE username = '$username' AND password= md5('$password')");

$num= mysql_num_rows($sql);


if($num == 1)
{
setcookie("user",$username);
setcookie("pass",$password);

header("Location : index.php");
}
else
{

header ("Location : login.php");

}
}

greska
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\FoxServ\www\bujin\admin\login.php on line 12

Ko je trenutno na forumu
 

Ukupno su 685 korisnika na forumu :: 12 registrovanih, 2 sakrivenih i 671 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, 9k38, drimer, ekser222, esx66, Istman, Kruger, Lazarus, mrav pesadinac, nick79, vasa.93, VP6919