webForumDet fria alternativet

Sparar variabel i formulär men vill inte "Reset"

PHP

12 svar · 1 450 visningar · startad av maweer

Medlem sedan juli 2012123 inlägg
Frågan#1

Detta börja nästan bli lite pinsamt :r
Men...jag kommer på nya funktioner hela tiden till mitt formulär som har varit uppe på tapeten här tidigare, men då uppstår också lite ny fel....huuuu :)

Jag har ett formulär med en captcha och allting fungerar frid och fröjd (tack vare er här på webfourm).
När man skriver fel kod så resetas formuläret.

Detta är väl inget direkt problem, men jag tänka mig att den stackaren som fyller i formuläret och råkar trycka fel kod blir nog rätt så frustrerad när allting resetas och man får börja om från början

Så jag har försökt med att spara min variabel i "inputen"

<input name="name" type="text" value="<?php echo htmlspecialchars($_POST['name']); ?>" />

Detta funkar också kanon, men problem kommer när formuläret har skickats. Då resetas inte formuläret (eller rättaresagt det "laddar" inte om), vilket jag vill att det skall göra

<?
  if(!session_id()) session_start();
 
  header('Cache-control: private, no-cache, must-revalidate');
  header('Expires: 0');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="sv">
  
  <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    <title>Mail</title>
<style type="text/css"> 
<!-- 
body { 
   background-color: #908989;
   background-image:url('form_image/main_bg.gif');
   font-family: Arial; 
   font-size: 13px;
   color: #FFFFFF;
} 
 
fieldset { 
border:0px; 
}
 
input[type="text"] { 
   width: 150px;
   background: #e8e8e8; 
   border: 1px solid #7b7878;
   font-family: Arial; 
   font-size: 13px;
   color: #000000; 
} 
 
textarea{
   width:300px;
   border:1px solid #7b7878;
   background-color:#e8e8e8;
   font-family: Arial; 
   font-size: 13px;
   color: #000000; 
}
 
img
{
vertical-align:middle;
}
 
--> 
</style>
 
</head>
 
<body>
   <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
   <fieldset>
      <label>Mitt namn:<br />
         <input name="name" type="text" value="<?php echo htmlspecialchars($_POST['name']); ?>" /></label><br />
 
                <label>Telefonnummer:<br />
         <input name="tfn" type="text" value="<?php echo htmlspecialchars($_POST['tfn']); ?>" /></label><br />
                      
 
      <label>Min E-mail: <font size="4">*</font><br />
         <input name="visitor_email" type="text" /></label><br />
      
 
      <label>&Auml;mne:<br />
         <input name="subject" type="text" value="Förfrågan om spelning" /></label><br />
      
 
      <label>Meddelande:<br />
         <textarea name="message" rows="7" cols="15"><?php echo htmlspecialchars($_POST['message']); ?></textarea></label><br />
      
 
      <label>Ange koden:
           <input type="text" name="secCode" maxlength="6" style="width:50px" /> <b>&laquo;</b>
             <img src="seccode.php" width="71" height="21" alt="Ange kod" /></label><br />
 
      <input type="submit" value="Skicka" /><input type="hidden" name="do" value="send" /><input type="reset" value="&Aring;terst&auml;ll" />
 
   </fieldset>
   </form>
 
<?php
 
if($_POST['do']=="send") {
   
      $to = "exempel@mail.com";
      $subject = $_POST['subject'];
      $name = $_POST['name'];
      $tfn = $_POST['tfn'];
      $visitor_email = check_input($_POST['visitor_email'], "Ditt mail har inte skickats! Vänligen ange din mailadress");
      $message = $_POST['message'];
      $secCode = check_input($_POST['secCode'], "Ditt mail har inte skickats! Hjälp oss att undvika spam, vänligen ange koden");
      $today = date("d M, Y");
$forminfo =
"Namn: $_POST[name]\n
E-mail: $_POST[visitor_email]\n
Telefonnummer: $_POST[tfn]\n
 
Skickat den: $today\n\n
OBS! Mailet går inte att svara på!\n";
 
      $from = "svara_exempel@mail.com";
      $headers .= "Reply-To: $visitor_email \r\n";
      $headers = "From:" . $from;
      
   }
 
