[PHP] POST data opslaan

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • unglaublich
  • Registratie: Augustus 2008
  • Laatst online: 30-03 21:26
Ik heb een aantal PHP pagina's waar gegevens ingevoerd dienen te worden, nu wil het wel eens gebeuren dat de sessie verloopt voordat de gegevens ingevoerd zijn. Ipv de gegevens door te voeren wordt de gebruiker dan geredirect naar de login pagina, maar hierdoor is deze wel alle POST data kwijt. Is er een manier om eerst alle POST data in een array o.i.d. op te slaan voordat de gebruiker opnieuw moet inloggen? (met header('Location:..");)

Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Laatst online: 16:59
is het niet handig om de sessietijd te verlengen? Op het moment dat de sessie verloopt wordt het wel een geklooi om dat weer te koppelen...

Acties:
  • 0 Henk 'm!

  • InfoTracer
  • Registratie: November 2001
  • Laatst online: 19-09 12:39
pagina waarvandaan werd geredirect naar de login pagina ook meesturen en dan post data ook uitlezen.
Mensen laten inloggen en dan redirecten met de post data naar de pagina die je hebt opgeslagen waar ze vandaan kwamen.

Acties:
  • 0 Henk 'm!

  • hellfighter87
  • Registratie: Mei 2008
  • Laatst online: 19-09 14:22
opf gewoon een javascriptje wat de pagina refreshed zodra de session verlopen is? zodat als je een pagina bijvoorbeeld op ne laat staan in de pauze dat hij dan automatisch refreshed en uitgelogd word :P?

Acties:
  • 0 Henk 'm!

  • Spockz
  • Registratie: Augustus 2003
  • Laatst online: 15-09 09:15

Spockz

Live and Let Live

Je raakt de POST gegevens niet zomaar kwijt natuurlijk op het moment dat de sessie is verlopen. Wat je op zo'n moment kan doen is de gegeven postgegevens even tijdelijk in de nieuwe sessie stoppen die is aangemaakt. Doorverwijzen naar de login pagina, dan laten inloggen en vervolgens terug directen naar de pagina waar de gebruiker bezig was en daar alvast de gegevens invullen.

C'est le ton qui fait la musique. | Blog | @linkedin
R8 | 18-55 IS | 50mm 1.8 2 | 70-200 2.8 APO EX HSM | 85 1.8


Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 22:02

krvabo

MATERIALISE!

hellfighter87 schreef op zondag 19 juli 2009 @ 17:18:
opf gewoon een javascriptje wat de pagina refreshed zodra de session verlopen is? zodat als je een pagina bijvoorbeeld op ne laat staan in de pauze dat hij dan automatisch refreshed en uitgelogd word :P?
Nee dan ben je de ingevoerde gegevens ook kwijt. (afgezien van dat het irritant is).
Heel basic kun je het oplossen met een hidden iframe met meta-refresh, die een pagina aanroept met een simpele session_start() en wat output.

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
<?php
$dataArray = array(); // array initialiseren
foreach($_POST as $k => $v)
{
     $dataArray[$k] = $v; // key = naam van je POST invoer veld en value = waarde die de gebruiker had ingevoerd
}
?>

Door bovenstaand voorbeeld toe te passen kun je de gegevens doorsturen in een array en deze meenemen.

EDIT:
Wat je ook kan doen is natuurlijk zorgen dat de gebruiker niet wordt doorverwezen naar de loginpagina, maar dat de gebruiker geen enkele melding krijgt dat hij/zij is uitgelogd. Wanneer de gebruiker dan op submit heeft geklikt, ga je in je if($_SERVER['REQUEST_METHOD'] == 'POST') kijken of de gebruiker nog ingelogd is of niet.
Als de gebruiker nogsteeds is ingelogd, gewoon verder gaan.
Als de gebruiker niet meer is ingelogd, data in de array stoppen volgens bovenstaand voorbeeld en alsnog doorsturen naar loginpagina. (Dit werkt ook met sessies, zoals Spockz aangaf)

[ Voor 47% gewijzigd door Verwijderd op 19-07-2009 17:29 ]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 01:20

