webForumDet fria alternativet

Problem igen, galna funktioner och sånt...

3 svar · 172 visningar · startad av oelbal

oelbalMedlem sedan jan. 20014 973 inlägg
#1

Nu blir jag galen. Fullständigt.
Detta har varit uppe i en tråd förut, där vi kom fram till en lösning, men det krånglar, så jag skulle vilja ha några spontana förslag på en ny lösning istället.

Jag har ett formulär som skickar ett antal variabler med $HTTP_POST_VARS. Nu vill jag att funktionen kollaVariabler() skall ta emot _ALLA_ $HTTP_POST_VARS och testa dem med htmlspecialchars().
Alltså, som en liten funktion för att filtrera det som elaka användare kan tänkas skicka. Jag skrev ner lite för att illustrera:

<?
if (isset($HTTP_POST_VARS['submit']))
{
kollaVariabler();
}
else
{
  ?>
  <html>
  <body>
  <form action="test3.php" method="post">
  <input type="text" name="var1"><br>
  <input type="text" name="var2"><br>
  <input type="submit" name="submit"><br>
  </form>
  </body>
  </html>
  <?
}

function kollaVariabler()
{
  global $HTTP_POST_VARS;
  while ($each_var = each($HTTP_POST_VARS))
  {
    htmlspecialchars($each_var[1]);
  }
  echo $HTTP_POST_VARS['var1'];
  echo $HTTP_POST_VARS['var2'];
}
?>

Om jag anger <html> och <body> i de båda rutorna så borde sidan echo'a ut & lt; html & gt; osv? Inte heller ' eller " konverteras...
Finns det någon som oooorkar ta sig tid att svara?

[Redigerat av oelbal den 23 jan 2002]

SPiNMedlem sedan mars 20007 896 inlägg
#2

Ah! Du kan inte anropa de globala associativa arrayerna om du vill få dem konverterade. Du får göra en egen global array. Eftersom att du lägger in varje värde från forumuläret i den temporära variabeln på by value-sätt, så kommer inte orginalvärdena att ändras när variablen formateras.

funktion kollaVariabler () {
&nbsp; &nbsp; global $postVärden;

&nbsp; &nbsp; while ( $värde = each ( $HTTP_POST_VARS ) ) {
&nbsp; &nbsp; &nbsp; $postVärden[] = htmlspecialchars ( $värde[ 1 ] );
&nbsp; &nbsp; }
}

Ett tips: Istället för att sätta en variabel till global, så att du kan använda samma variabel överallt, låt funktionen returnera en variabel/array istället. Mycket bättre. :)

------------------
SPiN, bjorne.w@telia.com

-- Wise men talk because they have something to say; fools, because they have to say something. --

oelbalMedlem sedan jan. 20014 973 inlägg
#3

Tack SPiN!

Dina förklaringar slår det mesta, det är alltid skoj att lära sig nått nytt...

SPiNMedlem sedan mars 20007 896 inlägg
#4

Var sin ko! :D

Jag lovar att det är minst lika kul om man lyckas banka lite vett i någon annans huvud också! :D ;)

------------------
SPiN, bjorne.w@telia.com

-- Wise men talk because they have something to say; fools, because they have to say something. --

128 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)