if($_POST['do']=="send") {
   if($_POST['secCode'] == $_SESSION['secCode']) {
      // security code is valid; reset it!
      $_SESSION['secCode'] = rand(100000, 999999);
      
      
      mail($to,$subject,$forminfo,$message,$headers);
 
      echo "$name, ditt mail har nu skickats.";
   } else {
      // wrong security code
      echo '<font style="color: White;"><b>Ditt mail har inte skickats! Hjälp oss att undvika spam, vänligen ange den rätta koden</b></font>';
   }
}
 
function check_input($data, $problem='')
    {
            $data = trim($data);
            $data = stripslashes($data);
            $data = htmlspecialchars($data);
            if ($problem && strlen($data) == 0)
    {
            show_error($problem);
    }
            return $data;
}
 
function show_error($myError)
{
?>   
    <b><?php echo $myError; ?></b><br />
 
<?php
exit();
}
?>
 
    </body>
    </html>

Jag har försökt att lägga in header("Location: form.php");
jag har använt onclick history.go(-1) på submit knappen.
Jag har provat och lagt unset($_POST['xxxxxxxxxxxx']); efter där jag skickar iväg mitt mail i koden. Jag tror jag har provat alla lösningar som jag hittade här.
Men inget av de alternativen funkar tyvärr.

Är det möjligtvis denna som spökar <?php echo htmlspecialchars($_POST['name']); ?> eller är det fel med min header

Som sagt börjar bli lite pinsamt det här, men jag hoppas att ni slipper mig på ett tag sen :P

Medlem sedan aug. 20039 340 inlägg
#2

Först av allt vill jag säga att jag misstänker att du tänker lite fel vad gäller hur koden körs. "Koden som hanterar den inkommande datat ska ligga efter formuläret." Hela sidans kommer ju köras (åminstone) två gånger, först när formuläret först skrivs ut, sedan när det postas.

Det du bör göra är att se till att all kod som hanterar input körs först, innan något skrivs ut. Då vet du på förhand om formuläret lyckades skicka iväg något. Detta sparar du i en variabel, och stoppar utskriften av ifyllda värden om formuläret lyckades skickas iväg. För koden gör ju bara precis vad det står att den ska göra. $_POST['name'] existerar ju oavsett om formuläret lyckades skickas iväg eller inte.

<?
  if(!session_id()) session_start();
 
  header('Cache-control: private, no-cache, must-revalidate');
  header('Expires: 0');
?><?php
$hide_values = false;
 
if($_POST['do']=="send") {
   
      $to = "exempel@mail.com";
      $subject = $_POST['subject'];
      $name = $_POST['name'];
      $tfn = $_POST['tfn'];
      $visitor_email = check_input($_POST['visitor_email'], "Ditt mail har inte skickats! Vänligen ange din mailadress");
      $message = $_POST['message'];
      $secCode = check_input($_POST['secCode'], "Ditt mail har inte skickats! Hjälp oss att undvika spam, vänligen ange koden");
      $today = date("d M, Y");
$forminfo =
"Namn: $_POST[name]\n
E-mail: $_POST[visitor_email]\n
Telefonnummer: $_POST[tfn]\n
 
Skickat den: $today\n\n
OBS! Mailet går inte att svara på!\n";
 
      $from = "svara_exempel@mail.com";
      $headers .= "Reply-To: $visitor_email \r\n";
      $headers = "From:" . $from;
      
   }
 
if($_POST['do']=="send") {
   if($_POST['secCode'] == $_SESSION['secCode']) {
      // security code is valid; reset it!
      $_SESSION['secCode'] = rand(100000, 999999);
      
      
      mail($to,$subject,$forminfo,$message,$headers);
 
      echo "$name, ditt mail har nu skickats.";

      $hide_values = true; // Fyll inte i värden i formuläret om mailet skickades!
   } else {
      // wrong security code
      echo '<font style="color: White;"><b>Ditt mail har inte skickats! Hjälp oss att undvika spam, vänligen ange den rätta koden</b></font>';
   }
}
 
