Küsimus nimelt selles soovin unset-ida posti väärtust et refreshides lehte ei oleks muutujaid kuid unset ei funka... või mis oleks parem kasutada?Timukas - 21.12.2010 22:21
Selline asi unsetiga ei ole võimalik, sest unset toimib ainult jooksva php-skripti ulatuses, aga kui teha refresh, siis hakatakse skripti uuesti algusest täitma.
Võid näiteks kasutaja suunata teisele (või sellele samale lehele):
Kood:
header('Location: leht.php');
Suunates mingeid POST väärtusi kaasa ei anta ja seega ei teki nad ka lehte värskendades.emmsii - 21.12.2010 23:07
Käid iga $_POST väärtuse for(või foreach?)-tsükliga läbi näiteks ja kasutad ükshaaval unsetti äkki? Pole kindel, PHP'ga pole ammu tegelenud enam.Timukas - 21.12.2010 23:11
Ma sain aru, et kui keegi vormiga andmeid saadab ja refreshi vajutab, siis ta ei taha, et vorm uuesti ära saadetakse (submit-itakse). Unsetiga sellist asja ei tee.Whitedragon - 22.12.2010 09:08
Timukas proovisin:
Kood:
if($_POST['nupp'] && strlen($_POST['nupp']) > 1)
{
//Muu kood vormiga
$_POST['nupp'] = ""; // on ju väiksem kui üx:S
}
E: enter mõistis valel ajal positada:D
Samas.... Ma ei saa siis ju kasutajale vormi vigu näidata... või mõtekas vigade jaoks kasutada sessiooni?
Suunamise puhul pead tõesti sessioone kasutama. Selle kohta uurinud küll pole, aga minu arust igati hea lahendus - küpsised on nüüd vist küll igaühel sisse lülitatud, kasutaja näeb oma vead kenasti ja sina ei pea kartma, et refreshiga midagi ära rikutakse.
Kui vaja, et koodi hilisemas osas enam seda POST väärtust ei eksisteeriks, siis kasuta ikka unset-i. Väikeste parandustega:
Kood:
if (!empty($_POST['nupp'])) { //empty kontrollib kohe, kas muutuja on olemas ja ega ta tühi ei ole
var_dump($_POST['nupp']); //väljastab nupu väärtuse
//Muu kood vormiga
unset($_POST['nupp']);
}
var_dump(empty($_POST['nupp'])); //väljastab true (ehk muutujat kas ei eksisteeri või on ta tühi)
Kui tahad vaadata, kas muutuja on olemas (vahet pole, kas tühi või mitte), siis kasuta isset-i.andrusny - 22.12.2010 19:41
ning ikkagi jätab ta selle mällu (ei kasuta header() funksiooni..)
Ma sain aru, et kui keegi vormiga andmeid saadab ja refreshi vajutab, siis ta ei taha, et vorm uuesti ära saadetakse (submit-itakse). Unsetiga sellist asja ei tee.