Er der i PHP en funktion mage til
JavaScrpts return false ?
Jeg er ved at lave en kontaktformular,
hvor action er
"<?php echo $_SERVER["PHP_SELF"]; ?>"> .
I formularen har jeg et antispam-tjekfelt,
hvor brugeren skal indtaste noget bestemt
for at formularindholdet bliver afsendt.
Indholdet tjekkes med PHP, og hvis det ind-
tastede ikke er korrekt ryddes alt indhold,
og indeholdet sendes ikke.
Kan jeg g�re noget for at undg� at hele for-
mularen bliver ryddet ved forkert indtastning
- formularen skal til geng�ld ryddes (som
normalt) hvis alle felter er udfyldt korrekt,
og der er klikket p� submit ?
Skal man der over i noget med session, eller
hvad g�r man der?
Alt sker i samme fil (bortset fra JavaScript
og CSS, der bliver hentet ind linket til eksternt).
P� forh�nd tak.
Mvh. Martin
> Er der i PHP en funktion mage til
> JavaScrpts return false ?
Ja da. Det kan laves p� flere m�der afh�ngigt af hvad du har brug for:
return false;
return 0;
return '';
return NULL;
eller bare
return;
hvis du i virkeligheden slet ikke har brug for en returv�rdi.
> I formularen har jeg et antispam-tjekfelt,
> hvor brugeren skal indtaste noget bestemt
> for at formularindholdet bliver afsendt.
> Indholdet tjekkes med PHP, og hvis det ind-
> tastede ikke er korrekt ryddes alt indhold,
> og indeholdet sendes ikke.
> Kan jeg g�re noget for at undg� at hele for-
> mularen bliver ryddet ved forkert indtastning
Ja. Lad v�re med at rydde den, eller ryd kun udvalgte felter hvis det er det der �nskes. Jeg forst�r ikke problemet.
> - formularen skal til geng�ld ryddes (som
> normalt) hvis alle felter er udfyldt korrekt,
> og der er klikket p� submit ?
Det vil jeg frar�de. Jeg synes at det mest brugervenlige er at
lade indholdet st�. Ellers tror man at man er kommet til at
trykke slet eller p� anden m�de v�lge en slettefunktion.
> Skal man der over i noget med session, eller
> hvad g�r man der?
Bruger du ikke allerede session? Det er du da n�dt til hvis du
laver en formular der kalder sig selv, og det skal v�re brugervenlig.
Men det er m�ske det der er problemet?
En formular uden session bliver totalt t�mt n�r man genhenter siden.
N�r jeg laver en formular med selvhenter (!), s� er principopskriften denne
if (isset($_POST['send']) {
$_SESSION['navn]=$_POST['navn'];
}
// l�ngere nede inde i formularen (og inde i en PHP-echo-kommando):
<input type='text' size='40' name='navn' value='$_SESSION['navn]'>
Hvis den ikke st�r inden i en echo-stribe, m� man skrive:
<input type='text' size='40' name='navn' value='<?php echo $_SESSION['navn]; ?>'>
Den opskrift sikrer at det som brugeren har skrevet i feltet, bliver st�ende
lige til han �ndrer det eller lukker sin browser. Det �ndres ikke ved en
genhentning af siden.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
> Kan jeg g�re noget for at undg� at hele for-
> mularen bliver ryddet ved forkert indtastning
> - formularen skal til geng�ld ryddes (som
> normalt) hvis alle felter er udfyldt korrekt,
> og der er klikket p� submit ?
Den almindelige brugervenlige metode, n�r man p� serveren opdager, at
klienten har udfyldt noget forkert, er at udfylde felterne igen med det,
som brugeren har sendt.
F.eks. med et tekstfelt:
<input type="text" name="navn" value="<?php echo isset($_POST['navn']) ?
htmlspecialchars($_POST['navn']) : '' ?>" />
- evt. kan man ogs� fremh�ve feltet med en farve og/eller skrive en
advarsel.
M.v.h.
Jonathan
--
Er din email vigtig? Er du tr�t af, at din hjemmeside er nede?
Stabilt webhotel p� redundant setup med daglig backup.
POP3, IMAP, PHP, JSP, Java, Perl, Python, Telnet, SSH, Cron-jobs m.v.
http://www.jsp-hotel.dk/
Mange tak for jeres kommentarer, l�sningsforslag
og henvisninger. Jeg m� have kigget grundigt p�
det I har skrevet, og efterf�lgende have rettet
min formluar.
Mvh. Martin
Jonathan Stein skrev: