- coach
- Medlem ●
- Göteborg
- 2018-12-03 15:14
I ditt formulär har du enctype=”text/plain” vilket inte stöds av php. Ändra till ”application/x-www-form-urlencoded”, eller ta bort enctype helt då urlencoded är default, istället så borde det fungera!
Mer info: https://stackoverflow.com/questions/7628249/m...
Jag är helt ny på php programering. Jag har försökt hitta information vad som är fel, men jag lyckas inte.
Jag får fel som säger att formuläret saknar all information. Om jag tar bort kontrollen så får jag ett mail bara med subjekt & vilken mail det kommer ifrån.
Varför läser php skriptet inte formulär datan? Vad har jag missat som gör att inte informationen förljer med?
tacksam för hjälp & svar.
//##Formuilär datan i html filen##//
<form name="kontaktform" id="kontaktform" method="post"
action="formmail.php" enctype="text/plain">
<fieldset>
<h2>Meddelande</h2>
<label for="namn">namnn:</label> <br />
<input name="namn" id="fnamn" class="input_text"
type="text" /> <br />
<label for="email">E-postadress:</label> <br />
<input name="email" id="email" class="input_text"
type="text" /> <br />
<label for="phone">Telefonnummer:</label> <br />
<input name="phone" id="phone" class="input_text"
type="number" /> <br />
<label for="message">Meddelande:</label> <br />
<textarea name="message" id="message" cols="30"
rows="5"></textarea> <br />
<input name="skicka" id="skicka" class="skicka_knapp"
value="Skicka meddelandet" type="submit" /> </fieldset>
</form>
//## PHP programeringen##//
<?php
// Ger info om missad information/data
$errors = array();
// kontrollera om ett Förnamn angivits
if (!$_POST["namn"])
$errors[] = "- NAMN";
// kontrollera om ett TELEFONNUMMER angivits
if (!$_POST["phone"])
$errors[] = "- TELEFONNUMMER";
// kontrollera om ett TELEFONNUMMER angivits
$emailcheck = $_POST["email"];
if(!preg_match("/^[a-z0-9\å\ä\ö._-]+@[a-z0-9\å\ä\ö.-]+\.[a-z]{2,6}$/i", $emailcheck))
$errors[] = "- din E-POSTADRESS saknas eller är felaktig";
// kontrollera om ett Meddelande angivits
if (!$_POST["message"])
$errors[] = "- inget MEDDELANDE har skrivits!";
// om felaktig information finns visas detta meddelande
if (count($errors)>0){
echo "<h1>Felmeddelande:</h1>
<strong>Följande information måste anges innan du kan skicka formuläret:</strong><br /><br>
";
foreach($errors as $fel)
echo "$fel <br />";
echo "<br />Ange den information som saknas och skicka formuläret igen. Tack! <br />";
echo "<a href='javascript:history.go(-1)'>klicka här för att komma tillbaka till formuläret</a>";
}
else {
// formuläret är korrekt ifyllt och informationen bearbetas
$to = "[email protected]";
$from = $_POST["email"];
$subject = 'Kontakt från webbplatsen!';
$fnamn = $_POST["namn"];
$enamn = $_POST["phone"];
$message = $_POST["message"];
########################################################################
// HEADERS för innehållstyp och textkodning
$headers = "Content-Type: text/plain; charset=utf-8 \r\n";
$headers .= "From:".$fnamn." ".$enamn." <".$from.">"."\r\n";
$headers .= "MIME-Version: 1.0 \r\n";
########################################################################
// Mailfunktionen som skickar bekräftelsen
if (mail($to, $subject, $message, $headers))
header("Location: /tack.html");
else
header ("Location: /fel.html");
}
?>
Hoppas någon kan hjälpa mig med detta förhoppningsvis lilla problem