Mine lehekülje lõppu

Prinditav versioon  
Autor: Pealkiri: unset $_POST php-s
Whitedragon
Toru
***

Avatar


Registreerunud: 17.7.2009
Kasutaja on eemal


[*] postitati 21.12.2010 21:35
unset $_POST php-s
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?
Vaata kasutaja profiili
0
Timukas
Moderaator
******

Avatar

Moderaator

Registreerunud: 16.7.2009
Asukoht: Rapla
Kasutaja on eemal


[*] postitati 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.
Vaata kasutaja profiili
0
emmsii
Teenekas toru
****

Avatar


Registreerunud: 18.7.2009
Asukoht: tartu
Kasutaja on eemal


[*] postitati 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.


"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
Vaata kasutaja profiili Vaata kasutaja MSN Messengeri aadressi
0
Timukas
Moderaator
******

Avatar

Moderaator

Registreerunud: 16.7.2009
Asukoht: Rapla
Kasutaja on eemal


[*] postitati 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.
Vaata kasutaja profiili
0
Whitedragon
Toru
***

Avatar


Registreerunud: 17.7.2009
Kasutaja on eemal


[*] postitati 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?

[Muudetud: 22.12.2010 Whitedragon]

[Muudetud: 22.12.2010 Whitedragon]
Vaata kasutaja profiili
0
Timukas
Moderaator
******

Avatar

Moderaator

Registreerunud: 16.7.2009
Asukoht: Rapla
Kasutaja on eemal


[*] postitati 22.12.2010 11:43
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.
Vaata kasutaja profiili
0
andrusny
Noor toru
**

Avatar


Registreerunud: 20.11.2009
Kasutaja on eemal


[*] postitati 22.12.2010 19:41
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'];}
Vaata kasutaja profiili
0
Whitedragon
Toru
***

Avatar


Registreerunud: 17.7.2009
Kasutaja on eemal


[*] postitati 22.12.2010 21:14
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]
Vaata kasutaja profiili
0
Timukas
Moderaator
******

Avatar

Moderaator

Registreerunud: 16.7.2009
Asukoht: Rapla
Kasutaja on eemal


[*] postitati 22.12.2010 21:42
Niimoodi kirjutas: Whitedragon  
huvitav.... saan vastuseks....
esimesel korral:
NULL
teisel korral:
bool(true)

Mille vastuseks?

Niimoodi kirjutas: Whitedragon  
ning ikkagi jätab ta selle mällu (ei kasuta header() funksiooni..)

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; ?>

Vaata kasutaja profiili
0
andrusny
Noor toru
**

Avatar


Registreerunud: 20.11.2009
Kasutaja on eemal


[*] postitati 22.12.2010 22:39

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]
Vaata kasutaja profiili
0

  Mine lehekülje algusse

Ainus õige foorum!
XMB Forum Software © 2001-2009 XMB Meeskond