Toon posts:

[PHP] en froms

Pagina: 1
Acties:
  • 48 views sinds 30-01-2008

Verwijderd

Topicstarter
Stel, ik heb een form:
code:
1
2
3
<form name="form1" method="post" action="advies.php?target=stap3">
<input type="radio" name="check" value="stap32">
</form>


We komen nu bij stap drie ...
code:
1
2
3
4
5
6
7
8
<form name="form1" method="post" action="advies.php?target=stap4">
[php]
<?
echo "<input type=hidden name=check value='" . htmlspecialchars($_POST['check']) . "'>"; 
?>
[/php]
<input type="radio" name="check" value="stap6">
</form>

Per formulier worden de waardes van alle voorafgaande formulieren meegepost als een hidden waarde.

Tevens wordt elk formulier op de waarde gecontroleerd. Wanneer dit niet correct is, zal het formulier opnieuw verschijnen. Om te zorgewn dat de gebruiker niet alles opnieuw in hoeft te typen, krijgt een invoerregel de waarde die de gebruiker ingevoerd heeft dmv:

code:
1
<textarea name="bezochte_arts" cols="35" rows="3" id="bezochte_arts"><? echo "" . htmlspecialchars($_POST['check']) . ""; ?></textarea>


Nu zijn er twee problemen:
- wanneer iemand het teken " in een form invoerd, crash het form. Dat wil zeggen dat hij niet meer de waardes van het form checkt.
- de waardes worden verkeerd doorgegeven (er komen allemaal // in de waarde)

Er is één overeenkomst, voor allebei de functie worden de php code:

PHP:
1
2
3
<?
value='" . htmlspecialchars($_POST['check']) . "'    // deze code dus: " . htmlspecialchars($_POST['check']) . "
?>

gebruikt.

Weet iemand de oorzaak of een oplossing voor dit probleem?
Bijvoorbeeld het anders weergeven bewaren van de waardes dmv van een andere/aanpassing van de betreffende regel ....

Heb al veel geprobeerd, maar het is nog niet gelukt ...

[ Voor 16% gewijzigd door Verwijderd op 11-02-2003 17:55 ]


Verwijderd

Wat denk je van addslashes?
Anders weet ik het ook niet hoor, zit er misschien nog iets tussen waar geen hmtlspecialchars bij staat?

[ Voor 44% gewijzigd door Verwijderd op 11-02-2003 17:46 ]


Verwijderd

Topicstarter
Nee, maar als je in een form ook maar iets met een " invuld, dan wordt de " omgezet in een heleboel /////

bijv: no"pes wordt --> no//////////////"pes
bijv: "hoi" wordnt --> //////////////"hoi//////////////"

De functie ENT_QUOTES helpt niet ... weet iemand hoe dit op te lossen is?

Verwijderd

Verwijderd schreef op 11 februari 2003 @ 17:43:
Stel, ik heb een form:
code:
1
2
<form name="form1" method="post" action="advies.php?target=stap3">
[...]
:r je bent daar op een hele ranzige manier get-waardes in je post aan het stoppen.
post het het liever gewoon naar action="advies.php" en neem even verderop een hidden input tag op <input type="hidden" name="target" value="stap3">
- wanneer iemand het teken " in een form invoerd, crash het form. Dat wil zeggen dat hij niet meer de waardes van het form checkt.
- de waardes worden verkeerd doorgegeven (er komen allemaal // in de waarde)
schrijf een functie die van een " een " maakt. addslashes heeft geen zin, want dat werk niet bij input velden

Verwijderd

addslashes werkt wel degelijk bij input-velden :)

Je bedoelt waarschijnlijk dat het voor het doorgeven via de url (een GET-var) niet handig is.

Voor POST-vars werkt addslashes perfect :)

[ Voor 60% gewijzigd door Verwijderd op 11-02-2003 20:23 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:19

crisp

Devver

Pixelated

Als magic quotes aanstaat worden POST vars bij het posten automatisch voorzien van slashes; schrijf je die weer terug naar je form, dan zul je dus eerst weer stripslashes moeten doen:
PHP:
1
2
3
4
5
6
7
$blaat = $_POST['blaat'];
if (
if (get_magic_quotes_gpc()) {
  $blaat = stripslashes($blaat);
}
$blaat = htmlentities($blaat);
echo '<input type="hidden" value="'.$blaat.'" />';

de ini setting magic_quotes_sybase overruled trouwens magic_quotes_gpc; deze setting escaped single quotes met een single quote.
Je zou ook deze functie kunnen overwegen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
function remove_magic_quotes(&$x) {
   if (is_array($x)) {
       while (list($key,$value) = each($x)) {
           if ($value) remove_magic_quotes($x[$key]);
       }
   } else if (ini_get('magic_quotes_sybase')) {
       $x = preg_replace("/''/", "'", $x);
   } else if (get_magic_quotes_runtime()) {
       $x = preg_replace("/\\\"/", '"', $x);
   } else if (get_magic_quotes_gpc()) {
       $x = stripslashes($x);
  }
}

en dan
PHP:
1
remove_magic_quotes($blaat);

bron

[ Voor 81% gewijzigd door crisp op 11-02-2003 21:20 ]

Intentionally left blank


  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 23-08 15:30

TheDane

1.618

ik dacht dat voor zulke gevallen de functie urlencode() geschreven was ..

Verwijderd

Topicstarter
Verwijderd schreef op 11 februari 2003 @ 20:13:
[...]
:r je bent daar op een hele ranzige manier get-waardes in je post aan het stoppen.
post het het liever gewoon naar action="advies.php" en neem even verderop een hidden input tag op <input type="hidden" name="target" value="stap3">


[...]
schrijf een functie die van een " een " maakt. addslashes heeft geen zin, want dat werk niet bij input velden
Dat zal niet goed gaan, want ik werk met en swicht. De switch zal wel moeten weten welke functie/stao hij aan moet roepen ... daarvor is die variabele nodig.

Ik zal zo eens even naar de uitleg kijken, maar ik vat hem nog niet helemaal met die magic-gedoe.

Helemaal bovenaan staat de regel, maar hij doet het nog steeds fout :?

Verwijderd

Topicstarter
Met de regel bedoel ik:

@set_magic_quotes(0);

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:19

crisp

Devver

Pixelated

Verwijderd schreef op 12 February 2003 @ 10:38:
Met de regel bedoel ik:

@set_magic_quotes(0);
set_magic_quotes bestaat niet en magic_quotes_gpc kan je niet runtime uitschakelen (dat moet in de ini).
Leesvoer:
http://www.php.net/manual....get-magic-quotes-gpc.php
http://www.php.net/manual...-magic-quotes-runtime.php
http://www.php.net/manual...-magic-quotes-runtime.php

Intentionally left blank


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Zie crisp, want hij heeft helemaal gelijk :)

En waarom haalt men in vredesnaam de forward- en backslash altijd door elkaar :?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1

Dit topic is gesloten.