Whitedragon
Toru
 
Registreerunud: 17.7.2009
Kasutaja on eemal
|
|
|
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?
|
|
0 |
|
Timukas
Moderaator
    
Registreerunud: 16.7.2009
Asukoht: Rapla
Kasutaja on eemal
|
|
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.
|
|
0 |
|
emmsii
Teenekas toru
  
Registreerunud: 18.7.2009
Asukoht: tartu
Kasutaja on eemal
|
|
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.
"Ning kui olen öelnud, et neile telefonidele polegi sellist tarkvara tehtud ja pole võimalust neid USB kaabli/infrapuna kaudu arvutiga ühendada, siis on sõimatud petturiks ja kord esitati minu kui eraisiku peale kaebus tarbijakaitsemetile, dziisas kraist, kui sa tundsid ennast ära praegu , siis pane end põlema kuradi t*rapea." Pihi.net
|
|
0 |
|
Timukas
Moderaator
    
Registreerunud: 16.7.2009
Asukoht: Rapla
Kasutaja on eemal
|
|
|
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.
|
|
0 |
|
Whitedragon
Toru
 
Registreerunud: 17.7.2009
Kasutaja on eemal
|
|
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?
[Muudetud: 22.12.2010 Whitedragon]
[Muudetud: 22.12.2010 Whitedragon]
|
|
0 |
|
Timukas
Moderaator
    
Registreerunud: 16.7.2009
Asukoht: Rapla
Kasutaja on eemal
|
|
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.
|
|
0 |
|
andrusny
Noor toru

Registreerunud: 20.11.2009
Kasutaja on eemal
|
|
Ise olen vigade logi pannud headriga kaasa.
| Kood: | |
if(isset($_POST['nupp'])){
$sisu = $_POST['sisu'];
if($sisu == ""){$viga = "Sisu puiudub";} else {$viga ="Kõik on korras";}
header('Location: ?viga='.$viga);
}
if(isset($_GET['viga']){echo $_GET['viga'];}
|
|
|
0 |
|
Whitedragon
Toru
 
Registreerunud: 17.7.2009
Kasutaja on eemal
|
|
|
huvitav.... saan vastuseks....
esimesel korral:
NULL
teisel korral:
bool(true)
ning ikkagi jätab ta selle mällu (ei kasuta header() funksiooni..)
[Muudetud: 22.12.2010 Whitedragon]
|
|
0 |
|
Timukas
Moderaator
    
Registreerunud: 16.7.2009
Asukoht: Rapla
Kasutaja on eemal
|
|
Mille vastuseks?
Mällu jätmise all mõtled mida? Et unset ei tööta ehk selline kood prindib "tere"?
| Kood: | | <?php
$muutuja = 'tere';
unset($muutuja);
echo $muutuja;
?> |
|
|
0 |
|
andrusny
Noor toru

Registreerunud: 20.11.2009
Kasutaja on eemal
|
|
|
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.
|
[Muudetud: 22.12.2010 andrusny]
|
|
0 |
|