function check_input($data, $problem='')
    {
            $data = trim($data);
            $data = stripslashes($data);
            $data = htmlspecialchars($data);
            if ($problem && strlen($data) == 0)
    {
            show_error($problem);
    }
            return $data;
}
 
function show_error($myError)
{
?>   
    <b><?php echo $myError; ?></b><br />
 
<?php
exit();
}

function get_post_value($which){
   global $hide_values;

   if($hide_values){
      // Formuläret skickades. Skriv ut en tom sträng i formuläret.
      return "";
   }else{
      // Formuläret skickades inte korrekt. Skriv ut valt värde.
      // Flytta htmlspecialchars hit också när vi ändå håller på.
      return htmlspecialchars($_POST[$which]);
   }
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="sv">
  
  <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    <title>Mail</title>
<style type="text/css"> 
<!-- 
body { 
   background-color: #908989;
   background-image:url('form_image/main_bg.gif');
   font-family: Arial; 
   font-size: 13px;
   color: #FFFFFF;
} 
 
fieldset { 
border:0px; 
}
 
input[type="text"] { 
   width: 150px;
   background: #e8e8e8; 
   border: 1px solid #7b7878;
   font-family: Arial; 
   font-size: 13px;
   color: #000000; 
} 
 
textarea{
   width:300px;
   border:1px solid #7b7878;
   background-color:#e8e8e8;
   font-family: Arial; 
   font-size: 13px;
   color: #000000; 
}
 
img
{
vertical-align:middle;
}
 
--> 
</style>
 
</head>
 
<body>
   <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
   <fieldset>
      <label>Mitt namn:<br />
         <input name="name" type="text" value="<?php echo get_post_value('name'); ?>" /></label><br />
 
                <label>Telefonnummer:<br />
         <input name="tfn" type="text" value="<?php echo get_post_value('tfn'); ?>" /></label><br />
                      
 
      <label>Min E-mail: <font size="4">*</font><br />
         <input name="visitor_email" type="text" value="<?php echo get_post_value('visitor_email'); ?>" /></label><br />
      
 
      <label>&Auml;mne:<br />
         <input name="subject" type="text" value="Förfrågan om spelning" /></label><br />
      
 
      <label>Meddelande:<br />
         <textarea name="message" rows="7" cols="15"><?php echo get_post_value('message'); ?></textarea></label><br />
      
 
      <label>Ange koden:
           <input type="text" name="secCode" maxlength="6" style="width:50px" /> <b>&laquo;</b>
             <img src="seccode.php" width="71" height="21" alt="Ange kod" /></label><br />
 
      <input type="submit" value="Skicka" /><input type="hidden" name="do" value="send" /><input type="reset" value="&Aring;terst&auml;ll" />
 
   </fieldset>
   </form>
    </body>
    </html>

Om fomuläret skickas korrekt, sätts $hide_values till true. Detta ger utslag i get_post_value som då förhindrar utskrift av det tidigare ifyllda värdet.

Otestat, men borde funka, minus eventuella misstag som skrivfel.

Medlem sedan juli 2012123 inlägg
#3

Aha :) Jag tror jag hänger med på hur du menar :)
Förstår att det kan klabba till det då, jag har en stor förmåga att göra saker lite bakvänt tyvärr och tänka väldigt klumpigt gällande kod :)

Stort tack!
Fast nu så skrevs alla felmeddelande ut på en helt ny sida vilket resulterade i att man fick backa och när man backade tillbaka så var formuläret tomt.

Förutom Ditt mail har inte skickats! Hjälp oss att undvika spam, vänligen ange den rätta koden som skrevs ut ovanför formen vilket det inte gjorde innan och ...., ditt mail har skickats som skrevs ut nedan för formen vilket ju var klockrent :)

Medlem sedan juni 20019 519 inlägg
#4

spara ditt meddelande i en variabel (se $post_message) och skriv ut den (har gjort ett exempel, flyttat variabler där du använder dom osv):

