Delikat problem med formulär

PHP

6 svar · 214 visningar · startad av oelbal

Medlem sedan jan. 20014 973 inlägg
Trådstart#1

Låt oss säga att jag har kanske 10 olika formulär på en sida, alla med olika antal variabler att skicka. All data från dessa forumlär skall sedan, oberoende på antal satta varibaler, tas emot av en funktion.

Sedan skall funktionen kolla _ALLA_ satta variabler som skickats, namnen vet vi inte, utan allt som kommer från $HTTP_POST_VARS skall gås igenom med htmlspecialchars().

Hur kan detta se ut?

Medlem sedan mars 20007 896 inlägg
#2

Det går inte, då måste du ha ett gigantiskt formulär. Endast den data i nuvarande formulär skickas, så det är omöjligt att ta emot från de andra formulären.

Eller så förstod jag dig fel?

Medlem sedan jan. 20014 973 inlägg
#3

Eller så förstod jag dig fel?

Ja ;)

Vad jag söker är en funktion som kan kolla allt som skickas, vare sig det är 4,5 eller 6 variabler. Från vilket formulär som helst på min sida.

Typ bara som en generell funktion som filtrerar bort all skit som elaka användare kan tänkas skicka...

Kanske en vag förklaring, men hinner inte skriva mer nu...

Medlem sedan mars 20007 896 inlägg
#4

Ah, då gör man så här:

while ( list ( $nyckel, $värde ) = each ( $HTTP_POST_VARS ) ) { // Alternativt $_POST
    // I $nyckel hamnar fält-namnet
    // I $värde hamnar dess värde
    $värde = htmlspecialchars ( $värde );
}

Hur man löser så att man vet från vilket formulär som det skickades ifrån vet jag inte, jag känner på mig att det inte går. Du kan ju alltid lägga in värdet i ett hidden-field i varje formulär.

Medlem sedan maj 20001 953 inlägg
#5

Jikes :l

Foreach blir renare, enligt mig:

foreach($HTTP_POST_VARS as $nyckel => $värde) { // Alternativt $_POST
    // I $nyckel hamnar fält-namnet
    // I $värde hamnar dess värde
    $värde = htmlspecialchars ( $värde );
}

Dock blir det ju precis samma resultat.

Medlem sedan jan. 20014 973 inlägg
#6

Tack! Jag var inne på SPIN's lösning, men fick det inte att fungera tillfredställande. :)

Medlem sedan jan. 20014 973 inlägg
#7

Löste det nu själv, på ett i mitt tycke, ännu bättre sätt, som jag tror funkar...

while ($each_var = each($HTTP_POST_VARS))
{
  $res = htmlspecialchars($each_var[1]);
}

MEN, istället upptäckte jag att htmlspecialchars() inte fungerar som det skall. Enligt manualen skall både ' och " göras om till & #039; respektive & quot;, men jag får istället /' och /". Vad kan detta bero på?

[r] stavfel

[Redigerat av oelbal den 12 jan 2002]

266 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)