webForumDet fria alternativet

Hur se vad som skickas via submit?

9 svar · 1 581 visningar · startad av biggles-1

biggles-1Medlem sedan jan. 2005125 inlägg
#1

Hej,

Jag har ett formulär som validerar vid test, men som i skarpt läge ger felmeddelande om att information saknas.

Finns det ett sätt att se/kontrollera hur strängen/informationen ser ut (typ "namnadresspostort ...eller hur det nu ser ut), när det skickas vidare genom submit?

mvh Nils

Nate.AMedlem sedan mars 2006296 inlägg
#2

Med php gör du så här för att kontrollera exakt vad som skickas:

<?php

echo "<pre>";
print_r($_POST);
echo "</pre>"

?>
nitro2k01Medlem sedan aug. 20039 342 inlägg
#3

Det är möjligt att du har gjort något slarvfel. Någon som inte gör att valideringen misslyckas (t ex bortglömt name-attribut på ett element) men ändå gör att data saknas. Kom ihåg att allt valideringen gör är att kolla syntax och struktur på ditt dokument. Valideringen garanterar (i teorin) att sidan funkar lika bra i alla bläddrare, men garanterar inte att sidan funkar som du vill.

biggles-1Medlem sedan jan. 2005125 inlägg
#4

Hej och tack för snabba svar!

När jag lägger php-filen med kod enligt ovan i samma mapp som "problem-filen" får jag följande svar, vilket jag tolkar som att det faktiskt inte finns något i formuläret även om det är array () den visar :-(.

Array
(
)

Har en tråd i under PHP (se tredje inlägget), som jag nu bryter ner i mindre delar om jag skall få någon feed-back :-).

http://www.webforum.nu/showthread.php?t=182858

Själv trodde att det räckte med för att hämta in informationen i formuläret, men uppenbarligen gör det inte det.

<?php echo xxx ?>

Vad missar jag då jag inte ser "skogen för bara träd" just nu.?

Svara gärna i den tråden, då jag checkar av denna som löst!

Tack på förhand. / Nils

nitro2k01Medlem sedan aug. 20039 342 inlägg
#5

För det första, dina PHP-kodtaggar år felaktiga. Öppningstaggen bör, för båst kompatibilitet vara <?PHP och stängningstaggen ska alltid vara ?>.
För det andra, variabler inleds alltid med dollar-tecken.
För det tredje, hela echo-satsen ska avslutas med semikolon.
För det fjärde ska du alltid köra användardata som skrivs ut genom htmlspecialchars, både för att undvika problem om ett fält innehåller t ex ett citationstecken, och för att förhindra attacker där någon lyckas peta in Javascript-kod eller annat.

<?php echo htmlspecialchars(xxx); ?>

För övrigt, skickas formuläret som GET eller POST? Har du ingen method används GET som standard.

biggles-1Medlem sedan jan. 2005125 inlägg
#6

Hej igen,

Är det verkligen 3:e inlägget du läst, då jag inte hänger med i dina svar (inlägg 1 och 2 handlade om samma problem, men annan lösning).

- använder <?php samt ?> ! (<?php finns före case 'payson': i verkligheten)
- variabler inleds väl med $ eller ...
- alla echo-satser är avslutade med semikolon!
- formuläret anger POST som metod!

Hm ... känns som att vi pratar om två olika saker. Vad missar jag?

mvh Nils

GunnarDMedlem sedan juni 20014 290 inlägg
#7

biggles-1 skrev:

När jag lägger php-filen med kod enligt ovan i samma mapp som "problem-filen" får jag följande svar, vilket jag tolkar som att det faktiskt inte finns något i formuläret även om det är array () den visar :-(.

Du skall lägga in koden i den phpfilen som formuläret pekar på, det är till den filen formulärdata skickas till och syns endast där.

biggles-1 skrev:

Själv trodde att det räckte med för att hämta in informationen i formuläret, men uppenbarligen gör det inte det.

Om du kör post metoden så hamnar all formulärdata i arrayen $_POST, har du satt namn på formulärfältet så kan du hämta ut med ex. $_POST['epost'] för att få vad som stod i fältet med namnet epost.

biggles-1 skrev:

Vad missar jag då jag inte ser "skogen för bara träd" just nu.?

Har jag mycket info på sidan så är det enklare att lägga debuginformation i en div med utstickande bakgrund.

ex.

<div style="background-color: #F00"><?php print_r($_POST); ?></div>
biggles-1Medlem sedan jan. 2005125 inlägg
#8

Hej Gunnar,

Tack för klargöranden, då tanken slog mig att jag förmodligen lagt in den fel *ler*.

Vad skall jag ange som "action" för att på enklaste sätt kunna läsa informationen som skickas (helst till skärm eller någon form av logg, men inte mail). Formuläret skickar nämligen informationen till extern sida.

mvh Nils

GunnarDMedlem sedan juni 20014 290 inlägg
#9

Ett enkelt sätt är att istället skicka till en externsida ändra så att du skickar till en egen sida där du skriver ut $_POST variabeln, då kan du se vad ditt formulär skickar utan att du skickar iväg det till den riktiga sidan, sedan när du ser att det verkar riktigt så ändrar du bara så att du skickar till den riktiga sidan igen.

Beroende på vilken webläsare du använder så finns det pluggins som kan hjälpa till att felsöka.

biggles-1Medlem sedan jan. 2005125 inlägg
#10

Hej Gunnar,

Låter som en lösning i helt min smak och så enkel att åtminstone jag inte ens tänkte i de banorna :-).

Med de sagt skapade jag en html-sida som jag la upp på extern server:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<div style="background-color: #FF0000"><?php print_r($_POST); ?></div>
</body>
</html>

Skickar sedan via submit ett befintligt fungerande formulär till den externa sidan ovan.

.. men inget syns! Vet att det är den externa sidan som visas då jag tittar på källkoden och vet att informationen finns, så jag måste sakna något eller .....

Vad missar jag?

Nils

EDIT - YEEESSSS, nu fungerar det och det var jag som tänkte fel!

När jag skickar upp Nate.A kod som extern *.php och inte *.html och anropar den via formuläret fungerar det, och jag ser output´n i webbläsaren. Precis som jag vill!

Hm .. fick inte Gunnars div att fungera vid första försöket, men det löser sig nog *ler*.

TACK Gunnar och Nate.A.

Trevlig helg

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