Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

PHP - invoervelden controleren

Anoniem
None
10 antwoorden
  • Hallo,

    Een tijdje terug heb ik wat geëxperimenteerd met php.
    Nu had ik een inlog scriptje gemaakt enzo, maar daar liep ik tegen 2 grote manco's aan.
    Je kunt namelijk velden leeg laten, wat natuurlijk niet de bedoeling is en je kunt html gebruiken…iets wat helemaal niet de bedoeling is ! :lol: .

    Nu heb ik al tijden gezocht naar een oplossing die niet al te ingewikkeld is.
    Ik dacht dat ik met addslashes kon voorkomen dat mensen html code gingen invoeren, maar dat heeft niet het gewenste effect.

    Wat zijn handige mannieren in php om te controleren dat de input-velden niet leeg zijn en niet uit html-code bestaan ?
  • Zie: http://forum.computertotaal.nl/phpBB2/viewtopic.php?p=802137
  • Oei, die had ik niet gezien :oops: .

    Dat is idd wel een handigheidje, gewoon de lengte van de string controleren.

    Hoe kan ik echter voorkomen dat er html en dergelijke worden ingevoerd ?
    Moet ik daar controleren op tekens als de '<' en '>' of is er in php een functie die daar mee afrekent ?

    Nu kunnen ze namelijk html invoeren en bij het inlogveld zouden ze een sql query kunnen maken.
    Dat heb ik nu tijdelijk gefixt door geen spatie toe te staan, maar dat is toch niet zo elegant…
  • Probeer dit eens:
    [code:1:cb89f14a12]
    <?php
    reset($_POST);

    while ( list($field, $value) = each($_POST) )
    {
    if ( empty($value) )
    {
    print "Het veld '" . $field . "' is leeg!<br>";
    }

    // Hier halen we alle html tags uit de $value
    $_POST[$field] = strip_tags($value);
    $HTTP_POST_VARS[$field] = strip_tags($value);
    }
    ?>
    [/code:1:cb89f14a12]

    Vic
  • [quote:0ac12d9ec9="bvvelde"]en bij het inlogveld zouden ze een sql query kunnen maken.[/quote:0ac12d9ec9]

    wel dat hangt er vanaf.
    als je op deze manier user input in queries behandeld:
    [code:1:0ac12d9ec9]$sql = "SELECT *
    FROM users
    WHERE username = '".$username."'";[/code:1:0ac12d9ec9]
    waarin username de userinput is, als met trim en vanalles behandeld en er voor zorgt dat alle quotes worden escaped in de userinput ben je al een stuk veiliger.

    ik meen dat magic quotes gpc standaard aan staat en dus alle quotes uit $_POST en $_GET escaped maar om zeker te zijn kun je een functie zoals deze gebruiken:

    http://www.php.net/get-magic-quotes-gpc#36478
  • Mijn 'opschoonfunctie' <met dank aan Annie>[code:1:21620f4938] function opschonen($variabel)
    {
    $variabel = trim($variabel); //spaties verwijderen rechts en links
    $variabel = quotemeta($variabel); //quotes omzetten
    $variabel = addslashes($variabel); //slashes toevoegen
    $variabel = htmlspecialchars($variabel); //html filteren

    return $variabel;
    }[/code:1:21620f4938]
  • @johnny: correct me if im wrong maar als magic quotes gpc aan staat en de gebruiker als invoer iets met quotes invoerd wordt t dubbel ge-escaped…

    magic quotes in PHP zijn een vrij irritant en hopelijk doen ze er nog eens een keer wat aan :(
  • Bedankt, het werkt nu voor zover ik kan nagaan :D .

    Ja, zelf ben ik net begonnen om php een beetje te leren kennen en ik snap ook nog niet veel van dat quote gedoe.
    De ene keer dit en dan weer dat…das toch wel wat anders in pascal ;)
  • [quote:6dbc40a001="Jakobvk"]@johnny: correct me if im wrong maar als magic quotes gpc aan staat en de gebruiker als invoer iets met quotes invoerd wordt t dubbel ge-escaped…

    magic quotes in PHP zijn een vrij irritant en hopelijk doen ze er nog eens een keer wat aan :([/quote:6dbc40a001]Je bedoelt dat PHP automatisch " toevoegd? Maar staat dat standaard ook aan??
  • neen dat PHP met magic quotes gpc, die zeker weten aan stond toen ik laats php herinstalleerde, automatisch een " veranderd in "

    [quote:f33c75865b]magic_quotes_gpc boolean

    Sets the magic_quotes state for GPC (Get/Post/Cookie) operations. When magic_quotes are on, all ' (single-quote), " (double quote), \ (backslash) and NUL's are [b:f33c75865b]escaped with a backslash automatically.[/b:f33c75865b] [/quote:f33c75865b]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.