MueR

Admin Tweakers Discord

is niet lief

@BartDongelmans:
Whut? Dat lost het probleem niet op hoor. Je zult het in een sessie of DB op moeten slaan, en dan kan je net zo goed direct $_POST opslaan, dat is immers ook gewoon een array (wel filteren uiteraard).

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

Verwijderd

Direct opslaan zou nooit gaan, immers de gebruiker is uitgelogd dus data kan niet aan e.e.a. gekoppeld worden in database, immers je beschikt niet meer over een userid. (die waarschijnlijk in een session was opgeslagen)

Acties:
  • 0 Henk 'm!

  • Spockz
  • Registratie: Augustus 2003
  • Laatst online: 15-09 09:15

Spockz

Live and Let Live

Nee, maar op het moment dat een sessie intussen is verlopen zal er bij een volgende POST of GET weer een nieuwe sessie worden aangemaakt. Als je vervolgens dan bij deze sessie de informatie opslaat, dan heb je die bij het inloggen weer bij de hand. (Voorop gesteld dat de gebruiker nu niet weer zijn sessie laat verlopen.)

C'est le ton qui fait la musique. | Blog | @linkedin
R8 | 18-55 IS | 50mm 1.8 2 | 70-200 2.8 APO EX HSM | 85 1.8


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Toch eens kijken naar een eigen sessionhandler wellicht? Dan hoef je nooit meer last te hebben van verlopende sessies (tenzij iemand zelf een te korte timeout tijd aangeeft natuurlijk).

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
krvabo schreef op zondag 19 juli 2009 @ 17:24:
[...]

Nee dan ben je de ingevoerde gegevens ook kwijt. (afgezien van dat het irritant is).
Heel basic kun je het oplossen met een hidden iframe met meta-refresh, die een pagina aanroept met een simpele session_start() en wat output.
Pleister != De Oplossing.

{signature}


Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
Mja gevalletje sessietijd verlengen.
Misschien icm met een sessionhandler maar echt benodigd is dat niet hoor.

Acties:
  • 0 Henk 'm!

  • Joolee
  • Registratie: Juni 2005
  • Niet online
Wat ik heel simnpel doe is niet de sessie laten eindigen maar in de sessie aangeven wanneer de gebruiker voor het laatst zijn wachtwoord heeft ingevoerd. Als dat te lang geleden is krijgt de gebruiker een loginpagina voor zijn neus.
De POST data sla ik dan heel simpel op in de sessie. Ik doe dat serialized maar je kunt ook gewoon de hele array erin plaatsen.

Bij iedere pageview wordt gekeken of de gebruiker is ingelogd en of er postdata in de sessie staat, zo ja wordt deze weer in $_POST geplaatst.

Nu ik eraan denk is het misschien wel handig ook de URL erbij op te slaan zodat de gebruiker niet de POST data krijgt wanneer hij na het inloggen een andere pagina aanroept.

Acties:
  • 0 Henk 'm!

Verwijderd

Je kan het beste de sessie verlengen, anders gewoon iets als:
PHP:
1
$_SESSION['POST'] = $_POST;


Als de sessie waar je op ingelogd bent verlopen is, wordt dit in de nieuwe sessie gezet en kan je dus gebruiken op het moment dat je opnieuw inlogt.

edit: @BartDongelmans:
What... 8)7 Die code hoort in [alg] Slechtste programmeervoorbeelden deel 4... :P

[ Voor 21% gewijzigd door Verwijderd op 20-07-2009 14:45 ]


Acties:
  • 0 Henk 'm!

  • XiniX88
  • Registratie: December 2006
  • Laatst online: 17-09 19:30
http://nl.php.net/session_set_cookie_params

lifetime hoger zetten (en configureer dan ook direct het domein en cookie path mee... wel zo netjes)
Thus, you need to call session_set_cookie_params() for every request and before session_start() is called.
Vergeet dat niet... maar de manual lezen moeten we hier op GOT wel kunnen

[ Voor 40% gewijzigd door XiniX88 op 20-07-2009 14:52 ]

Pagina: 1