Avatar billede -flow- Nybegynder
18. februar 2011 - 11:18 Der er 17 kommentarer og
1 løsning

PHP kontaktformular

Hej jeg har to filer til min kontaktformular:

Fil 1:

  <form id="form1" name="form1" method="post" action="kontakt2.php">
    <label>Navn<br />
    <input type="text" name="navn" id="navn" />
    <br />
    </label>
    <br />
    E-mail<br />
    <label>
    <input type="text" name="mail" id="mail" />
    <br />
    </label>
    <br />
  Telefon<br />
  <label>
  <input type="text" name="telefon" id="telefon" />
  <br />
  <br />
  Hjemmeside<br />
  <input type="text" name="hjemmeside" id="hjemmeside" />
  <br />
  <br />
  </label>
  Besked<br />
  <label>
  <textarea name="besked" id="besked" cols="45" rows="5"></textarea>
  </label>
  <br />
  <br />
  <label>
  <input type="submit" name="button" id="button" value="Send" />
  </label>
  <input type="reset" value="Slet">

  </form>

Fil 2:

<?php
$name = $_POST["navn"];
$mail = $_POST["mail"];
$telefon = $_POST["telefon"];
$hjemmeside = $_POST["hjemmeside"];
$emne = $_POST ["emne"];
$besked = $_POST["besked"];


$Header = "MIME-Version: 1.0\n";
$Header .= "From: ".$mail." \n";
$Header .= "Reply-to: ".$mail."\n";
$Header .= "Content-type: text/html; charset=iso-8859-l\n";

mail("mail@mail.dk","Emnefelt","Navn: ".
$name."<br> Email: ".$mail."<br> Hjemmeside: ".$hjemmeside."<br>Telefon: ".$telefon."<br>Emne: ".$emne."<br>Besked: ".$besked."", $Header);
?>

<script type="text/javascript">
    document.location = 'kontakt.php';
    </script>
   
Fil nr 2, sender os tilbage til fil nr 1, når beskeden er sendt.
Det jeg gerne vil have er en echo "tak for din besked" eller lign. når beskeden er blevet sendt.

Er der nogen der ved hvordan dette skal skrives i PHP? :)

Håber der er nogen der kan hjælpe :)
Avatar billede Hvepse Nybegynder
18. februar 2011 - 11:33 #1
I fil 2 kan du skrive:

$besked=urlencode("Beskeden er sendt!");
header("Location:kontakt.php?besked=".$besked);


og i fil 1 skriver du der hvor beskeden skal vises

<?php
      echo $_GET["besked"];
?>


Mvh Martin
Avatar billede heinzdmx Nybegynder
18. februar 2011 - 11:35 #2
Jeg vil anbefale dig at i stedet for at lave document.location i javascript så lav det på serveren, det vil føles hurtigere for brugeren.


<?php
if ($_GET['displayMessage'] == 1)
{
    echo "tak for din besked";
}
else
{
?>
<form id="form1" name="form1" method="post" action="kontakt2.php">
    <label>Navn<br />
    <input type="text" name="navn" id="navn" />
    <br />
    </label>
    <br />
    E-mail<br />
    <label>
    <input type="text" name="mail" id="mail" />
    <br />
    </label>
    <br />
  Telefon<br />
  <label>
  <input type="text" name="telefon" id="telefon" />
  <br />
  <br />
  Hjemmeside<br />
  <input type="text" name="hjemmeside" id="hjemmeside" />
  <br />
  <br />
  </label>
  Besked<br />
  <label>
  <textarea name="besked" id="besked" cols="45" rows="5"></textarea>
  </label>
  <br />
  <br />
  <label>
  <input type="submit" name="button" id="button" value="Send" />
  </label>
  <input type="reset" value="Slet">

  </form>
<?php
}
?>


Fil 2:
<?php
$name = $_POST["navn"];
$mail = $_POST["mail"];
$telefon = $_POST["telefon"];
$hjemmeside = $_POST["hjemmeside"];
$emne = $_POST ["emne"];
$besked = $_POST["besked"];

$Header = "MIME-Version: 1.0\n";
$Header .= "From: ".$mail." \n";
$Header .= "Reply-to: ".$mail."\n";
$Header .= "Content-type: text/html; charset=iso-8859-l\n";

mail("mail@mail.dk","Emnefelt","Navn: ". $name."<br> Email: ".$mail."<br> Hjemmeside: ".$hjemmeside."<br>Telefon: ".$telefon."<br>Emne: ".$emne."<br>Besked: ".$besked."", $Header);

header("Location: http://x.dk/fil1.php);
exit;
?>
Avatar billede jakobdo Ekspert
18. februar 2011 - 11:58 #3
Jeg ved det vil give en masse ekstra spørgsmål.
Men i disse web2.0 / ajax tider, kunne du også anvende ajax.
Dermed vil brugeren ikke forlade side et, men et ajax kald, vil klare det hele.
Avatar billede -flow- Nybegynder
18. februar 2011 - 12:32 #4
Hvepse >> Jeg kan desværre ikke få dit forslag til at virke..

Heinz>> okay, men jeg kan ike lige gennemskue hvad der skal stå her:

header("Location: http://x.dk/ (her??));
exit;
Avatar billede webweaver Praktikant
18. februar 2011 - 12:43 #5
Det kan også sagtens laves i 1 fil med PHP :)
Det behøver ikke være Ajax ...

Forstår egentlig ikke helt, hvorfor du har det i 2 filer på nuværende tidspunkt ...
Avatar billede -flow- Nybegynder
18. februar 2011 - 12:46 #6
webweaver>> Nææ okay, men hvis du kan hjælpe mig med lidt kode der virker, ville det være fint
Avatar billede heinzdmx Nybegynder
18. februar 2011 - 12:51 #7
Det er eksperten der laver noget med linksne .. der skal være stien til fil1 ;)


Hvis du er interesseret i et ajax kald har jeg i forvejen noget som virker på min host der er en simpel kontakt formular, hvis det skulle være ;)
Avatar billede -flow- Nybegynder
18. februar 2011 - 12:57 #8
heainz >> Ja den har jeg fanget..

Men forstår ikke hvad der skal stå mellem de to parenteser..
skal de bare fjernes?

header("Location: http://x.dk/ (her??));
exit;

fra det til :


header("Location: http://x.dk/";
exit;
Avatar billede -flow- Nybegynder
18. februar 2011 - 12:59 #9
okay nu forstår jeg, hvad det er eksperten gør med det link
Avatar billede -flow- Nybegynder
18. februar 2011 - 13:12 #10
Heinz>> Det er desværre ikke helt optimalt... det bliver ikke nogen echo, men jeg vil gerne give den ajax kontaktforumlar en chance og se om jeg kan finde ud af det
Avatar billede heinzdmx Nybegynder
18. februar 2011 - 13:13 #11
For at sige det lige ud så er det mega irriterende :(

Men:
header("Location: dinstitilfil1.php");
Avatar billede heinzdmx Nybegynder
18. februar 2011 - 13:14 #12
Hmm hvad hvis du skriver

if ($_GET['displayMessage'] == "1")
{
    echo "tak for din besked";
}
Avatar billede heinzdmx Nybegynder
18. februar 2011 - 13:15 #13
Det er igen den sti der blev forkert.. der skal stå:

header("Location: dinstitilfil1.php?displayMessage=1");
Avatar billede -flow- Nybegynder
18. februar 2011 - 13:17 #14
Heinz>> Nej ingen echo..
Avatar billede -flow- Nybegynder
18. februar 2011 - 13:28 #15
Heinz>> Tusssiiing tak :) Nu virker det, det var lige det jeg skulle bruge... smider du et svar? :)
Avatar billede -flow- Nybegynder
18. februar 2011 - 13:28 #16
*Tusind tak skulle der stå
Avatar billede heinzdmx Nybegynder
18. februar 2011 - 13:30 #17
Jeg lægger et svar :)
Avatar billede DonTorro Nybegynder
18. februar 2011 - 15:08 #18
Jeg plejer at bruge følgende (Den sletter beskeden hvis den er blevet vist én gang):

fil1.php:
<?php
session_start();
$_SESSION["msg"] = "Beskeden er sendt";
header('location:fil2.php')
?>

fil2.php:
<?php
if (isset($_SESSION["msg"])){
  echo $_SESSION["msg"];
  unset($_SESSION["msg"]);
}
?>
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
Kurser inden for grundlæggende programmering

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