[ luner @ 24.08.2002. 19:50 ] @
1. Koje su tehnike "u modi" za sprecavanje duplog izvrsavanja skripta?
Recimo, imam tri skripta:
skript-forma.php // Skript koji sadrzi formu i baca promenljive skriptu skript-db.php
skript-db.php // Jednostavan skript koji se povezuje sa bazom i u datu tabelu unosi podatke
skript-pregled.php // Skript koji sluzi za pregled unosa tj, kako to izgleda u realnom zivotu.

E sada, ja bih zeleo da sprecim da kada korisnik prodje prvi i drugi skript pa na trecem udari back
da se sadrzaj ne unese ponovo u bazu (ili ako lupi na njemu refresh). Resenja?

2. Bas to - hocu da izvrsim neku komandu na Unix sistemu preko PHP-a a on da mi vrati izlaz te
komande.

3. ili bonus pitanje:
Da li postoji neki ekvivalent funkciji nl2br u nl2br_/? Mislim, da radi po xhtml standardu. Postoji
neko elegantno resenje ili mora da se ponovo prolazi (mislim PHP da prolazi :)) kroz string i
prepravlja?

[ Gojko Vujovic @ 24.08.2002. 20:09 ] @
2. Funkcije: system() - izvrsava program, vraca output. exec() - izvrsava program, vraca samo poslednju liniju. passthru() - isto kao system() ali se koristi kada izvrsena komanda vraca neke binarne podatke koje treba dalje upotrebiti. Imas jos i klasican 'backtick' operator, sto bi se reklo $rezultat = `komanda koju hoces da izvrsis`; Isto kao u perlu, ako si upoznat. Ukoliko neki od parametara komandi dobijas od korisnika, obavezno koristi escapeshellcmd() na unetom tekstu da bi izbegao potencijalnu security rupu.

3. Od php-a 4.0.5, nl2br() je XHTML-safe, dakle vraca <br /> na mestu svakog \n.
[ Goran Rakić @ 24.08.2002. 23:21 ] @
oko duplog unosa može da se sredi sa JS-om (znači onsubmit event koji će da onemogući ponovni submit, može i sa cookijem da se zabeleži nešto tipa aktivni korak i da cookie traje 1min ili više pa da to proveravaš). U principu mora se info čuvati kod klijenta...
[ -zombie- @ 25.08.2002. 18:25 ] @
1. koliko ja znam, najcesci se koristi (u "modi" je) header() komanda da posalje expiration hedere da kaze browseru da ne kesira stranicu... ovakav kod bi trebalo da dodash na svaku tvoju pomenutu stranicu na pocetku:

Code:

// ovo je iz php manual-a za header() funkciju...

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
                                                    // always modified
header("Cache-Control: no-store, no-cache, must-revalidate");  // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");                          // HTTP/1.0 


a josh jedan dobar trik je i da uradish redirect sa odgovarajucim hederom:
Code:

// takodje sa iste stranice php manual-a

header("Location: http://www.example.com/"); /* Redirect browser */
exit;                 /* Make sure that code below does 
                        not get executed when we redirect. */ 


ali ovo dodaj samo u scripta-db.php i posle redirektuj korisnika na neku stranicu na kojoj ga obavestavash da "je sve proslo kako treba, da su podaci uneseni...", ili direktno na skripta-pregled.php stranicu, kako ti vec odgovara...



3. a u starim verzijama php-a:
Code:

$text=preg_replace("/\r\n|\r|\n/", "<br />", $text);

[ luner @ 26.08.2002. 15:21 ] @
Hvala momci, vrsi posao!