Gå til innhold

Problemer med mail skjema


Anbefalte innlegg

Jeg lager et påmeldings-skjema til et lite arrangement, og planla derfor og ha et nettbasert påmeldnings-sjema. Men det vil av en eller annen grunn ikke funke. Her er koden til skjemaet:

 

pamelding.php:

<form action="script.php" method="post">
Navn:<br>
<input type="text" name="navn"><br><br>

E-Mail:<br>
<input type="text" name="mail"><br><br>

Telefonnr:<br>
<input type="text" name="tele"><br><br>

Nick:<br>
<input type="text" name="Nick"><br><br>

<input type="submit" name="Submit" value="meld deg på">

</form>

 

script.php:

<?php
$epost = [email protected];
$emne = PÅMELDING;
$navn = $_POST["navn"];
$mail = $_POST["mail"];
$tele = $_POST["tele"];
$nick = $_POST["nick"];

$melding = $navn ++ $mail ++ $tele ++ $nick;

mail($epost,$emne,$melding);

echo "Påmeldingen er sendt. Gå <a href="index.php">TILBAKE</a>";
?>

Lenke til kommentar
Videoannonse
Annonse

For det første så er feilmeldinger nyttige for folk som har lyst til å hjelpe deg.

 

For det andre så vil du feilsjekke all data som du får fra en ekstern kilde før du bruker den til noe som helst.

 

Det jeg ville gjort for å feilsøke dette var først å lage det enkleste skriptet som sender en e-post

<?php mail('[email protected]', 'test', 'Dette er bare en test');?>

Hvis den posten ikke går igjennom så har du funnet feilkilden.

 

Hvis den posten går igjennom så må du sjekke at variablene du sender til mail() faktisk inneholder det du forventer at de skal inneholde <? var_dump($epost, $emne, $melding);?> før kallet til mail().

 

Hvis de gjør dette og den første testen går igjennom så trenger vi en feilmelding for å kunne finne en løsning.

Lenke til kommentar

Du må skrive e-posten og emnet mellom hermetegn (") for at den skal være gyldig. Dette gjelder alle verdier utenom tall.

 

PHP
<?php

$epost "[email protected]";

$emne "PÅMELDING";

?>

 

Jeg er også usikker på om $melding linjen din er riktig. Jeg ville gjort det slik:

 

PHP
<?php

$melding $navn $mail $tele $nick;

?>

 

Merk at da vil alt bli skrevet på en og samme linje. Du bør bruke mellomrom og linjeskift (\n) for å gjøre det bedre.

 

Den siste linjen din har også en feil. Skal du ha hermetegn (") der må du skrive \". Du kan alternativt skrive echo 'koden din'; hvis det som skal printes ut er ren tekst og ingen variabler eller lignende.

Endret av Runar
Lenke til kommentar

Hvorfor <br>? Er da bare tull å slenge inn html-tagger i epost som er ren tekst. Helt vanlig linjeskift er tingen, altså "\n"

 

PHP sin mail()-funksjon har visst også en sikkerthetssvakhet hvor $subject ikke sjekkes skikkelig så man kan sette inn en ny linje og dermed også en ny header i eposten. Mulig det er fikset i de nyeste versjonene.

Lenke til kommentar

Jeg kan legge ut kildekoden:

 

pamelding.php:

<form action="script.php" method="post">
Navn:<br>
<input type="text" name="navn"><br><br>
E-Mail:<br>
<input type="text" name="mail"><br><br>
Telefonnr:<br>
<input type="text" name="tele"><br><br>
Nick:<br>
<input type="text" name="nick"><br><br>
<input type="submit" name="Submit" value="meld deg på">
</form>

 

script.php:

<?php
error_reporting(E_ALL | E_STRICT);

$epost = "[email protected]";
$emne = "PÅMELDING";
$navn = $_POST['navn'];
$mail = $_POST['mail'];
$tele = $_POST['tele'];
$nick = $_POST['nick'];

$melding = "Navn: " . $navn . "\nE-Mail: " .  $mail . "\nTelefon: " . $tele . "\nNick: " . $nick;

mail($epost,$emne,$melding);

echo 'Påmeldingen er sendt. Gå <a href="index.php">TILBAKE</a><br><br>';
?>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...