[PHP][POMOC]Problem sa sesijom

Započeo V_More, Avgust 23, 2013, 23:29:15 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

Pozdrav svima, posebno Dudeu, koji ovo najviše i gleda(hvala na tome što pomažeš).

Radim jednu web aplikaciju zbog treninga da naučim i da mogu kasnije samostalno izraÄ'ivati aplikacije. Naravno prije nego Å¡to sma počeo sam pročitao dosta literature, obiÅ¡ao 90% w3schools.com vezano za oblast koja me zanima. Radio sam dosta web aplikacija tokom toga i naiÅ¡ao sam na problem kad sam počeo da izraÄ'ujem login formu.

Ukoliko napravim login formu bez čuvanja sesije ona radi, meÄ'utim da nebi svako mogao i ko nije ulogovan otici na mojdomen.com/index.php/ bez da se uloguje naravno napravio sam sesiju koja provjerava na svakoj stranici da li je sesija "loggedin" postojeća, ukoliko nije da prebaci na login.php. MeÄ'utim, to ne radi.Dole je detaljniji kod:

U index.php kod je sljedeći:
if(!isset($_SESSION['loggedin']))
{
header('Location: login.php');
}
else echo " ..... "


U login.php fileu kod:
if(isset($_SESSION['loggedin']))
{
header("Location: index.php");
}


TakoÄ'e u login.php fileu se nalazi kod gdje je sesija zapravo "daje". Ovaj dole kod je unutar if(mysql_num_rows($result)) ... nakon Å¡to uzme podatke sa passwordom i usernameom, naravno strogo zaÅ¡tićene od SQL Injectiona.

$_SESSION['loggedin'] = 1;




E sad, nakon Å¡to sam malo radio debugging i breakpoint shvatio sam gdje ustvari problem. To jest otprilike. Ako se ode na mojdomen.com/index.php on vam ga neće prikazati to je sigurno, mislim na stranicu, i to je super Å¡to neće, ali on neće prikazati ni ako se ulogujem. Ako stavim prvi kod, iz index.php filea koji sam priložio u komentar /* ... */, on će pokazati, znači da se na login stranici prebacivanje izvrÅ¡ava, password je tačan i slično. TakoÄ'e u login formi ne radi provjera koja obavlja funkciju da ukoliko je sesija pokrenuta odmah prebaci korisnika na index.php bez logovanja. Nakon Å¡to sam to otkrio, uradio sam echo moje sesije, tj.
echo "My session is" . $_SESSION['loggedin']
prilikom čega je kao rezultat ispalo sljedeće "My session is ". Sesija uopÅ¡te kao da ne postoji, kako to treba meni nije jasno, iako sam pokuÅ¡ao da rijeÅ¡im ovaj problem gledao mnogo oko sesija i na php.net i na w3schoools.com i na stackoverflowu probleme da li ima sličnih(oko 20 sam pogledao zajedno sa rjeÅ¡enjima) i nisam niÅ¡ta naÅ¡ao, tako da molim Vas za pomoć :)   
Last nick: Vectro64

moras prvo sto radis u php kodu session_start(); da ga pokrenes, pobrini se da to bude prije html-a i prije ikakvog php koda

Citat: Dude poslato Avgust 24, 2013, 00:34:48 PRE PODNE
moras prvo sto radis u php kodu session_start(); da ga pokrenes, pobrini se da to bude prije html-a i prije ikakvog php koda

To sam i uradio, nalazi se iznad ostalog koda, odma u

<?php session_start(); .. ostali kod ..?>


Ne radi, nije do toga, mislim da je do ovoga $_SESSION postavljanje ili nešto u provjerama, ugl. kad na chromeu u Inspec element(F12) u resource pogledam cookies za domen postoji cookie sa nameom PHPSESSID i nekim server uklonjen!ID kao Value i ostalim elementima.
Poslednja Izmena: Avgust 24, 2013, 21:26:36 POSLE PODNE od V_More
Last nick: Vectro64

moras imat pokrenut session u svakoj skript gdje ga koristis, ne samo u jednoj... to ti je problem...

ako ne znas posalji mi kod u pastebinu pa cu ti ja provjerit

Kako mislis u svakoj skripti? Koristim u index.php i login.php sesiju i u ta dva filea imam na vrhu session start
Treba li to jos negdje poslqcu ti kod ?
Last nick: Vectro64

Citat: V_More poslato Avgust 26, 2013, 12:11:42 POSLE PODNE
Kako mislis u svakoj skripti? Koristim u index.php i login.php sesiju i u ta dva filea imam na vrhu session start
Treba li to jos negdje poslqcu ti kod ?

ajde stavi kod na pastebin i posalji mi u pm link...

Hahaha Dude, jesam [cenzura] :D

Otkrio sam Å¡ta je i popravio :D




Tamo gdje bila forma(polje za username, password i button) pisalo je na vrhu form action="index.php" method="post" i kad bi ti kliknuo na login dugme on bi te prebacio odmah u index.php, a nije uopÅ¡te iÅ¡ao na isset provjeru posta za username polje i password polje, gdje se ustvari sa mysql_query i mysql_num_rows provjerava i tu postavlja sesija, Å¡to znači da sesija nije ni postavljena :D Moja netrpeljivost u debuggingu me navela da rjeÅ¡avam neÅ¡to gdje nema buga i napravim ih joÅ¡, sad sam sve popravio, trebao sam samo izbrisati action="index.php" hvala ti u svakom slučaju  :-*




btw. Kako npr. kad se izlogujem da unsetujem sesiju ?
Poslednja Izmena: Avgust 26, 2013, 19:14:18 POSLE PODNE od V_More
Last nick: Vectro64

Citat: V_More poslato Avgust 26, 2013, 15:08:15 POSLE PODNE
Hahaha Dude, jesam [cenzura] :D

Otkrio sam Å¡ta je i popravio :D




Tamo gdje bila forma(polje za username, password i button) pisalo je na vrhu form action="index.php" method="post" i kad bi ti kliknuo na login dugme on bi te prebacio odmah u index.php, a nije uopÅ¡te iÅ¡ao na isset provjeru posta za username polje i password polje, gdje se ustvari sa mysql_query i mysql_num_rows provjerava i tu postavlja sesija, Å¡to znači da sesija nije ni postavljena :D Moja netrpeljivost u debuggingu me navela da rjeÅ¡avam neÅ¡to gdje nema buga i napravim ih joÅ¡, sad sam sve popravio, trebao sam samo izbrisati action="index.php" hvala ti u svakom slučaju  :-*




btw. Kako npr. kad se izlogujem da unsetujem sesiju ?

sam si dao odgovor, unset...

Hvala Dude mnogo, rešio sam to, sad mi trebaju dve stvari:

Kako da npr. imam recimo tabelu itema, ima kolone item id, itemname, itemprice. I u html imam dizajniranu tabelu gdje na vrhu piÅ¡e naziv kolone, a dole bi trebale da se pojavi novi  red za svaki item. Tabela je u MySQL napravljena, sad mene zanima, kako da ovo ja napravim, da bude brzo. Ja sam napravio sa for petljom da idem do item id i uzmem iz njega podatke stavim u echo novi red i sve tako redom i to ispadne sve super, meÄ'utim, ako bude recimo 5000 itema, plus joÅ¡ Å¡to nije svaki id u tabeli, to je veoma sporo i loÅ¡e optimizovano, pa na koji način to da rijeÅ¡im, da bude brzo ? Druga stvar kad mi samo na ovo odg. daÅ¡, poÅ¡to to je samo napisati dve tri rečenice .. :D

Neću da otvaram više tema pa zato...
Poslednja Izmena: Avgust 26, 2013, 23:08:00 POSLE PODNE od V_More
Last nick: Vectro64

