[PHP]Form field check without post

Pagina: 1
Acties:
  • 847 views

Acties:
  • 0 Henk 'm!

  • UniPer
  • Registratie: April 2003
  • Laatst online: 17-09 11:29
Hi,

Op dit moment heb ik form gemaakt zie: Link
Welke ik nu al een tijdje gebruik maar waar ik niet helemaal tevreden over ben.

Zodra dit form is ingevuld en mensen op 'verstuur' klikken dan gaat een php script (sendeail.php)
het form checken en kijken of:

- Er een geldig mailadres is ingevuld
- De verplichte velden zijn ingevuld
- Er uberhaupt wel iets is ingevuld

Het nadeel is dat zodra dat gebeurd is hij doorgelinkt wordt naar bijv:
http://www.duitsebouw.eu/...correct%20emailadres%20in!

Lekker omslachtig en niet echt mooi, de foutmelding verschijnt vervolgens wel keurig boven het form
alleen is het form gelijk helemaal leeg, dus men kan weer van voren af aan beginnen met invullen.

Wat ik wil is dat het form gewoon ingevuld blijft, je na de check niet doorgelinkt wordt maar
dat er nog steeds een melding boven het form verschijnt met wat er ontbreekt.

Ik hoop dat ik het een beetje duidelijk uit heb kunnen leggen.

Cheers,

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


Acties:
  • 0 Henk 'm!

  • posttoast
  • Registratie: April 2000
  • Laatst online: 11:21
Zoek even naar wat tutorials op het web, want je hebt dit niet heel handig aangepakt. Je wilt niet met een $_GET variabele die boodschap doorgeven, al is het maar omdat ik dan dit kan doen!

Laat sowieso even de PHP code zien die je gemaakt hebt.

[ Voor 9% gewijzigd door posttoast op 28-01-2009 13:23 ]

omniscale.nl


Acties:
  • 0 Henk 'm!

  • UniPer
  • Registratie: April 2003
  • Laatst online: 17-09 11:29
Ok duidelijk, geen idee hoe ik het anders aan moet pakken, hier is de php code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
$ip = $_POST['ip']; 
$httpref = $_POST['httpref']; 
$httpagent = $_POST['httpagent']; 
$visitorname = $_POST['visitor']; 
$visitorloc = $_POST['visitorloc'];
$visitormail = $_POST['visitormail']; 
$notes = $_POST['notes'];
$attn = $_POST['attn'];
$bevestiging = $_POST['opmerking'];


if (eregi('http:', $notes)) {
    die(header("Location: contact.php?msg=LET OP $visitorname: Het is niet toegestaan om directe links in het vraag veld te zetten!"));
}


if(empty($visitorname) || empty($visitorloc) || empty($visitormail) || empty($notes )) {

    die(header("Location: contact.php?msg=LET OP $visitorname: Niet alle velden zijn ingevuld"));
}

if( !strstr($visitormail,"@") || !strstr($visitormail,".") ) {

    die(header("Location: contact.php?msg=LET OP $visitorname: Vul een correct emailadres in!"));
}

$todayis = date("l, F j, Y, g:i a") ;

$attn = $attn ; 
$subject = $attn; 

$notes = stripcslashes($notes); 

$message = "$todayis [EST]
Van: $visitorname ($visitormail)
Woonplaats: $visitorloc
Onderwerp: $attn \n
Bericht: $notes
Vanaf URL : $httpref
IP-Registratie : IP = $ip
";

$from = "From: $visitormail\r\n";

if ( $bevestiging == on ) {
    mail("test@test.nl;$visitormail", $subject, $message, $from);
} else {
    mail("test@test.nl", $subject, $message, $from);
}


die(header("Location: contact.php?msg=Bedankt $visitor! Het bericht is succesvol verzonden!" ));
?>

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 22-09 20:16
Waarom wil je mensen per sé doorsturen naar een andere pagina?

Je kunt het script toch gewoon in de pagina contact.php opnemen, en de velden middels <?php echo $_POST['veldnaam']; ?> terugplaatsen?

[ Voor 1% gewijzigd door mcDavid op 28-01-2009 14:17 . Reden: POST is beter in dit geval ]


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Ik zou iets met 'ajax' doen. Jquery heeft hier een mooie plugin voor: http://malsup.com/jquery/form/. Echter gebruik dit niet als vervanging voor de bestaande controle, maar slechts als toevoeging. Er zijn nl. mensen die JS uit hebben staan en deze beveiliging kan worden omzeild.

Zonder javascript kun je denken aan de variabelen op te slaan als sessievariabele en ze hierna in het form weer uit te lezen. Of je zou iets als PEAR Quickform kunnen gebruiken die dit automatisch voor je afhandelt.

[ Voor 28% gewijzigd door Noork op 28-01-2009 14:00 ]


Acties:
  • 0 Henk 'm!

  • UniPer
  • Registratie: April 2003
  • Laatst online: 17-09 11:29
Je kunt het script toch gewoon in de pagina contact.php opnemen, en de velden middels <?php echo $_GET['veldnaam']; ?> terugplaatsen?
Op deze manier moet de site dan toch alsnog gereload worden en verdwijnen de waardes uit de velden?

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


Acties:
  • 0 Henk 'm!

Verwijderd

