Ingen data skickas med i PHP protokollet

Tråden skapades och har fått 7 svar. Det senaste inlägget skrevs .
1

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\å\ä\ö._-][email protected][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

Fixade till kod-taggar. /mod

Senast redigerat 2018-12-03 16:36
  • 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...

Ursprungligen av rugbyspelare:

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\å\ä\ö._-][email protected][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

Nu funkar post skriptet och jag får ett mail.

Dock finns inte telefonnummret med, men resten av infon kommer i mailet.
Jag skulle även vilja få med all info uppställt i mailet så det blir lätt överskodligt.

Sen är det problem med åäö i meddelande fältet. Det blir konstiga ttken så den kodar inte det rätt.

  • Medlem
  • Sollentuna
  • 2018-12-04 09:21
Ursprungligen av rugbyspelare:

Nu funkar post skriptet och jag får ett mail.

Dock finns inte telefonnummret med, men resten av infon kommer i mailet.
Jag skulle även vilja få med all info uppställt i mailet så det blir lätt överskodligt.

Telefonnumret tilldelas variabeln $enamn (efternamn?) som inkluderas i From-headern i mailet. Känns inte helt rätt.

Om du vill ha all info i själva mailtexten och formatera den lite mer strukturerat så får du konstruera en ny variabel som innehåller data från de andra variablerna. Som det är nu är det ju bara innehållet i meddelanderutan som kommer med i mailet. Kolla upp Heredoc i php, det är lämpligt att använda i ditt fall.

Klippte in en äldre version av php skriptet. nu är det bättre.

Nu har jag fått ordning på uppställningen i "svar" sidan.

Jag får fortfarande inte med all information. Jag saknar telefonnumret. Kan man få det som vissas på svar sidan i ett mail?

<?php

// anger en variabel som kan lagra de eventuella felaktigheterna 
$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\å\ä\ö._-][email protected][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!"; 
 
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!'; 
$namn = $_POST["namn"]; 
$phone = $_POST["phone"]; 
$message = $_POST["message"]; 

######################################################################## 
// HEADERS för innehållstyp och textkodning 
$headers = "Content-Type: text/plain; charset=utf-8 \r\n";  
$headers .= "From:".$namn." <".$from.">"."\r\n";  
$headers .= "MIME-Version: 1.0 \r\n"; 
######################################################################## 


// Mailfunktionen som skickar bekräftelsen
if (mail($to, $subject, $message, $headers))
	echo nl2br("<h2>Tack $namn! 
Ditt meddelande har skickats!</h2> 

//###Detta vill jag få med i ett mail###
<b>Mottagare:</b> $to
<b>Namn:</b> $namn
<b>E-Mail:</b> $from
<b>Telefonnummer:</b> $phone
<b>meddelande:</b> <br/>$message 

"); 
     
else
	echo "Det gick inte att skicka ditt meddelande";
} 
?>

Tacksam för alla svar

Senast redigerat 2018-12-04 22:51
Ursprungligen av coach:

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...

//Tack det löste skicka funktionen

Ursprungligen av rugbyspelare:

//Tack det löste skicka funktionen

Trevligt att det löste sig!
Det finns en smidig code-tagg om man vill publicera kod så det blir mer läsbart.

jag har även fått ordning på presentationen i web fönstret.
Jag behöver bara få med all info i mailet. Jag försöker utan att lyckas.

1
Bevaka tråden