napravis paginaciju u html-u za stranice, prikazujes npr 100 po stranici... inace takav upit radu u slq-u sa offsetom, znaci ako npr prikazujes 100 po stranici i zelis drugu stranicu, napravis upit u sql-u sljedeci:
slektiraj sve iz tablice te i te ako je recimo id veci od nule i kreni od 101(offset) i limitiraj na 100.
To ce ti povuci sve od 101 do 200. I onda prikazes te...

Prvo nauci dobro SQL sintaksu da bi takve stvari mogao raditi.

Citat: Dude poslato Avgust 26, 2013, 23:39:58 POSLE PODNE
napravis paginaciju u html-u za stranice, prikazujes npr 100 po stranici... inace takav upit radu u slq-u sa offsetom, znaci ako npr prikazujes 100 po stranici i zelis drugu stranicu, napravis upit u sql-u sljedeci:
slektiraj sve iz tablice te i te ako je recimo id veci od nule i kreni od 101(offset) i limitiraj na 100.
To ce ti povuci sve od 101 do 200. I onda prikazes te...

Prvo nauci dobro SQL sintaksu da bi takve stvari mogao raditi.

Da ali je problem ako je for petlja i ako nije svaki id prisutan, ako recimo je neki sellan i nema ga u tablici dostupnih itema, tako da sam skontao ovako nešto, da radi kao na faceu, da for petlja ide od $i do 50 i kad scrollaš do kraja on ti pokaže još, i ide od 51 do sto znači od $i+1 do $i+50, što je po meni najbolje rješenje, a kao da neki poslovan čovjek će se zamarati da radi sad i broji dal' tu ima pedeset il' ne....

Drugo pitanje je sljedće, ja iznad te tabele mislio sam da stavim search polje, za svaku kolonu, e sada, ja znam napraviti search sa jednom kolonom, sa SELECT * FROM mojatabela WHERE Kolonakojutražim=onoÅ¡taukucam e sada, Å¡ta ako se popuni viÅ¡e polja ? Ne znam da li će ako na ovaj moj kod dodam AND Where Mojadrugakolona=onodrugoÅ¡takucam i ako npr, tu se ne ukuca niÅ¡ta rezultat biti isti, nisam siguran, e sada kako to da napravim ? RazmiÅ¡ljao sam da radim sa isset i onda sve moguće kombinacije, ali tu bi bilo preko 100 kombinacija, Å¡to je stvarno mnogo, a puta joÅ¡ 5 tabela npr. pa kako to da uradim ? 
Last nick: Vectro64

Citat: V_More poslato Avgust 26, 2013, 23:53:00 POSLE PODNE
Citat: Dude poslato Avgust 26, 2013, 23:39:58 POSLE PODNE
napravis paginaciju u html-u za stranice, prikazujes npr 100 po stranici... inace takav upit radu u slq-u sa offsetom, znaci ako npr prikazujes 100 po stranici i zelis drugu stranicu, napravis upit u sql-u sljedeci:
slektiraj sve iz tablice te i te ako je recimo id veci od nule i kreni od 101(offset) i limitiraj na 100.
To ce ti povuci sve od 101 do 200. I onda prikazes te...

Prvo nauci dobro SQL sintaksu da bi takve stvari mogao raditi.

Da ali je problem ako je for petlja i ako nije svaki id prisutan, ako recimo je neki sellan i nema ga u tablici dostupnih itema, tako da sam skontao ovako nešto, da radi kao na faceu, da for petlja ide od $i do 50 i kad scrollaš do kraja on ti pokaže još, i ide od 51 do sto znači od $i+1 do $i+50, što je po meni najbolje rješenje, a kao da neki poslovan čovjek će se zamarati da radi sad i broji dal' tu ima pedeset il' ne....

Drugo pitanje je sljedće, ja iznad te tabele mislio sam da stavim search polje, za svaku kolonu, e sada, ja znam napraviti search sa jednom kolonom, sa SELECT * FROM mojatabela WHERE Kolonakojutražim=onoÅ¡taukucam e sada, Å¡ta ako se popuni viÅ¡e polja ? Ne znam da li će ako na ovaj moj kod dodam AND Where Mojadrugakolona=onodrugoÅ¡takucam i ako npr, tu se ne ukuca niÅ¡ta rezultat biti isti, nisam siguran, e sada kako to da napravim ? RazmiÅ¡ljao sam da radim sa isset i onda sve moguće kombinacije, ali tu bi bilo preko 100 kombinacija, Å¡to je stvarno mnogo, a puta joÅ¡ 5 tabela npr. pa kako to da uradim ? 

na upitu ogranicis sta povlaci, prouci sql sintaksu, vidim da lupas bezveze... inace for petlju php-u ne koristis za to, vec foreach...

za drugo pitanje, provuces ono sto trazis u GET i provjeravas ako postoji i ako je string length veci od nula onda dodajes sql upitu: polje LIKE %onostosiupisao%

Citat: Dude poslato Avgust 27, 2013, 00:20:33 PRE PODNE
Citat: V_More poslato Avgust 26, 2013, 23:53:00 POSLE PODNE
Citat: Dude poslato Avgust 26, 2013, 23:39:58 POSLE PODNE
napravis paginaciju u html-u za stranice, prikazujes npr 100 po stranici... inace takav upit radu u slq-u sa offsetom, znaci ako npr prikazujes 100 po stranici i zelis drugu stranicu, napravis upit u sql-u sljedeci:
slektiraj sve iz tablice te i te ako je recimo id veci od nule i kreni od 101(offset) i limitiraj na 100.
To ce ti povuci sve od 101 do 200. I onda prikazes te...

Prvo nauci dobro SQL sintaksu da bi takve stvari mogao raditi.

Da ali je problem ako je for petlja i ako nije svaki id prisutan, ako recimo je neki sellan i nema ga u tablici dostupnih itema, tako da sam skontao ovako nešto, da radi kao na faceu, da for petlja ide od $i do 50 i kad scrollaš do kraja on ti pokaže još, i ide od 51 do sto znači od $i+1 do $i+50, što je po meni najbolje rješenje, a kao da neki poslovan čovjek će se zamarati da radi sad i broji dal' tu ima pedeset il' ne....

Drugo pitanje je sljedće, ja iznad te tabele mislio sam da stavim search polje, za svaku kolonu, e sada, ja znam napraviti search sa jednom kolonom, sa SELECT * FROM mojatabela WHERE Kolonakojutražim=onoÅ¡taukucam e sada, Å¡ta ako se popuni viÅ¡e polja ? Ne znam da li će ako na ovaj moj kod dodam AND Where Mojadrugakolona=onodrugoÅ¡takucam i ako npr, tu se ne ukuca niÅ¡ta rezultat biti isti, nisam siguran, e sada kako to da napravim ? RazmiÅ¡ljao sam da radim sa isset i onda sve moguće kombinacije, ali tu bi bilo preko 100 kombinacija, Å¡to je stvarno mnogo, a puta joÅ¡ 5 tabela npr. pa kako to da uradim ? 

na upitu ogranicis sta povlaci, prouci sql sintaksu, vidim da lupas bezveze... inace for petlju php-u ne koristis za to, vec foreach...

za drugo pitanje, provuces ono sto trazis u GET i provjeravas ako postoji i ako je string length veci od nula onda dodajes sql upitu: polje LIKE %onostosiupisao%

Tako otprilike sma i ja nešto mislio, može jedan primjer upita ? Npr. sa dva, a da ne znaš šta je kucano ? Problem je što ja ne znam šta će ukuccati, npr. itemprice i itemname ukuca, da li ja u sql upitu ne bitno šta je ukucao radim LIKE za svaku kolonu, ili samo za onu koja je popunjena, ako je samo za onu koja je popunjena kako da saznam i pridružim upitu ?
Poslednja Izmena: Avgust 27, 2013, 00:28:50 PRE PODNE od V_More
Last nick: Vectro64

if(isset($_GET['nazivkolone']) && strlen($_GET['nazivkolone'])>0) {
    $query .= dalje ide upit sa LIKE - dodajes query upitu
}

a to isto sa str dodajem, kako već sa substr ?
Last nick: Vectro64