View previous topic :: View next topic |
Author |
Message |
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 15.09.2004 21:04 Post subject: zašto ne radi ... (php.) |
|
|
Code: | <?php
//brojac posjeta v2 - s cookiem :)
if (isset($_COOKIE['brojac'])){
setcookie("brojac","1",time()+120);
include("condb.php"); //za spajanje na db
$datum0 = getdate();
$datum = "$datum0[mday].$datum0[mon].$datum0[year]"; //formira datum
$query1 = "SELECT * FROM brojac WHERE datum = '$datum'";
$br = mysql_query($query1,$konekt); //traži broj posjeta današnjeg datuma...
$brf = mysql_fetch_assoc($br); //fetcha rezultat
$new = $brf['broj'] + 1; //poveca ga za jedan ako nije bilo niceg (0) onda to broji kao prvi posjet...
$query3 = "INSERT INTO brojac (datum, broj) VALUES ('$datum', '1')";
if(!mysql_query($query3,$konekt)){ //datum je jedinstvene vrste pa ako zelimo napravit novo polje s istim datumom vratit ce false
$query2 = "UPDATE brojac SET broj = '$new' WHERE datum = '$datum'";
mysql_query($query2, $konekt); //ako vrati false znaci da datum postoji i da treba samo updateat rezultat
};
mysql_close($konekt);
};
?> |
znači ovo je kod ... problem je što dio s cookiem ne radi !?
ono u čem je problem ... (i ako imate kakav savjet za skriptu da bude bolja or something...)
ps.
znam da je malo čudno riješen dio s updateom ali ono |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 15.09.2004 21:34 Post subject: |
|
|
OK, neću se puno pravit pametan jer nisam pisao PHP godinu dana... Ali onaj time()+120 u cookieu me muči, što neće cookie prebrzo biti 'expired'
Pitanje broj dva se odnosi na dio koji gleda današnji datum i ostalo... Što ako dva usera isti dan budu na sajtu? Jer u query-ima nema ničega user-specific, pa kako on zna koji podatak odgovara kojem surferu?
Žao mi je što na pitanjima odgovaram sa pitanjima... ali mi nije baš ovo na mjestu |
|
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 15.09.2004 21:46 Post subject: |
|
|
Sulien wrote: | OK, neću se puno pravit pametan jer nisam pisao PHP godinu dana... Ali onaj time()+120 u cookieu me muči, što neće cookie prebrzo biti 'expired' |
pa dvije minute (? or) to je bilo samo da isprobam ...
Sulien wrote: |
Pitanje broj dva se odnosi na dio koji gleda današnji datum i ostalo... Što ako dva usera isti dan budu na sajtu? Jer u query-ima nema ničega user-specific, pa kako on zna koji podatak odgovara kojem surferu?
|
baš ne kužim kaj želiš reć sory |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 15.09.2004 22:04 Post subject: |
|
|
Uuu, fak... Nešto sam zabrijao ovo drugo. Forget it Nisi nam dao dovoljno informacija o tome što točno brojač broji i kako broji, pa zato
Rješenje sa query-em koji vraća false mi se ne sviđa, to se moglo i elegantnije... Ali kad kažeš da cookie ne radi, objasni mi točno njegovu ulogu. Što ako cookie nije setiran (prvi "if" u kodu)? Kad se cookie inicijalizira?
S kolačićima sam uvijek imao problema u IE, i stalno sam mislio da ja nešto griješim dok nisam čuo potvrdu od drugih ljudi da nisam ja lud -- dobra stara praksa "ako kolačić ne radi dobro, izbriši ga i pokreni ispočetka"... To sam konačno naučio kod autologina na mi3 |
|
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 15.09.2004 22:10 Post subject: |
|
|
Sulien wrote: |
Rješenje sa query-em koji vraća false mi se ne sviđa, to se moglo i elegantnije... Ali kad kažeš da cookie ne radi, objasni mi točno njegovu ulogu. Što ako cookie nije setiran (prvi "if" u kodu)? Kad se cookie inicijalizira?
|
lol where was i thinking
treba ic !isset .... jer ako ga nema onda ga treba postavit i pribrojit posjet lol
but (always )
Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\mobypal\index.php: in c:\phpdev\www\mobypal\index.php on line 30
??? now what? |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 15.09.2004 22:36 Post subject: |
|
|
I ja sam isto mislio !isset, ali sam mislio da opet brijem
a ovaj header --
Ajde reci kako točno hoćeš da stranica broji posjete i ja ću dati svoj prijedlog -- mislim da se može jednostavnije ovo riješti |
|
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 15.09.2004 22:40 Post subject: |
|
|
Sulien wrote: | I ja sam isto mislio !isset, ali sam mislio da opet brijem
a ovaj header --
Ajde reci kako točno hoćeš da stranica broji posjete i ja ću dati svoj prijedlog -- mislim da se može jednostavnije ovo riješti |
pa jednostavno broji posjete znače ne posjetitelje već posjete (cookie je tu samo da bi spriječio nakon ponovnog učitavanja/vraćanja na front povećanje posjeta ... mislio sam stavit na 1h ... možda postoji neki drugi način ... sumnjam )
znači ono je radilo super ali s cookiem ne radi ... |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
edgar
Joined: 28 Dec 2003 Posts: 916 Location: Pred monitorom
|
Posted: 15.09.2004 22:52 Post subject: |
|
|
unique wrote: | Sulien wrote: |
Rješenje sa query-em koji vraća false mi se ne sviđa, to se moglo i elegantnije... Ali kad kažeš da cookie ne radi, objasni mi točno njegovu ulogu. Što ako cookie nije setiran (prvi "if" u kodu)? Kad se cookie inicijalizira?
|
lol where was i thinking
treba ic !isset .... jer ako ga nema onda ga treba postavit i pribrojit posjet lol
but (always )
Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\mobypal\index.php: in c:\phpdev\www\mobypal\index.php on line 30
??? now what? |
A koja je linija 30?
Uglavnom, moraš radnju na liniji 30 obaviti prije bilo kakvog HTML outputa. |
_________________ Digital Genetics | Koote | Nuspojava |
|
Back to top |
|
|
PsychoPod
Joined: 05 Oct 2003 Posts: 166
|
Posted: 16.09.2004 00:46 Post subject: |
|
|
mozda da napravis pomocu sessiona da pamti, i ako je session_id setan da ne broji, a ako nije, setiras ga i dodas broj u tablicu. nesto slicno? |
|
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 16.09.2004 09:31 Post subject: |
|
|
edgar wrote: |
A koja je linija 30?
Uglavnom, moraš radnju na liniji 30 obaviti prije bilo kakvog HTML outputa. |
to bi bilo setcookie
to bi značilo da moram cookie postavit prije nego što provjerim dal ga imam ?
psycho wrote: | mozda da napravis pomocu sessiona da pamti, i ako je session_id setan da ne broji, a ako nije, setiras ga i dodas broj u tablicu. nesto slicno? |
pa to i radim samo s cookiem
ps. session security bug? ne znam baš o ćem se radi, nije mi se baš dalo čitat ali ako nekog zanima ... |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
strija
Joined: 14 Sep 2003 Posts: 473 Location: Čakovec
|
Posted: 16.09.2004 09:53 Post subject: |
|
|
unique wrote: |
Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\mobypal\index.php: in c:\phpdev\www\mobypal\index.php on line 30
??? now what? |
probaj na pocetku koda ubaciti
ob_start(); |
_________________ We can exist in ambiguity, but it means the deepest loneliness. | creolab.hr | thefarewellreason.com |
|
Back to top |
|
|
edgar
Joined: 28 Dec 2003 Posts: 916 Location: Pred monitorom
|
Posted: 16.09.2004 10:19 Post subject: |
|
|
unique wrote: | edgar wrote: |
A koja je linija 30?
Uglavnom, moraš radnju na liniji 30 obaviti prije bilo kakvog HTML outputa. |
to bi bilo setcookie
to bi značilo da moram cookie postavit prije nego što provjerim dal ga imam ?
|
Ne. Ali zapravo to NIJE linija #30. Koliko ja vidim, to je linija #4 ... |
_________________ Digital Genetics | Koote | Nuspojava |
|
Back to top |
|
|
che.UP mi3.crew
Joined: 07 Sep 2003 Posts: 2320 Location: zagreb
|
Posted: 16.09.2004 10:27 Post subject: |
|
|
strija wrote: | unique wrote: |
Warning: Cannot add header information - headers already sent by (output started at c:\phpdev\www\mobypal\index.php: 8) in c:\phpdev\www\mobypal\index.php on line 30
??? now what? :) |
probaj na pocetku koda ubaciti
ob_start(); |
no dobro necemo sad to koristit di nije potrebno, jel?:)
treba samo provjeriti da nema ama bas nista drugo u prvoj liniju osim <?php
znaci ne smije biti ni space ni enter, nista... |
_________________ UP | TypeTester | Accommodations App
Meni u Firefox-u ne radi AJAX |
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 16.09.2004 10:54 Post subject: |
|
|
edgar wrote: |
Ne. Ali zapravo to NIJE linija #30. Koliko ja vidim, to je linija #4 ... |
to nije cijelo kod ... još ima ispred js i ostalo |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
edgar
Joined: 28 Dec 2003 Posts: 916 Location: Pred monitorom
|
Posted: 16.09.2004 11:11 Post subject: |
|
|
unique wrote: | edgar wrote: |
Ne. Ali zapravo to NIJE linija #30. Koliko ja vidim, to je linija #4 ... |
to nije cijelo kod ... još ima ispred js i ostalo |
e pa vidiš. Upravo je taj js i 'ostalo' problem. Skripta mora bit ČISTA od bilo kakvog HTML outputa prije korištenja cookie-a. Kužiš? |
_________________ Digital Genetics | Koote | Nuspojava |
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 16.09.2004 11:24 Post subject: |
|
|
edgar wrote: |
e pa vidiš. Upravo je taj js i 'ostalo' problem. Skripta mora bit ČISTA od bilo kakvog HTML outputa prije korištenja cookie-a. Kužiš? |
edit: ---------
da u tom je bio problem sory svi (moj veliki bad) i hvala na pomoći , tenks edgar... |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
edgar
Joined: 28 Dec 2003 Posts: 916 Location: Pred monitorom
|
Posted: 16.09.2004 11:53 Post subject: |
|
|
Savjet: uvijek organiziraj kod tako da u php skriptama ne pišeš html, ili barem što manje html-a. Najbolje je da imaš praksu pisanja koda u više modula i skripti koje imaju međusobnu interakciju. To zahtijeva malo više organizacije i promišljanja, ali krajnji učinak je s programerskog gledišta daleko bolje riješenje. Miksanje svog sranja u jednu skriptu je loše i najčešće ne radi kako treba, a niti je moguće neke stvari izvesti.
Odvajanje php koda od html-a je daleko elegantnije rješenje. |
_________________ Digital Genetics | Koote | Nuspojava |
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 16.09.2004 11:57 Post subject: |
|
|
tenks |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 16.09.2004 20:43 Post subject: |
|
|
PsychoPod wrote: | mozda da napravis pomocu sessiona da pamti, i ako je session_id setan da ne broji, a ako nije, setiras ga i dodas broj u tablicu. nesto slicno? |
Pa i ja sam mislio predložiti da to bude sessionom. Meni je to daleko elegantnije i kraće (svega par linija koda uključujući i SQL query-e)
Dakako, i session_start() mora biti prije ikakvog html outputa
EDIT: napisao sam "ukljućujući"...
Last edited by Sulien on 18.09.2004 23:47; edited 1 time in total |
|
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 18.09.2004 16:44 Post subject: |
|
|
sulien wrote: | Rješenje sa query-em koji vraća false mi se ne sviđa, to se moglo i elegantnije... |
evo sad sam to malo elegantnije..
pa što kažete Code: |
<?php
if (!isset($_COOKIE['v1_valid'])){
setcookie("v1_valid","1",time()+60);
include("condb.php"); //za spajanje na db
$datum0 = getdate();
$dan = $datum0[mday];
$mjesec = $datum0[mon];
$godina = $datum0[year];
$query1 = "SELECT * FROM brojac WHERE dan = '$dan' AND mjesec = '$mjesec' AND godina = '$godina'";
$izlaz = mysql_query($query1,$konekt);
$data = mysql_fetch_assoc($izlaz);
$v1 = $data['v1'] + 1;
$v2 = $data['v2'];
if (!isset($_COOKIE['v2_valid'])){
$v2++;
setcookie("v2_valid","1",time()+31536000);}
if ($v1 == 1){
$query2 = "INSERT INTO brojac (dan, mjesec, godina, v1, v2) VALUES ('$dan' ,'$mjesec', '$godina', '$v1', '$v2')";
}else $query2 = "UPDATE brojac SET v1 = '$v1', v2 = '$v2' WHERE dan = '$dan' AND mjesec = '$mjesec' AND godina = '$godina'";
mysql_query($query2, $konekt);
mysql_close($konekt);
};
?> |
znači razdvojoi sam datum na dan, mjesec i godina (radi lakšeg kasnijeg izvlačenja podataka)
v1 - broj posjeta (cookie na 1h trenutno je 1 min)
v2 - broj posjetitelja (cookie na jednu godinu)
(to je i tablica ) |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
PsychoPod
Joined: 05 Oct 2003 Posts: 166
|
Posted: 18.09.2004 20:33 Post subject: |
|
|
meni to sve ok izgleda, samo sta sam dodajes u mysql iduci dan u mjesecu. ili si vec unaprijed ubacio u tablicu te datuma. mislim na
Code: | $query1 = "SELECT * FROM brojac WHERE dan = '$dan' AND mjesec = '$mjesec' AND godina = '$godina'"; |
jer po ovome to je vec u bazi. sta si stavio unaprijed sve datume u bazu pa samo dodajes posjete radi statistike?
i ovaj cookie koji vrijedi minutu(sat) mi je nekako cudno. za takve vremenske periode mi nekako bolje sessione koristiti. dok za ovaj od godinu dana je ok:) |
|
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 18.09.2004 21:22 Post subject: |
|
|
PsychoPod wrote: | meni to sve ok izgleda, samo sta sam dodajes u mysql iduci dan u mjesecu. ili si vec unaprijed ubacio u tablicu te datuma. mislim na
Code: | $query1 = "SELECT * FROM brojac WHERE dan = '$dan' AND mjesec = '$mjesec' AND godina = '$godina'"; |
jer po ovome to je vec u bazi. sta si stavio unaprijed sve datume u bazu pa samo dodajes posjete radi statistike? |
ne nisam to bi bilo glupo nego on traži ako već postoji taj dan pa onda samo updatea a ako ne postoji on će vratit 0 pa ću ja pribroji 1 = 1 i upisat novi (ne update) 'rezultat'...
PsychoPod wrote: |
i ovaj cookie koji vrijedi minutu(sat) mi je nekako cudno. za takve vremenske periode mi nekako bolje sessione koristiti. dok za ovaj od godinu dana je ok:) |
1h je da bi spriječio zbrajanje posjete za svako vraćanje na front s neke tablice ili već nečeg...ne pada mi na pamet bolje riješenje !?
ja nisam baš upoznat s tim sessionima ... može neki intro pls. |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
silence
Joined: 24 Apr 2004 Posts: 890 Location: .....ni na nebu, ni na zemlji.....
|
Posted: 19.09.2004 10:07 Post subject: |
|
|
meni su sessioni u svakom slučaju draži.... |
_________________ This End-User License is an agreement between Microsoft Corporation (hereafter referred to as "Microsoft") and you, the end-user (hereafter referred to as "our bitch"). |
|
Back to top |
|
|
unique
Joined: 29 Mar 2004 Posts: 655
|
Posted: 19.09.2004 11:11 Post subject: |
|
|
silence wrote: | meni su sessioni u svakom slučaju draži.... |
why? why? why?
ps.
why? |
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE! |
|
Back to top |
|
|
maxy
Joined: 07 Sep 2003 Posts: 894 Location: Zagreb
|
Posted: 19.09.2004 12:10 Post subject: |
|
|
session ti traje dok je korisnik na stranici.
to ti je kao varijabla koja je prisutna na svim stranicama tvog sajta.
postavis je na jednom pageu i mozes dobiti vrijednosti iz nje na nekom desetom.
uglavnom, kako ta stvar funkcionira - u session varijablu pohranis nesto te se ta informacija cuva u nekoj datoteci na serveru.
postoji vrijeme kroz koje session "zivi", odnosno kolko ce ta datoteka postojati u direktoriju sa sessionima.
kako nesto strpas u session? ovako:
$_SESSION['ime_varijable'] = 'nekakva vrijednost';
svaki korisnik kada se spoji na stranicu dobije tzv. session_id, odnosno 32bitni niz znakova (obicno izgleda ovako: 2ds14lmj2455klsa itd) koji identificira korisnika i pridruzuje mu njegovu session datoteku.
ovo je quickie objasnjenje. imas li jos pitanja - pitaj |
|
|
Back to top |
|
|
|