Avatar billede lsp75 Nybegynder
02. juli 2006 - 18:09 Der er 17 kommentarer og
1 løsning

Hvordan får jeg indholdet af kontaktformularen tilsendt?

Hej eksperter

Jeg sidder og bakser med en kontaktformular i php. Det er første gang, at jeg skal lave sådan én og har læst mig til det, som jeg har lavet indtil videre. Nu er jeg imidlertid gået i stå.

Jeg har lavet en simpel kontaktformular, som kan ses her:
http://www.blaagaardsgade25-27.dk/kontakt.htm

Når brugeren har indtastet sine data, bliver han sendt videre til denne side:
http://www.blaagaardsgade25-27.dk/kontakt-feedback.php.

Mit spørgsmål er (se kode nedenfor):

Hvordan får jeg at vide, når/hvis en bruger indtaster et spørgsmål? Jeg ved, at det er noget med, at indholdet af kontaktsiden skal sendes til min e-mail-adresse, men hvordan fortæller jeg dette i php-scriptet?

På forhånd tak for hjælpen :-)

Script på siden kontakt.htm:

<FORM method="post" action="kontakt-feedback.php">

<p>Udfyld felterne nedenfor. Vi vender tilbage til dig hurtigst muligt.</p>

<table border="1" align="left" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF" bgcolor="#FFFFFF"><tr><td valign="top">Navn:<br><input type="text" name="name" size="30" maxlength="40"/></td></tr>
<tr><td valign="top">E-mail:<br><input type="text" name="email" size="30" maxlength="60"/><br><br></td></tr>
<tr><td valign="top">Spørgsmål/kommentar:<br><textarea name="comments" rows="5" cols="23"></textarea><br><br></td></tr>
<tr><td><input type="submit" name="submit" value="send"/></P></td></tr>
</table>

</form>

Script på siden kontakt-feedback.php:

<?php
                   
// Check $name and strip any slashes:
if (strlen($_POST['name']) > 0) {
$name=stripslashes($_POST['name']);
} else { // If no name was entered...
$name= NULL;
echo '<p>Du glemte at skrive dit navn!</p>';
echo '<p><a href=kontakt.htm>tilbage</a></p>';
}

// Check $email:                       
if ( !(strlen($_POST[email]) > 0) ) {
$email= NULL;
echo '<p>Du glemte at skrive din e-mail-adresse!</p>';
echo '<p><a href=kontakt.htm>tilbage</a></p>';
}
                           
// Check $comments and strip any slashes:
if (strlen($_POST['comments']) > 0) {
$comments=stripslashes($_POST['comments']);
} else { // If there are no comments...
$comments= NULL;
echo '<p>Du glemte at skrive en kommentar!</p>';
echo '<p><a href=kontakt.htm>tilbage</a></p>';
}           
                           
// If everything was filled out, print the message:
if (($_POST['name']) && ($_POST['email']) && ($_POST['comments'])) {               
echo "<p>Hej {$_POST['name']}</p>
<p>Du har sendt os følgende kommentar: <br/><tt>{$_POST['comments']}</tt></p>
<p>Vi sender vores svar til adressen '{$_POST['email']}' snarest muligt.</p>                          <p>Hilsen A/B Blågårdsgade 25-27</p>";
}

?>
Avatar billede leif Seniormester
02. juli 2006 - 18:11 #1
Avatar billede ffn Nybegynder
02. juli 2006 - 18:30 #2
Jepper du bruger:

<?php
$to      = $_POST[email];
$subject = 'Skriv dit emne her!';
$message = $_POST['comments'];
$headers = 'From: din_email@mail.dk' . "\r\n" .
          'Reply-To: svar_email@mail.com' . "\r\n" .


mail($to, $subject, $message, $headers);
?>
Avatar billede lsp75 Nybegynder
02. juli 2006 - 23:25 #3
Hej med jer

Jeg har skrevet jeres input ind i mit script, men jeg kan ikke få det til at virke!!

