Jump to content
php.lv forumi

Formas contents


slicer

Recommended Posts

Problēma sekojoša:

Ir ziņu pulicēšanas forma ar dažiem teksta laukiem.

Ir submit poga.

Nospiežam submit pogu, apstrādājam formas datus, attēlojam uz ekrāna pareizības pārbaudei.

Pieņemsim, ka mums tie nepatīk. Spiežam browsera back pogu un ejam atpakaļ, lai šo to izlabotu, bet dati ir pazuduši!

 

Normāli tā tam nevajadzētu būt!

 

Kādēļ tas tā ir!?

Link to comment
Share on other sites

Atkarīgs no pārlūkprogrammas. Būtu labi veidot mājas lapas tā, lai lietotājam nevajadzētu lietot pārlūkprogrammas Forward un Back pogas. Attiecīgi vajadzētu domāt par risinājumu, kurā ir jāspiež nevis pārlūkprogrammas back poga, bet ir vēl viena poga ar kuru var ņemt un pāriet atpakaļ uz labošanas režīmu. Tam obligāti nav jābūt PHP, lai gan tas ir atkarīgs no tava risinājuma.

Link to comment
Share on other sites

Vienkārši taisi post uz to pašu lapu, piem.

echo '<input name="smth" value="'.(!empty($_POST['smth']):htmlspecialchars($_POST['smth']):'').'">';

 

Lai dati paliktu pie back pogas iesaka formai lietot $_GET, kas pats par sevi nav neko labs variants.

Link to comment
Share on other sites

2 Kaklz, papētīju un sanāk, ka, lietojot no viena kompja, dati saglabājas, no cita nē! Gan lietojot IE, gan FF. (?), BTW, es neprasīju kā labāk veidot interfeisu. Vai būtu labāk, ja būtu uzrakstījis šādi: "Spiežot uz pogas, kas realizē pārlūka navigācijas funkciju "Back() ... " ???

 

2 Venom, kādēļ sarežģīt pasauli un neizmantot pareizi to, kas jau ir? Nevajag būvēt Ferrari, ja nepieciešams ir VW. Galvenais ir rezultāts, nevis tas kā tu to realizē. Padomā, kā tu ar savu POST metodi pist*s, ja tev būtu forma ar 50 ievadlaukiem. Tāda metode jāizmanto, tikai tad, ja nav jārealizē atgriešanās uz iepriekšējo formu.

 

Lūdzu sniedziet objektīvus problēmas risināšanas veidus nevis nosauciet alternatīvas vai lietas, kas vispār nav sastītas ar problēmu.

Link to comment
Share on other sites

Lūdzu sniedziet objektīvus problēmas risināšanas veidus nevis nosauciet alternatīvas vai lietas, kas vispār nav sastītas ar problēmu.

Tev Venom sniedza ļoti objektīvu un ar šo problēmu saistītu risinājumu, starp citu.

 

Iespējams tavā gadījumā problēma ir apstāklī, ka ievades formā esi norādījis kaut ko šādu:

<input ... value="" ...>

tādēļ nospiežot Back pogu, laukiem tiek piešķirtas tukšās vērtibas.

Pamēģini tajos inputos nenorādīt vispār value atribūtu. (Ja iet runa par selectiem, tad nenorādi to, kurš option's ir selected).

Bet vispārīgā gadījumā Venom'a variants ir pareizāks, jo ir neatkarīgs no pārlūka realizācijas.

Link to comment
Share on other sites

Muļķības! Uztaisi kaut vai formu ar kaut kādu input lauku, norādi value="", ievadi vērtību, noposto un pēc tam nospied back pogu. Tava vērtība būs tur pat, kur bija!

 

Manā gadījumā ir kaut kāds gļuks ar vērtību kešošanu zināmos apstākļos.

 

Iepriekš jau minēju, ka, lietojot vienu kompi viss ir ok, bet uz cita vērtības pazūd.

Ehh...

Link to comment
Share on other sites

Muļķības! Uztaisi kaut vai formu ar kaut kādu input lauku, norādi value="", ievadi vērtību, noposto un pēc tam nospied back pogu. Tava vērtība būs tur pat, kur bija!

 

Manā gadījumā ir kaut kāds gļuks ar vērtību kešošanu zināmos apstākļos.

Jā, pārbaudīju, tiktiešām tā ir...

 

Iepriekš jau minēju, ka, lietojot vienu kompi viss ir ok, bet uz cita vērtības pazūd.

Ehh...

Un tātad... Kādus secinājumus Tu varētu izdarīt? Es izdarītu tādus, ka dažādi pārlūki uz Back pogas nospiešanu reaģē dažādi (atkarībā no man pašlaik nezināmiem apstākļiem) - tādēļ, ja man ir svarīgi, lai dati nepazustu, nospiežot Back, tad jādomā tāds risinājums, kas būtu maksimāli neatkarīgs no tā, kādu pārlūku izmanto klients.

 

P.S. Kautgan par muļķībām man savus vārdus nosaukt negribētos (-;

Edited by Aleksejs
Link to comment
Share on other sites

2 Venom, kādēļ sarežģīt pasauli un neizmantot pareizi to, kas jau ir? Nevajag būvēt Ferrari, ja nepieciešams ir VW. Galvenais ir rezultāts, nevis tas kā tu to realizē. Padomā, kā tu ar savu POST metodi pist*s, ja tev būtu forma ar 50 ievadlaukiem. Tāda metode jāizmanto, tikai tad, ja nav jārealizē atgriešanās uz iepriekšējo formu.

Arī VW tev nav. Ir tikai rats. Nerakstīts likums - pārluka datiem un funkcionalitātei neuzticēties. Jo ir, piem. arī tādi kas izmanto lynx, pie tam ļoti aktīvi, waps etc, kur datu kešošana klienta līmenī nav realizēta.

 

nekas neliedz iebāzt masīvā post lauku nosaukumus, e.g.

$to_post=array('name','city','street'...);

 

while($tmp=array_shift($to_post))

echo '<br />'.$tmp.' <input name="'.$tmp.'" value="'.(!empty($_POST[$tmp])?htmlspecialchars(stripslashes($_POST[$tmp])):'').'">';

Link to comment
Share on other sites

Nee. taa nav browseru iipatniiba. Straadaa/nestraadaa uz dazhaadiem kompjiem nevis browseriem. Uz abiem kompjiem ir vienaadas IE un FF versijas. Uz viena straadaa uz otra nee... :(

bet tiem pārlūkiem vienādi uzstādījumi līdz detaļai?

vienāds temporary kešs utt.

to garantēt nevar.

Link to comment
Share on other sites

×
×
  • Create New...