WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Hur ta med sig $_POST värdet på bästa sätt i flera steg? (https://www.wn.se/forum/showthread.php?t=1046040)

cantonc 2011-01-21 17:37

Hur ta med sig $_POST värdet på bästa sätt i flera steg?
 
Hej,

Jag kom inte riktigt på någon bra rubrik, men tror den beskriver ganska bra.

Jag håller på och kodar en sida där jag har formulär, det man fyller i skickas med $_POST. Det som är grejen är att det är 4 steg med formulär. 4 olika PHP filer. Jag vill alltså ta med mig värdet från steg 1 till steg 4 på ett bra och säkert sätt.

Det man kan göra är att lägga in gömda (hidden) inputs. Men möjligheten finns då för den som kan att ändra värdet (value) i den gömda inputen.
Ett annat sätt jag kommit på är att göra en Session med informationen.

Nu undrar jag om ni har någon idé hur ni hade gjort. Har jag missat någon bra funktion man kan ha användning av?

Hoppas ni förstod. Tack på förhand!

oloflolof 2011-01-21 17:49

Citat:

Ursprungligen postat av cantonc (Inlägg 20389118)
Hej,

Jag kom inte riktigt på någon bra rubrik, men tror den beskriver ganska bra.

Jag håller på och kodar en sida där jag har formulär, det man fyller i skickas med $_POST. Det som är grejen är att det är 4 steg med formulär. 4 olika PHP filer. Jag vill alltså ta med mig värdet från steg 1 till steg 4 på ett bra och säkert sätt.

Det man kan göra är att lägga in gömda (hidden) inputs. Men möjligheten finns då för den som kan att ändra värdet (value) i den gömda inputen.
Ett annat sätt jag kommit på är att göra en Session med informationen.

Nu undrar jag om ni har någon idé hur ni hade gjort. Har jag missat någon bra funktion man kan ha användning av?

Hoppas ni förstod. Tack på förhand!

Spara det i Sessions är mitt förslag. Då slipper man problemet med att folk kan manipulera värden i gömda fält och man kan på ett snyggt sätt hålla koll på sin data mellan de olika filerna.

Haren 2011-01-21 19:00

Jag skulle förmodligen använda mig utav sessions, det är ett smidigt sätt att skicka information mellan olika filer. Beroende på hur formuläret ser ut så skulle du kunna använda dig av $_GET också men då kan man ju ändra värdena genom URL:en.

FredrikNas 2011-01-21 19:20

Citat:

Ursprungligen postat av cantonc (Inlägg 20389118)
Hej,

Jag kom inte riktigt på någon bra rubrik, men tror den beskriver ganska bra.

Jag håller på och kodar en sida där jag har formulär, det man fyller i skickas med $_POST. Det som är grejen är att det är 4 steg med formulär. 4 olika PHP filer. Jag vill alltså ta med mig värdet från steg 1 till steg 4 på ett bra och säkert sätt.

Det man kan göra är att lägga in gömda (hidden) inputs. Men möjligheten finns då för den som kan att ändra värdet (value) i den gömda inputen.
Ett annat sätt jag kommit på är att göra en Session med informationen.

Nu undrar jag om ni har någon idé hur ni hade gjort. Har jag missat någon bra funktion man kan ha användning av?

Hoppas ni förstod. Tack på förhand!

Den här posten hör hemma i forumdelen "serversidans teknologier"

tartareandesire 2011-01-21 19:20

Citat:

Ursprungligen postat av Haren (Inlägg 20389129)
Jag skulle förmodligen använda mig utav sessions, det är ett smidigt sätt att skicka information mellan olika filer. Beroende på hur formuläret ser ut så skulle du kunna använda dig av $_GET också men då kan man ju ändra värdena genom URL:en.

På vilket sätt är $_GET bättre än $_POST? :)

Instämmer i kören, är bra för statistik och studier av användarnas beteende.

cantonc 2011-01-21 19:50

Okej då tar jag och använder sessions. Stort tack för snabba svar.

studiox 2011-01-21 20:38

Sessions är klart det bästa, du kan få en liten kodsnutt här, kanske hjälper dig.

Att placera längst ned på sidan:

<? $_SESSION[serialized] = base64_encode(serialize($unserialized_array_init)) ; ?>

Placera höst upp:
$unserialized = unserialize(base64_decode($_SESSION[serialized]));

if (is_array($unserialized) == FALSE && is_array($_POST[firstform]) == TRUE)
{
$unserialized_array_init = $_POST[firstform];
}
elseif (is_array($unserialized) == TRUE && is_array($_POST[firstform]) == TRUE)
{
$unserialized_array_init = $_POST[firstform] + $unserialized ;
}
else
{
$unserialized_array_init = $unserialized ;
}

Firstform är bara namnet på min form, använder alltid arrays i forms.

Du kan alltså använda unserialized_array_init[ArrayFormNamn] i ditt script sen för att hämta data oavsett vilket "steg" man befinner sig i. Denna "lägger bara till" data. Går säkert att göra på enklare sätt också.

dAEk 2011-01-22 10:04

Om ni använder sessioner: hur löser ni problemen som kan uppstå när/om användaren öppnar två flikar med samma sida och fyller i formuläret parallellt?

oloflolof 2011-01-22 10:06

Citat:

Ursprungligen postat av dAEk (Inlägg 20389192)
Om ni använder sessioner: hur löser ni problemen som kan uppstå när/om användaren öppnar två flikar med samma sida och fyller i formuläret parallellt?

Finns det någon anledning att man skulle vilja skriva in två samtidigt? Annars kan man väl sätta en boolvariabel som kollar så man inte fyller i formuläret, annars ploppar det upp ett felmeddelande.

studiox 2011-01-22 14:27

Citat:

Ursprungligen postat av dAEk (Inlägg 20389192)
Om ni använder sessioner: hur löser ni problemen som kan uppstå när/om användaren öppnar två flikar med samma sida och fyller i formuläret parallellt?

Det spelar väl ingen roll? Om du fyller i första sidan i första tab'en och går sedan till forumlär 2 så skriver man ju över detta.

Det går ju också att lägga in en RANDOM så att det blir olika sessions.

Typ input type=text name=Form[RAND()][FirstName]


Alla tider är GMT +2. Klockan är nu 14:08.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson