Avatar billede futurefreak Nybegynder
07. februar 2007 - 19:15 Der er 16 kommentarer og
1 løsning

Tilføje et tekstfelt i en <mailform>

Hej E
Newbie spm!

Hvordan tilføjer jeg flere tekstfelter som f.eks. telefon og en select i denne form? (http://www.hjemmesideskolen.dk/scripts/phpmail.php)


<input type="text" name="telefon" size="10" class="tekstfelt">

<select name="tidsrum">
<option>v&aelig;lg ..</option>
<option>08.00 til 12.00</option>
<option>12.00 til 16.00</option>
<option>16.00 til 20.00</option>
<option>20.00 til 22.00</option>
<option>hele dagen</option>
</select>



<form method="post" action="sender.php">
<fieldset>
<legend>Husk at udfylde alle felter</legend>
<label for="t1">Navn:</label>
<input id="t1" type="text" name="name" /><br />
<label for="t2">Email:</label>
<input id="t2" type="text" name="email" /><br />
<label for="t3">Emne:</label>
<input id="t3" type="text" name="subject" /><br />
<label for="t4">Besked:</label>
<textarea id="t4" name="message" rows="10" cols="49"></textarea><br />
<label for="t5">Ønskes kopi?</label>
<input type="checkbox" id="t5" name="customer_copy" checked="checked" />
<label for="t6">&nbsp;</label><input id="t6" type="submit" name="submit" value=" Send mail " />
&nbsp; &nbsp; <input type="reset" value=" Slet alt " />
</fieldset>
</form>


<?php
if (isset($_POST['submit']))
{
if (!empty($_POST['name']) && // tjek, at der er skrevet et navn
!empty($_POST['email']) &&    // tjek, at der er skrevet en e-mail-adresse
!empty($_POST['subject']) &&  // tjek, at der er skrevet et subject
!empty($_POST['message']) &&  // tjek, at der er skrevet en besked

// her følger sikringen mod spambotter
!strpos($_POST['name'], "dit_domain.dk") &&  // tjek, at dit domæne ikke er skrevet i feltet "navn"
!strpos($_POST['email'], "dit_domain.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email"
!strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn"
!eregi("\r",$_POST['name']) &&  // tjek, at der ikke er "vogn-retur" i "navn"
!eregi("\n",$_POST['name']) &&  // tjek, at der ikke er "linjeskift" i "navn"
!eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email"
!eregi("\n",$_POST['email']))  // tjek, at der ikke er "linjeskift" i "email"

// er alt ok, fortsættes med afsendelse af mailen
{
  $headers="From: ".$_POST['name']."<".$_POST['email'].">";
  if (@$_POST['customer_copy'])
  {
  $headers .= "\r\nBcc: ".$_POST['email'];
  }
  if (@mail("dit.navn@dit_domain.dk", strip_tags($_POST['subject']),
  stripslashes(strip_tags($_POST['message'])), $headers))
  {
  echo "<p>Tak for din henvendelse. Jeg svarer så hurtigt som muligt.</p>";
  }
  else
  {
  echo "<p>E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!</p>";
  }
}
else
{
  echo "<p>Mailen kunne ikke sendes, alle felter skal udfyldes korrekt!</p>";
}
}
?>




Hvis jeg gætter rigtig, er det noget i retning af dette:


<form method="post" action="sender.php">
<fieldset>
<legend>Husk at udfylde alle felter</legend>
<label for="t1">Navn:</label>
<input id="t1" type="text" name="name" /><br />
<label for="t2">Email:</label>
<input id="t2" type="text" name="email" /><br />
<label for="t3">Emne:</label>
<input id="t3" type="text" name="subject" /><br />
<label for="t3">Telefon:</label>
<input id="t3" type="text" name="telefon" /><br />
<label for="t4">Besked:</label>
<textarea id="t4" name="message" rows="10" cols="49"></textarea><br />
<label for="t5">Ønskes kopi?</label>
<input type="checkbox" id="t5" name="customer_copy" checked="checked" />
<label for="t6">&nbsp;</label><input id="t6" type="submit" name="submit" value=" Send mail " />
&nbsp; &nbsp; <input type="reset" value=" Slet alt " />
</fieldset>
</form>


<?php
if (isset($_POST['submit']))
{
if (!empty($_POST['name']) && // tjek, at der er skrevet et navn
!empty($_POST['email']) &&    // tjek, at der er skrevet en e-mail-adresse
!empty($_POST['telefon']) &&    // tjek, at der er skrevet et telefonnummer
!empty($_POST['subject']) &&  // tjek, at der er skrevet et subject
!empty($_POST['message']) &&  // tjek, at der er skrevet en besked

// her følger sikringen mod spambotter
!strpos($_POST['name'], "dit_domain.dk") &&  // tjek, at dit domæne ikke er skrevet i feltet "navn"
!strpos($_POST['email'], "dit_domain.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email"
!strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn"
!eregi("\r",$_POST['name']) &&  // tjek, at der ikke er "vogn-retur" i "navn"
!eregi("\n",$_POST['name']) &&  // tjek, at der ikke er "linjeskift" i "navn"
!eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email"
!eregi("\n",$_POST['email']))  // tjek, at der ikke er "linjeskift" i "email"

// er alt ok, fortsættes med afsendelse af mailen
{
  $headers="From: ".$_POST['name']."<".$_POST['email'].">";
  if (@$_POST['customer_copy'])
  {
  $headers .= "\r\nBcc: ".$_POST['email'];
  }
  if (@mail("dit.navn@dit_domain.dk", strip_tags($_POST['subject']),
  stripslashes(strip_tags($_POST['message'])), $headers))
  {
  echo "<p>Tak for din henvendelse. Jeg svarer så hurtigt som muligt.</p>";
  }
  else
  {
  echo "<p>E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!</p>";
  }
}
else
{
  echo "<p>Mailen kunne ikke sendes, alle felter skal udfyldes korrekt!</p>";
}
}
?>
Avatar billede jakobdo Ekspert
07. februar 2007 - 22:28 #1
Du skal faktisk bare putte disse 2 "stykker" kode ind i mellem: <form ...> og </form>

<input type="text" name="telefon" size="10" class="tekstfelt">

<select name="tidsrum">
<option>v&aelig;lg ..</option>
<option>08.00 til 12.00</option>
<option>12.00 til 16.00</option>
<option>16.00 til 20.00</option>
<option>20.00 til 22.00</option>
<option>hele dagen</option>
</select>


Derefter skal du selvfølgelig rette lidt i php koden.
F.eks. skal du tilføje:
!empty($_POST['telefon']) og !empty($_POST['tidsrum'])
og så skal det også tilføjes nede i mail() koden, så de rigtige info bliver sendt med i emailen.
Avatar billede futurefreak Nybegynder
07. februar 2007 - 23:38 #2
jacobdo >>

Ja, og det er nemlig "tilføjes nede i mail() koden" delen jeg ikke kan finde ud af.
Avatar billede mcardle Nybegynder
08. februar 2007 - 03:10 #3
$to = "someone@example.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "someonelse@example.com";
$headers = "From: $from";

mail($to,$subject,$message,$headers);
Avatar billede mcardle Nybegynder
08. februar 2007 - 03:12 #4
Med HTML:

$to = "somebody@example.com, somebodyelse@example.com";
$subject = "HTML email";$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>This email contains HTML Tags!</p>
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
</tr>
</table>
</body>
</html>
";// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";// More headers
$headers .= 'From: <webmaster@example.com>' . "\r\n";
$headers .= 'Cc: myboss@example.com' . "\r\n";mail($to,$subject,$message,$headers);
Avatar billede jakobdo Ekspert
08. februar 2007 - 07:32 #5
Så ville jeg nok overveje at smide denne variabel:

stripslashes(strip_tags($_POST['message']))
ind i en anden variabel:

$message = stripslashes(strip_tags($_POST['message']));
Og så smide telefon og tidsrum oven i hatten.

$message .= "Telefon: " . $_POST['telefon'] . "\n";
$message .= "Tidsrum: " . $_POST['tidsrum'] . "\n";

og så mail:

if (@mail("dit.navn@dit_domain.dk", strip_tags($_POST['subject']),
  $message, $headers))
Avatar billede futurefreak Nybegynder
08. februar 2007 - 12:01 #6
mcardle >>

Kender ikke så meget til php at jeg kan få noget ud af dit svar. Sorry. Ved ikke hvad jeg skal stille op med dit forslag i foorhold til det script jeg gerne vil bruge.
Avatar billede futurefreak Nybegynder
08. februar 2007 - 12:02 #7
Jacobdo >>

Skulle det så se således ud?

<?php
if (isset($_POST['submit']))
{
if (!empty($_POST['name']) && // tjek, at der er skrevet et navn
!empty($_POST['email']) &&    // tjek, at der er skrevet en e-mail-adresse
!empty($_POST['telefon']) &&    // tjek, at der er skrevet et telefonnummer
!empty($_POST['subject']) &&  // tjek, at der er skrevet et subject
!empty($_POST['message']) &&  // tjek, at der er skrevet en besked
!empty($_POST['telefon']) &&
!empty($_POST['tidsrum']) &&

// her følger sikringen mod spambotter
!strpos($_POST['name'], "dit_domain.dk") &&  // tjek, at dit domæne ikke er skrevet i feltet "navn"
!strpos($_POST['email'], "dit_domain.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email"
!strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn"
!eregi("\r",$_POST['name']) &&  // tjek, at der ikke er "vogn-retur" i "navn"
!eregi("\n",$_POST['name']) &&  // tjek, at der ikke er "linjeskift" i "navn"
!eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email"
!eregi("\n",$_POST['email']))  // tjek, at der ikke er "linjeskift" i "email"

// er alt ok, fortsættes med afsendelse af mailen
{
  $headers="From: ".$_POST['name']."<".$_POST['email'].">";
  if (@$_POST['customer_copy'])
  {
  $headers .= "\r\nBcc: ".$_POST['email'];
  }
  if (@mail("dit.navn@dit_domain.dk", strip_tags($_POST['subject']),
  $message, $headers))
  $message .= "Telefon: " . $_POST['telefon'] . "\n";
  $message .= "Tidsrum: " . $_POST['tidsrum'] . "\n";

{
  echo "<p>Tak for din henvendelse. Jeg svarer så hurtigt som muligt.</p>";
  }
  else
  {
  echo "<p>E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!</p>";
  }
}
else
{
  echo "<p>Mailen kunne ikke sendes, alle felter skal udfyldes korrekt!</p>";
}
}
?>
Avatar billede mcardle Nybegynder
08. februar 2007 - 15:21 #8
Prøv det her:

<?php
if (isset($_POST['submit'])){
    if (!empty($_POST['name']) && // tjek, at der er skrevet et navn
    !empty($_POST['email']) &&    // tjek, at der er skrevet en e-mail-adresse
    !empty($_POST['telefon']) &&    // tjek, at der er skrevet et telefonnummer
    !empty($_POST['subject']) &&  // tjek, at der er skrevet et subject
    !empty($_POST['message']) &&  // tjek, at der er skrevet en besked
    !empty($_POST['telefon']) &&
    !empty($_POST['tidsrum']) &&

    // her følger sikringen mod spambotter
    !strpos($_POST['name'], "dit_domain.dk") &&  // tjek, at dit domæne ikke er skrevet i feltet "navn"
    !strpos($_POST['email'], "dit_domain.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email"
    !strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn"
    !eregi("\r",$_POST['name']) &&  // tjek, at der ikke er "vogn-retur" i "navn"
    !eregi("\n",$_POST['name']) &&  // tjek, at der ikke er "linjeskift" i "navn"
    !eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email"
    !eregi("\n",$_POST['email']))  // tjek, at der ikke er "linjeskift" i "email"

// er alt ok, fortsættes med afsendelse af mailen
{
  $headers="From: ".$_POST['name']."<".$_POST['email'].">";
  $headers = "MIME-Version: 1.0" . "\r\n";
  $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
  $headers .= 'From: <webmaster@example.com>';

  if (@$_POST['customer_copy'])
  {
  $headers .= "\r\nBcc: ".$_POST['email'];
  }
  if (@mail("dit.navn@dit_domain.dk", strip_tags($_POST['subject']),
  $message, $headers))
  $message .= "Telefon: " . $_POST['telefon'] . "\n";
  $message .= "Tidsrum: " . $_POST['tidsrum'] . "\n";

{
  echo "<p>Tak for din henvendelse. Jeg svarer så hurtigt som muligt.</p>";
  }
  else
  {
  echo "<p>E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!</p>";
  }
}
else
{
  echo "<p>Mailen kunne ikke sendes, alle felter skal udfyldes korrekt!</p>";
}
}
?>
Avatar billede mcardle Nybegynder
08. februar 2007 - 15:22 #9
Hov, du skal lige slette:

$headers .= 'From: <webmaster@example.com>';
Avatar billede mcardle Nybegynder
08. februar 2007 - 15:24 #10
Prøver lige igen... Nu uden fejl:

<?php
if (isset($_POST['submit'])){
    if (!empty($_POST['name']) && // tjek, at der er skrevet et navn
    !empty($_POST['email']) &&    // tjek, at der er skrevet en e-mail-adresse
    !empty($_POST['telefon']) &&    // tjek, at der er skrevet et telefonnummer
    !empty($_POST['subject']) &&  // tjek, at der er skrevet et subject
    !empty($_POST['message']) &&  // tjek, at der er skrevet en besked
    !empty($_POST['telefon']) &&
    !empty($_POST['tidsrum']) &&

    // her følger sikringen mod spambotter
    !strpos($_POST['name'], "dit_domain.dk") &&  // tjek, at dit domæne ikke er skrevet i feltet "navn"
    !strpos($_POST['email'], "dit_domain.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email"
    !strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn"
    !eregi("\r",$_POST['name']) &&  // tjek, at der ikke er "vogn-retur" i "navn"
    !eregi("\n",$_POST['name']) &&  // tjek, at der ikke er "linjeskift" i "navn"
    !eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email"
    !eregi("\n",$_POST['email']))  // tjek, at der ikke er "linjeskift" i "email"

// er alt ok, fortsættes med afsendelse af mailen
{
  $headers = "From: ".$_POST['name']."<".$_POST['email'].">";
  $headers .= "MIME-Version: 1.0" . "\r\n";
  $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";

  if (@$_POST['customer_copy'])
  {
  $headers .= "\r\nBcc: ".$_POST['email'];
  }
  if (@mail("dit.navn@dit_domain.dk", strip_tags($_POST['subject']),
  $message, $headers))
  $message .= "Telefon: " . $_POST['telefon'] . "\n";
  $message .= "Tidsrum: " . $_POST['tidsrum'] . "\n";

{
  echo "<p>Tak for din henvendelse. Jeg svarer så hurtigt som muligt.</p>";
  }
  else
  {
  echo "<p>E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!</p>";
  }
}
else
{
  echo "<p>Mailen kunne ikke sendes, alle felter skal udfyldes korrekt!</p>";
}
}
?>
Avatar billede futurefreak Nybegynder
08. februar 2007 - 15:35 #11
mcardle >>

Hvad betyder disse linier?

  $headers .= "MIME-Version: 1.0" . "\r\n";
  $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";

Hvad gør de og hvorfor skal de med?

Og er disser linier rigtige?
  if (@mail("dit.navn@dit_domain.dk", strip_tags($_POST['subject']),
  $message, $headers))
  $message .= "Telefon: " . $_POST['telefon'] . "\n";
  $message .= "Tidsrum: " . $_POST['tidsrum'] . "\n";


Så hvis jeg vil tilføje flere felter, skal jeg bare sætte flere linier ind ala dette her:
!empty($_POST['nyt_tekstfelt']) &&
og
$message .= "Tidsrum: " . $_POST['tidsrum'] . "\n";

??
Avatar billede mcardle Nybegynder
08. februar 2007 - 16:05 #12
$headers .= "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";

De sætter dit sprog. Hvis du ikke har den på, kan du f.eks. ikke skrive æøå.

ISO-8859-1 er dansk.

Er det på din egen server? eller er det på et webhotel? Du skal være sikker på at send_mail er sat op på serveren.
Avatar billede futurefreak Nybegynder
08. februar 2007 - 16:12 #13
mcardle >>
Det er på web10.dk's server.
Hvad mener du med at send_mail skal være sat op?
Avatar billede jakobdo Ekspert
08. februar 2007 - 19:10 #14
Jeg tror godt du kan regne med mail() er sat korrekt op på web10's server.
Avatar billede mcardle Nybegynder
08. februar 2007 - 22:56 #15
Ja, det er de... Er selv webmaster på et web10 domain.
Avatar billede jakobdo Ekspert
09. februar 2007 - 08:36 #16
Hvis du ikke har den store forstand på mail(), så skal du starte simpelt.
Først skal du få følgende til at virke:

<?php
mail("DIN@EMAIL.DK", "My Subject", "Line 1\nLine 2\nLine 3");
?>
Avatar billede mcardle Nybegynder
13. februar 2007 - 11:54 #17
Tak for points. Fik du det til at virke?
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