UniPer schreef op woensdag 28 januari 2009 @ 14:02:
[...]


Op deze manier moet de site dan toch alsnog gereload worden en verdwijnen de waardes uit de velden?
Ja, nee.

Kijk maar eens wat er gebeurt wanneer je de value tag van een form field invult.

Acties:
  • 0 Henk 'm!

  • Morphine
  • Registratie: Februari 2002
  • Laatst online: 09-09 19:45

Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 22-09 20:16
UniPer schreef op woensdag 28 januari 2009 @ 14:02:
[...]


Op deze manier moet de site dan toch alsnog gereload worden en verdwijnen de waardes uit de velden?
Dat wel, maar die waardes plaats je weer terug met PHP

Acties:
  • 0 Henk 'm!

  • UniPer
  • Registratie: April 2003
  • Laatst online: 17-09 11:29
Je kunt het script toch gewoon in de pagina contact.php opnemen, en de velden middels <?php echo $_POST['veldnaam']; ?> terugplaatsen?
Ik zou eerlijk gezegd ook niet weten hoe ik dat netjes voor elkaar krijg, kun je me misschien op weg helpen?
In PHP ben ik helemaal niet zo thuis, ik heb ook een bestaand script gepakt en deze aangepast.

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Als je niet zo thuis bent in PHP, dan zijn mijn bovenstaande oplossing wellicht wat te hoog gegrepen.

Waarom stuur je niet de variabelen terug naar het form op eenzelfde manier als dat je nu de melding terug stuurt. Dus als een querystring. En dan met $_GET['veldnaam'] uitlezen.

Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
En gelieve ook even uit te zoeken wat XSS precies is en hoe je het kunt voorkomen.

http://www.duitsebouw.eu/...%3C/table%3E%3Cmarquee%3E

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


Acties:
  • 0 Henk 'm!

  • UniPer
  • Registratie: April 2003
  • Laatst online: 17-09 11:29
En gelieve ook even uit te zoeken wat XSS precies is en hoe je het kunt voorkomen.

http://www.duitsebouw.eu/...%3C/table%3E%3Cmarquee%3E
Die is leuk :) Enne...oke...hoe?wat?waar?

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


Acties:
  • 0 Henk 'm!

Verwijderd

UniPer schreef op woensdag 28 januari 2009 @ 14:47:
[...]


Die is leuk :) Enne...oke...hoe?wat?waar?
Google op "cross site scripting"...het komt er op neer dat wanneer je variabelen via de URL (dus via iets.php?dit=dat) meegeeft en dat niet goed beveiligd, mensen daar dingen in kunnen vullen die jij liever niet hebt ;).

Maar dit geldt voor alle user input, dus ook POST waarden, cookies etc.

[ Voor 8% gewijzigd door Verwijderd op 28-01-2009 14:55 ]


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
'uit zoeken wat XSS is' != enkel 'hoe?wat?waar?' neerzetten.
Een beetje actievere houding mag wel. :> Om eerlijk te zijn, op het moment dat je niet zelf kan uitvogelen wat
PHP:
1
echo 'Hello world';
doet, kan je maar beter nooit meer iets met PHP doen en er iemand anders voor betalen.

{signature}


Acties:
  • 0 Henk 'm!

  • UniPer
  • Registratie: April 2003
  • Laatst online: 17-09 11:29
'uit zoeken wat XSS is' != enkel 'hoe?wat?waar?' neerzetten.
Een beetje actievere houding mag wel. Om eerlijk te zijn, op het moment dat je niet zelf kan uitvogelen wat
PHP:

1
<?php
echo 'Hello world';
?>

doet, kan je maar beter nooit meer iets met PHP doen en er iemand anders voor betalen.
Wat is er gebeurd met "al doende leert men"?

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 22-09 20:16
UniPer schreef op woensdag 28 januari 2009 @ 14:20:
[...]


Ik zou eerlijk gezegd ook niet weten hoe ik dat netjes voor elkaar krijg, kun je me misschien op weg helpen?
In PHP ben ik helemaal niet zo thuis, ik heb ook een bestaand script gepakt en deze aangepast.
In dat geval zou ik eens gaan googlen op tutorials, in plaats van klakkeloos iets kopiëren. Als je weet hoe iets werkt, is het veel makkelijker er je eigen draai aan te geven.
Om maar een voorbeeld te geven: http://webbuilding.jasper...orials&pag=php&sub=php_1a
En google helpt je aan zeeën van soortgelijke tutorials.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waar hoort mijn topic?

WEB >> PRG
UniPer schreef op woensdag 28 januari 2009 @ 15:21:
[...]


Wat is er gebeurd met "al doende leert men"?
Niets; dat geldt nog steeds. Maar je kunt niet van ons verwachten dat wij mét je doen en je handje vast gaan houden. Zie ook quickfixes en scriptrequests. We verwachten hier wel een beetje meer eigen inzet en initiatief dan je nu ten toon spreidt (zie ook ons Algemeen beleid en onze Quickstart).

Anyhow, dit is met een beetje basiskennis (doe eens een tutorialletje of 2) prima op te lossen en omdat het tot op heden uitdraait op een 'help! het werkt niet! en nu?"-topic zet ik deze maar dicht.

[ Voor 88% gewijzigd door RobIII op 28-01-2009 15:36 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.