webForumDet fria alternativet

session_start tar bort sparad formulärdata när man går tillbaka

PHP

4 svar · 799 visningar · startad av Janosz

Medlem sedan nov. 20074 inlägg
Frågan#1

Hej

Har en php sida med session_start med ett POST-formulär.

Undrar hur man kan göra för att spara formulärdata när man går tillbaka till sidan pga att man missat ett obligatoriskt fält eller liknande.

Det funkar utan session_start men tyvärr måste jag ha kvar den pga inloggningen.

Här är min kod:

<?php 
	session_start();
	
	
	$ip = $_POST['ip'];
$httpref = $_POST['httpref'];
$httpagent = $_POST['httpagent'];
$visitor = $_POST['visitor'];
$visitormail = $_POST['visitormail'];
$notes = $_POST['notes'];
$attn = $_POST['attn'];

if (eregi('http:', $notes)) {
die ("Gör inte om detta!! <br><br><a href='javascript:history.go(-1)'>Tillbaka</a>");
}
if(!$visitormail == "" && (!strstr($visitormail,"@") || !strstr($visitormail,".")))
{
echo "<br><font color=#ff0000>Ange en giltig epost-adress...</font>\n";
$badinput = "<br><br>\n";
echo $badinput;
die ("<br><br><a href='javascript:history.go(-1)'>Tillbaka</a>");
}

if(empty($visitor) || empty($visitormail) || empty($notes )) {
echo "<br><br><font color=#ff0000>Gå tillbaka - fyll i samtliga fält</font>\n";
die ("<br><br><a href='javascript:history.go(-1)'>Tillbaka</a>");
}

$todayis = date("l, F j, Y, g:i a") ;

$attn = $attn ;
$subject = $attn;

$notes = stripcslashes($notes);

$message = " $todayis [EST] \n
Ärende: $attn \n
Meddelande: $notes \n
Från: $visitor ($visitormail)\n
IP-adress = $ip \n
Webbläsare: $httpagent \n
";

$from = "From: $visitormail\r\n";

mail("info@mindomän.se", $subject, $message, $from);

?>

<p align="center">

Tack för ditt mejl <i><?php echo $visitor ?> ( <?php echo $visitormail ?> )</i>
<br />
<br />

<b>Meddelande:</b><br />
<?php $notesout = str_replace("\r", "<br/>", $notes);
echo $notesout; ?>
<br />
<br />
<br />
<?php echo "Vi svarar dig så fort som möjligt..." ?>

<br /><br />
<a href="kontakta.php">Tillbaka </a>
</p>
<?php

$ipi = getenv("REMOTE_ADDR");
$httprefi = getenv ("HTTP_REFERER");
$httpagenti = getenv ("HTTP_USER_AGENT");

?>

<form method="post" action="sendeail.php">

<input type="hidden" name="ip" value="<?php echo $ipi ?>" />
<input type="hidden" name="httpref" value="<?php echo $httprefi ?>" />
<input type="hidden" name="httpagent" value="<?php echo $httpagenti ?>" />

<table border="0" bgcolor="#ececec" cellspacing="5">
<tr>
<td>Namn:*</td><td><input type="text" size="30" name="visitor"></td></tr>
<tr>
<td>E-post:*</td><td><input type="text" size="30" name="visitormail"></td></tr>
<tr>
<td valign="top">Meddelande:*</td><td><textarea name="notes" rows="6" cols="30"></textarea></td></tr>

<input type="hidden" name="attn" value="kontaktformulär" />
<tr><td>&nbsp;</td><td><input type="submit" value="Skicka"></td></tr>
</table>
</form>
Medlem sedan mars 20041 505 inlägg
#2

Jag hade själv detta problem förut och skapade då en tråd om detta:
http://www.webforum.nu/showthread.php?t=143847
Även denna tråd behandlar ämnet lite:
http://www.webforum.nu/showthread.php?t=157221

Medlem sedan nov. 20074 inlägg
#3

wow! Jag har verkligen letat överallt och sett en massa krångliga förslag till liknande grejer.

Men denna tråd Troxy tipsade mig om löste allt hur enkelt som helst!

Det är bara att sätta session_cache_limiter(0); precis innan session_start !!!
Sedan är det klart!
Tack för hjälpen!

Medlem sedan mars 20041 505 inlägg
#4

Varsågod.
Men man ska tänka på att session_cache_limiter(0); inte är helt smärtfri.
Det kan skapa andra cache-relaterade problem, exempelvis om man har en session-styrd inloggning.
Om användaren klickar på "Logga ut" så kan det hända att det fortfarande ser ut som att man är inloggad.
Det verkar vara en balansgång att få cache att fungera tillfredsställande.

Medlem sedan feb. 200230 inlägg
#5

Det är (tycker jag personligen) skönare om du sätter value="$visitormail" på inputsen.
Så slipper man backa. Ge t.ex $err[] värdet "Ogiltig e-post" o.s.v, kolla sedan om is_array($err), isf loopa ut felmeddelande/n.

285 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
152 ms — ändringar (db)