<?
if(!session_id()) session_start();
header('Cache-control: private, no-cache, must-revalidate');
header('Expires: 0');

$hide_values = false;
$post_message = "";

if($_POST['do']=="send") {
	if($_POST['secCode'] == $_SESSION['secCode']) {
		// security code is valid; reset it!
		$_SESSION['secCode'] = rand(100000, 999999);

		$to = "exempel@mail.com";
		$subject = $_POST['subject'];
		$name = $_POST['name'];
		$tfn = $_POST['tfn'];
		$visitor_email = check_input($_POST['visitor_email'], "Ditt mail har inte skickats! Vänligen ange din mailadress");
		$message = $_POST['message'];
		$secCode = check_input($_POST['secCode'], "Ditt mail har inte skickats! Hjälp oss att undvika spam, vänligen ange koden");
		$today = date("d M, Y");
		$forminfo =
			"Namn: $_POST[name]\n
			E-mail: $_POST[visitor_email]\n
			Telefonnummer: $_POST[tfn]\n
			Skickat den: $today\n\n
			OBS! Mailet går inte att svara på!\n";
		$from = "svara_exempel@mail.com";
		$headers .= "Reply-To: $visitor_email \r\n";
		$headers = "From:" . $from;

		mail($to, $subject, $forminfo, $message, $headers);

		$post_message = "$name, ditt mail har nu skickats.";

		$hide_values = true; // Fyll inte i värden i formuläret om mailet skickades!
	} else {
		// wrong security code
		echo '<font style="color: White;"><b>Ditt mail har inte skickats! Hjälp oss att undvika spam, vänligen ange den rätta koden</b></font>';
	}
}
 
function check_input($data, $problem='')
    {
            $data = trim($data);
            $data = stripslashes($data);
            $data = htmlspecialchars($data);
            if ($problem && strlen($data) == 0)
    {
            show_error($problem);
    }
            return $data;
}
 
function show_error($myError)
{
?>   
    <b><?php echo $myError; ?></b><br />
 
<?php
exit();
}

function get_post_value($which){
   global $hide_values;

   if($hide_values){
      // Formuläret skickades. Skriv ut en tom sträng i formuläret.
      return "";
   }else{
      // Formuläret skickades inte korrekt. Skriv ut valt värde.
      // Flytta htmlspecialchars hit också när vi ändå håller på.
      return htmlspecialchars($_POST[$which]);
   }
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="sv">
<head> 
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
	<title>Mail</title> 
</head>
 
<body>
	<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
		<fieldset>
			<label>Mitt namn:<br />
			<input name="name" type="text" value="<?php echo get_post_value('name'); ?>" /></label><br />
	 
			<label>Telefonnummer:<br />
			<input name="tfn" type="text" value="<?php echo get_post_value('tfn'); ?>" /></label><br />
	 
			<label>Min E-mail: <font size="4">*</font><br />
			<input name="visitor_email" type="text" value="<?php echo get_post_value('visitor_email'); ?>" /></label><br />

			<label>&Auml;mne:<br />
			<input name="subject" type="text" value="Förfrågan om spelning" /></label><br />

			<label>Meddelande:<br />
			<textarea name="message" rows="7" cols="15"><?php echo get_post_value('message'); ?></textarea></label><br />

			<label>Ange koden:
				<input type="text" name="secCode" maxlength="6" style="width:50px" /> <b>&laquo;</b>
				<img src="seccode.php" width="71" height="21" alt="Ange kod" />
			</label><br />
	 
			<input type="submit" value="Skicka" /><input type="hidden" name="do" value="send" /><input type="reset" value="&Aring;terst&auml;ll" />

			<? echo $post_message ?>

		</fieldset>
	</form>
</body>
</html>

den sätts bara till något annat än en tom sträng om du har lyckats med skicka mailet.

Medlem sedan juli 2012123 inlägg
#5

Oh, götte nu stannar alla variabler kvar och mailet resetas efter sändning :)
Tack så jätte mycket!!!

Men, det här är jätte långt över min nivå känner jag, så jag är rädd att jag behöver lite mer hjälp på traven, med felmeddelandena...please, please! :r

Ditt mail har inte skickats! Vänligen ange din mailadress skrivs ut på en helt ny sida, så man får backa
Ditt mail har inte skickats! Hjälp oss att undvika spam, vänligen ange koden skrivs också ut på en helt ny sida
Ditt mail har inte skickats! Hjälp oss att undvika spam, vänligen ange den rätta koden skrivs ut ovanför formuläret

Hur gör man för att alla felmeddelande skriv ut precis under formen, precis som $post_message = "$name, ditt mail har nu skickats."; gör?
För det går väl inte att flytta upp echo $myError dit, då "funktionen" till den ligger nedanför

Mest för att förhoppningsvis lära mig :) Hur funkar det? Är det $post_message = ""; som sparar variablen eller är det som i nitro2k01s inlägg att det är get_post_value som sparar variablen
Här är så mycket nytt, så jag tror jag behöver få det lite förklarat...dvs om någon orkar och vill

Medlem sedan juni 20019 519 inlägg
#6

$post_message är en variabel och i början så har den värdet "" men längre ner i koden så sätter den till det lyckade meddelandet (se if frågan) och om den inte är lyckad så kommer:

<? echo $post_message ?>

skriva ut "", annars kommer meddelandet där den koden är.

show_error($myError) har en exit() och om jag förstå det hela rätt från php så är det samma sak som asp response.end dvs servern slutar att skicka mer data än så, om du nu vill ha meddelandet och sånt, ta bort exit() i koden (i funktionen menar jag nu). dock kommer det inte hjälpa då du har check_input antingen retunera ett värde eller skriver ut meddeladet så logiken där få skriva om lite.

Var funktionen finns i koden är inte samma sak som att den kommer skriva ut den där, det beror helt och hållet på var du anropar din metod.

Detta är sen skrivning och verkligen inte det mest vackra(fungera förmodligen inte heller) men:

<?
if(!session_id()) session_start();
header('Cache-control: private, no-cache, must-revalidate');
header('Expires: 0');

$hide_values = false;
$post_message = "";

if($_POST['do']=="send") {
	if($_POST['secCode'] == $_SESSION['secCode']) {
		// security code is valid; reset it!
		$_SESSION['secCode'] = rand(100000, 999999);

		$to = "exempel@mail.com";
		$subject = $_POST['subject'];
		$name = $_POST['name'];
		$tfn = $_POST['tfn'];
		$visitor_email = check_input($_POST['visitor_email']);
		$secCode = check_input($_POST['secCode']);

		if(isEmpty($visitor_email)) {
			$post_message = "Ditt mail har inte skickats! Vänligen ange din mailadress";
		}
		
		if(isEmpty($secCode)) {
			$post_message = "Ditt mail har inte skickats! Hjälp oss att undvika spam, vänligen ange koden";
		}

		if($post_message == "") {
			$message = $_POST['message'];

			$today = date("d M, Y");
			$forminfo =
				"Namn: $_POST[name]\n
				E-mail: $_POST[visitor_email]\n
				Telefonnummer: $_POST[tfn]\n
				Skickat den: $today\n\n
				OBS! Mailet går inte att svara på!\n";
			$from = "svara_exempel@mail.com";
			$headers .= "Reply-To: $visitor_email \r\n";
			$headers = "From:" . $from;

			mail($to, $subject, $forminfo, $message, $headers);

			$post_message = "$name, ditt mail har nu skickats.";

			$hide_values = true; // Fyll inte i värden i formuläret om mailet skickades!
		}

	} else {
		// wrong security code
		echo '<font style="color: White;"><b>Ditt mail har inte skickats! Hjälp oss att undvika spam, vänligen ange den rätta koden</b></font>';
	}
}

function isEmpty($data) {
	$data = trim($data);
	$data = stripslashes($data);
	$data = htmlspecialchars($data);
	return strlen($data);
}
function check_input($data, $problem='') {
	$data = trim($data);
	$data = stripslashes($data);
	$data = htmlspecialchars($data);
	return $data;
}

function show_error($myError) {
	return "<b>".$myError."</b><br>";
}
function get_post_value($which){
	global $hide_values;
	if($hide_values){
		// Formuläret skickades. Skriv ut en tom sträng i formuläret.
		return "";
	}else{
	// Formuläret skickades inte korrekt. Skriv ut valt värde.
	// Flytta htmlspecialchars hit också när vi ändå håller på.
	return htmlspecialchars($_POST[$which]);
	}
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="sv">
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>Mail</title> 
</head>

<body>
<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
    <fieldset>
        <label>Mitt namn:<br />
        <input name="name" type="text" value="<?php echo get_post_value('name'); ?>" /></label><br />
 
        <label>Telefonnummer:<br />
        <input name="tfn" type="text" value="<?php echo get_post_value('tfn'); ?>" /></label><br />
 
        <label>Min E-mail: <font size="4">*</font><br />
        <input name="visitor_email" type="text" value="<?php echo get_post_value('visitor_email'); ?>" /></label><br />

        <label>&Auml;mne:<br />
        <input name="subject" type="text" value="Förfrågan om spelning" /></label><br />

        <label>Meddelande:<br />
        <textarea name="message" rows="7" cols="15"><?php echo get_post_value('message'); ?></textarea></label><br />

        <label>Ange koden:
            <input type="text" name="secCode" maxlength="6" style="width:50px" /> <b>&laquo;</b>
            <img src="seccode.php" width="71" height="21" alt="Ange kod" />
        </label><br />
 
        <input type="submit" value="Skicka" /><input type="hidden" name="do" value="send" /><input type="reset" value="&Aring;terst&auml;ll" />

        <? echo $post_message ?>

    </fieldset>
</form>
</body>
</html>

Vad den kollar är om $post_message är tomt (dvs inga fel, se if frågorna) så kommer mailet skickas och sätta $post_message till det positiva meddeladet, annars bör den visa felmeddelade eller ett tomt meddelade beroende på vad som händer.

Medlem sedan juli 2012123 inlägg
#7

Nu har jag fnulat och testat fram och tillbaka gjort om fixat och donat och jag har varit på väg att ge upp allt för många gånger. Men....nu tror jag att jag har fått till det :)
Det är en liten grej som jag undrar över.

I html 5 så räcker det tydligen med att man skriver required i ett inputfält!
Allt verkar ju kanon och allt verkar funka, men jag blir ändå lite misstänksam när det verkar så här lätt

http://www.html5tutorial.info/html5-required.php

Någon som vet? :)

Ett stort tack till alla som har tagit sig tid och hjälpt mig :)

<?php
if(!session_id()) session_start();
header('Cache-control: private, no-cache, must-revalidate');
header('Expires: 0');

if($_POST['do']=="send") {
    if($_POST['secCode'] == $_SESSION['secCode']) {
        // security code is valid; reset it!
        $_SESSION['secCode'] = rand(100000, 999999);

        $to = "mail.exempel.com";
        $subject = $_POST['subject'];
        $name = $_POST['name'];
        $tfn = $_POST['tfn'];
        $visitor_email = $_POST['visitor_email'];
        $message = $_POST['message'];
        $secCode = $_POST['secCode'];
        $today = date("d M, Y");
        $forminfo =
"Namn: $_POST[name]\n
 E-mail: $_POST[visitor_email]\n
 Telefonnummer: $_POST[tfn]\n
 Skickat den: $today\n\n
 OBS! Mailet går inte att svara på!\n";
        $from = "visitormail.exempel.com";
        $headers .= "Reply-To: $visitor_email \r\n";
        $headers = "From:" . $from;

        mail($to, $subject, $forminfo, $message, $headers);

        $post_message = "<b>$name, ditt mail har nu skickats.</b>";

        $hide_values = true; // Fyll inte i värden i formuläret om mailet skickades!
    } else {
        // wrong security code
        $post_message = '<font style="color: White;"><b>Ditt mail har inte skickats! Hjälp oss att undvika spam, vänligen ange den rätta koden</b></font>';
    }
}

if($_POST['do']=="send") {
    $visitor_email = $_POST['visitor_email'];
if (empty($visitor_email )) {
$post_message = "<b>Ditt mail har inte skickats! Vänligen ange din mailadress</b>";
}
}

function get_post_value($which){
   global $hide_values;

   if($hide_values){
      // Formuläret skickades. Skriv ut en tom sträng i formuläret.
      return "";
   }else{
      // Formuläret skickades inte korrekt. Skriv ut valt värde.
      // Flytta htmlspecialchars hit också när vi ändå håller på.
      return htmlspecialchars($_POST[$which]);
   }
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="sv">
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    <title>Mail</title> 
<style type="text/css"> 
<!-- 
body { 
   background-color: #908989;
   background-image:url('form_image/main_bg.gif');
   font-family: Arial; 
   font-size: 13px;
   color: #FFFFFF;
} 

a {text-decoration: none}

fieldset { 
border:0px; 
}

input[type="text"] { 
   width: 150px;
   background: #e8e8e8; 
   border: 1px solid #7b7878;
   font-family: Arial; 
   font-size: 13px;
   color: #000000; 
} 

textarea{
   width:300px;
   border:1px solid #7b7878;
   background-color:#e8e8e8;
   font-family: Arial; 
   font-size: 13px;
   color: #000000; 
}

img
{
vertical-align:middle;
}

--> 
</style>
</head>
 
<body>
    <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
        <fieldset>
            <label>Mitt namn:<br />
            <input name="name" type="text" value="<?php echo get_post_value('name'); ?>" /></label><br />
     
            <label>Telefonnummer:<br />
            <input name="tfn" type="text" value="<?php echo get_post_value('tfn'); ?>" /></label><br />
     
            <label>Min E-mail: <font size="4">*</font><br />
            <input name="visitor_email" type="text" required /></label><br />

            <label>&Auml;mne:<br />
            <input name="subject" type="text" value="Förfrågan om spelning" /></label><br />

            <label>Meddelande:<br />
            <textarea name="message" rows="7" cols="15"><?php echo get_post_value('message'); ?></textarea></label><br />

            <label>Ange koden:
                <input type="text" name="secCode" maxlength="6" style="width:50px" required /> <b>&laquo;</b>
                <img src="seccode.php" width="71" height="21" alt="Ange kod" />
            </label><br />
     
            <input type="submit" value="Skicka" /><input type="hidden" name="do" value="send" /><input type="reset" value="&Aring;terst&auml;ll" />

            <? echo $post_message ?>

        </fieldset>
    </form>
</body>
</html>
Medlem sedan juni 20019 519 inlägg
#8

Ja, för html5 webbläsare så är kanon... men detta är inte någon som helst verklighet exempelvis detta kommer inte in i IE förrän IE10.

Och om du skall använda dig av HTML5 så använd rätt doctype

Medlem sedan juli 2012123 inlägg
#9

Jaha, så om jag någon fortfarande kör på IE 7 så funkar det inte
Förhoppningsvis så går felmeddelande in då

Medlem sedan juni 20019 519 inlägg
#10

maweer skrev:

Jaha, så om jag någon fortfarande kör på IE 7 så funkar det inte
Förhoppningsvis så går felmeddelande in då

Är ju inte bara IE7 (och även en hel del andra webbläsare som inte har html5) ... det är alla IE som kommer finnas på < windows 8 maskiner, du bör ALLID säkra upp värderna ifrån klienten på servern, ha validering på klientsidan men har alltid en validering på serversidan med (om du nu är intresserad över att man måste validera ditt formulär).

Medlem sedan juli 2012123 inlägg
#11

Okej!
Men, jag har felmeddelande skrivna i php också fall i fall, borde inte dom gå in i fall inte det html5 funkar?

Medlem sedan juni 20019 519 inlägg
#12

testa i ie :P

Medlem sedan juli 2012123 inlägg
#13

Jag har IE8 men kör aldrig på den och där funkade det inte, men då gick felmeddelandena in iaf :)

273 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
148 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)