Jeg har sat følgende ind i starten af scriptet på kontakt-feedback.php-siden (i koden nedenfor har jeg erstattet min rigtige e-mail-adresse med "min_mail@mail.com":

<?php                           
$to='min_mail@mail.com';
$subject='Jeg vil gerne kontaktes af jer';
$message=$_POST['comments'];
$headers='From: min_mail@mail.com'."\r\n".
'Reply-To: min_mail@mail.com'."\r\n".
mail($to, $subject, $message, $headers);

Jeg får ikke tilsendt en mail?

Jeg har også prøvet med følgende:

<?php                           
$to=$_POST[email];
$subject='Jeg vil gerne kontaktes af jer';
$message=$_POST['comments'];
$headers='From: min_mail@mail.com'."\r\n".
'Reply-To: min_mail@mail.com'."\r\n".
mail($to, $subject, $message, $headers);

Men her får jeg kun tilsendt en e-mail, når jeg udfylder kontaktformularen med min egen e-mail-adresse!!

I den mail, som jeg modtager, vil jeg ud over indholdet i 'comments' også gerne se indholdet af 'name' og 'email'. Ellers kan jeg jo ikke svare tilbage til den bruger, der har udfyldt kontaktformularen. Hvordan skriver jeg dette i scriptet?

Hilsen Lise
Avatar billede lsp75 Nybegynder
02. juli 2006 - 23:26 #4
I forlængelse af min forgående kommentar: Hvordan skal 'Reply-To' forstås? Jeg skal jo ikke svare mig selv, men brugeren!?
Avatar billede pidgeot Nybegynder
02. juli 2006 - 23:28 #5
From og Reply-To skal være afsenderens e-mail, $to skal indeholde den adresse mailen skal sendes til.
Avatar billede leif Seniormester
02. juli 2006 - 23:51 #6
Jeg kan se du har Webhotel hos B-One, der skal den Email i from være en adresse fra domænet ellers vil du aldrig få email, emailadressen kan fx. være www@blaagaardsgade25-27.dk
Avatar billede lsp75 Nybegynder
02. juli 2006 - 23:54 #7
Jeg har rettet mit script til (se nedenfor), men det virker stadig ikke?:

<?php                           
$to='min_mail@mail.com';
$subject='Jeg vil gerne kontaktes af jer';
$message=$_POST['comments'];
$headers='From: ($_POST[email])'."\r\n".
'Reply-To: ($_POST[email])'."\r\n".
mail($to, $subject, $message, $headers);

Jeg er ikke helt sikker på, om jeg har skrevet rigtigt ved From og Reply to!
Avatar billede pidgeot Nybegynder
02. juli 2006 - 23:56 #8
PHP parser ikke variable i strenge der er omsluttet med ''. Brug denne linie i stedet

$headers='From: '.$_POST[email]."\r\n".
'Reply-To: '.$_POST[email]."\r\n";
Avatar billede lsp75 Nybegynder
02. juli 2006 - 23:58 #9
Jeg får tilsendt en e-mail med indholdet af 'comments', men jeg kan ikke se, hvem der har sendt den? Afsender-adressen er "postmaster@blaagaardsgade25-27.dk" selvom jeg slet ikke har skrevet denne adresse ind nogle steder (heller ikke som test-adresse)?
Avatar billede leif Seniormester
03. juli 2006 - 00:03 #10
Det kan være at B-One har sat dem som standard afsender hvis du ikke selv sætter en
Avatar billede lsp75 Nybegynder
03. juli 2006 - 00:03 #11
Hey, nu virker det! Det hjalp med din kommentar, pidgeot.
Avatar billede pidgeot Nybegynder
03. juli 2006 - 00:04 #12
Jeg har selv en side på B-one, hvor jeg bruger samme princip...

    $from=$_POST['mail'];
    $header="From: " . $from . "\r\nReply-To: " . $from . "\r\nX-Mailer: PHP/". phpversion() . "\r\nX-Originating-IP: ". $_SERVER['REMOTE_ADDR'] . "\r\nX-Originating-Host: " . gethostbyaddr($_SERVER['REMOTE_ADDR']);
    mail($email,$subject,$message, $header);

...og der virker det fint. Så det kan jeg ikke lige forstå hvorfor den gør...
Avatar billede pidgeot Nybegynder
03. juli 2006 - 00:07 #13
Nå, det funkede alligevel, kan jeg se :)
Avatar billede lsp75 Nybegynder
03. juli 2006 - 00:09 #14
Jep! Til gengæld kan jeg ikke finde ud af, hvordan jeg kommer af med mine 30 points? Jeg kan simpelt hen ikke se, hvor jeg skal klikke?
Avatar billede lsp75 Nybegynder
03. juli 2006 - 00:10 #15
test
Avatar billede lsp75 Nybegynder
03. juli 2006 - 00:12 #16
pidgeot, jeg vil gerne give dig mine points, men det kræver åbenbart, at du vælger 'Svar', når du skriver...
Avatar billede pidgeot Nybegynder
03. juli 2006 - 00:15 #17
Jamen så må jeg jo lige gøre det :)

Vent evt. på ffn, det var jo egentlig ham der ledte dig på sporet.
Avatar billede ffn Nybegynder
03. juli 2006 - 07:38 #18
Det er vel kun fair pidgeot får point.. jeg har bare ligget og sovet, mens han har holdt liv i tråden...

mmm en god nats søvn :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester