Avatar billede sneska Nybegynder
08. oktober 2011 - 13:47 Der er 19 kommentarer og
1 løsning

Mail med flere felter

Hej alle sammen:) Jeg er ved at lave en form med flere felter men kan ikke få den til at virke. Skal også have php validering på men rækkefølgen i koden giver fejl , desværre.

Her er min kode;

<?php
ob_start();
require_once('includes/config.php');
?>
<!DOCTYPE HTML>
<head>
<meta name="viewport" content="width = device-width; initial-scale = 1.0; maximum-scale=1.0;" />
<title>Forside :: </title>
<link href="css/marko.css" rel="stylesheet" type="text/css" media="screen" />
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script>
    $(function() {
        $( "#datepicker" ).datepicker({
            showWeek: true,
            firstDay: 1
        });
    });
    </script>
<link href="css/jquery-ui-1.8.16.custom.css" rel="stylesheet" type="text/css" media="screen" />
</head>
    <body>
        <div id="wrapper">
            <div id="banner"></div>
                <div id="menu">
                    <?php
                        require_once('includes/mux.php');
                    ?>
                </div><!--menu-->
                    <div id="content">
                        <div id="booking">
                   
<?php
                        function isValidEmail($email)
                        {
                        return preg_match('/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+){2,4}+$/', $email);
                        }
                        //if( strlen(!empty($navn)) &&
//                              isValidEmail($email) &&
//                              is_numeric(!empty($tlf) <=8) &&
//                              !empty($dato) &&
//                              is_numeric(!empty($antaldeltag)) &&
//                              is_numeric(!empty($antaltimer)) &&
//                              strlen(!empty($msg))
//                                {
//                              echo "Beskeden er sendt";
//                             
//                              }else{ echo "Udfyld venligst felterne korrekt"; }
                             
                            $mymail = "my@mail.com";
                            $subject = "Kundemail";
                            if (isset($_REQUEST['submail'] )) //if "email" is filled out, send email
                            {
                              //send email
                              $navn = $_REQUEST['navn'] ;
                              $email = $_REQUEST['email'] ;
                              $tlf = $_REQUEST['tlf'] ;
                              $dato = $_REQUEST['dato'] ;
                              $antaldeltag = $_REQUEST['antaldeltag'] ;
                              $antaltimer = $_REQUEST['antaltimer'] ;
                           
                              $message = $_REQUEST['message'] ;
                             
                              $info = "$message\n$subject\n$antaltimer\n$antaldeltag\n$dato\n$tlf\n$navn";
                             
                              $headers = 'From: '. $email . "\r\n" . 'Reply-To: '.$email.'' . "\r\n" . 'X-Mailer: PHP/' . phpversion();
                              $headers .= 'MIME-Version: 1.0' . "\r\n";
                              $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
                             
                              mail($mymail,  $subject, $info, $headers);
                            }else{
                           
                              ?>
                              <form method='post' action='tak.php'>
                                <table>
                                    <tr><td><input name="subject" type="hidden"></td></tr>
                                    <tr><td style="width:120px;">Navn:</td>
                                    <td><input name='navn' type='text' alt="Indtast navn"  title="Indtast navn" /></td> </tr>
                                    <tr><td>Email:</td><td> <input name='email' type='text' alt="Indtast email"  title="Indtast email" /></td></tr>
                                    <tr><td>Tlf.:</td><td> <input name='tlf' type='text' alt="Indtast Tlf. nr."  title="Indtast tlf. nr." /></td></tr>
                                    <tr><td>Dato:</td><td> <input name='dato' type='text' id="datepicker" alt="Vælg dato for arrangement"  title="Vælg dato for arrangement" /></td></tr>
                                    <tr><td>Antal deltagere:</td>
                                    <td> <input name='antaldeltag' type='text' alt="Antal deltagere"  title="Antal deltagere" /></td></tr>
                                    <tr><td>Antal timer:</td><td> <input name='antaltimer' type='text' alt="Arrangementets varighed"  title="Arrangementets varighed" /></td></tr>
                                </table>
                                    <br />Kort beskrivelse af arrangementet:
                                    <textarea name='message' rows='10' cols='40'></textarea><br /><br />
                                    <input type='submit' value="Book en dj" id="submail" alt="Send mail"  title="Send mail"/>
                                </form>
                                <?php
                              }
                            ?>
                          </div>
                    </div><!--content-->
                <div id="footer">
                    <?php
                        require_once('includes/footer.php');
                    ?>
              </div><!--footer-->
        </div><!--wrapper--> 
    </body>
</html>
<?php
ob_flush();
?>
Avatar billede cronaldo Nybegynder
08. oktober 2011 - 15:26 #1
Det er nemmere, hvis du giver en konkret beskrivelse af fejlen og evt. vedhæfter fejlmeddelelsen :-)

Jeg er ikke helt med på, hvad der fejler i hvert fald :-)
Avatar billede sneska Nybegynder
08. oktober 2011 - 15:33 #2
Når formen er udfyldt og man trykker send, modtager/får jeg ikke mail i min inbox. Koden er simpelthen ikke korrekt, og jeg har brugt dage på at kigge og ændre osv. nu har jeg brug for et par andre øjne som måske kan se hvad der er galt.
Avatar billede sneska Nybegynder
08. oktober 2011 - 15:35 #3
først lavede jeg det enkelt kun med $to, $subject, $message, $headers med kun Navn, email, besked input felter- og det virkede.
Efter jeg har sat flere input fields på, gik der kage i det.
Avatar billede olsensweb.dk Ekspert
08. oktober 2011 - 16:03 #4
du mangler et name="submail"
det er jo elementens name der sendes med post
dette skal rettes
<input type='submit' value="Book en dj" id="submail"  title="Send mail"/>
til
<input type='submit' value="Book en dj" id="submail"  name="submail" title="Send mail"/>

ellers vil denne
if (isset($_REQUEST['submail'] )) //if "email" is filled out, send email
aldrig blive sand

hvorfor bruger du $_REQUEST ?? brug $_POST
Avatar billede sneska Nybegynder
08. oktober 2011 - 17:15 #5
Tak for det ronols, nu har jeg ændret koden til dette;
$email = "my@mail.com";
                            $subject = "usermail";
                            if (isset($_POST['email'] )) //if "email" is filled out, send email
                            {
                              //send email
                              $navn = $_POST['navn'] ;
                              $email = $_POST['email'] ;
                              $tlf = $_POST['tlf'] ;
                              $dato = $_POST['dato'] ;
                              $antaldeltag = $_POST['antaldeltag'] ;
                              $antaltimer = $_POST['antaltimer'] ;
                              //$subject = $_POST['subject'] ;
                              $message = $_POST['message'] ;
                             
                              $info = "$message\n$subject\n$antaltimer\n$antaldeltag\n$dato\n$tlf\n$navn";
                             
                              $headers = 'From: '. $email . "\r\n" . 'Reply-To: '.$email.'' . "\r\n" . 'X-Mailer: PHP/' . phpversion();
                              $headers .= 'MIME-Version: 1.0' . "\r\n";
                              $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
                             
                              mail( $email,  $subject, $info, $headers);
                            }else{
                            //header( 'location: tak.php');
                              ?>
                              <form method='post' action='tak.php'>
                                <table>
                   
                                    <tr><td style="width:120px;">Navn:</td>
                                    <td><input name='navn' type='text' alt="Indtast navn"  title="Indtast navn" /></td> </tr>
                                    <tr><td>Email:</td><td> <input name='email' type='text' alt="Indtast email"  title="Indtast email" /></td></tr>
                                    <tr><td>Tlf.:</td><td> <input name='tlf' type='text' alt="Indtast Tlf. nr."  title="Indtast tlf. nr." /></td></tr>
                                    <tr><td>Dato:</td><td> <input name='dato' type='text' id="datepicker" alt="Vælg dato for arrangement"  title="Vælg dato for arrangement" /></td></tr>
                                    <tr><td>Antal deltagere:</td>
                                    <td> <input name='antaldeltag' type='text' alt="Antal deltagere"  title="Antal deltagere" /></td></tr>
                                    <tr><td>Antal timer:</td><td> <input name='antaltimer' type='text' alt="Arrangementets varighed"  title="Arrangementets varighed" /></td></tr>
                                </table>
                                    <br />Kort beskrivelse af arrangementet:
                                    <textarea name='message' rows='10' cols='40'></textarea><br /><br />
                                    <input type='submit' value="Book en dj" id="submail"  name="submail" title="Send mail"/>
                                   
                                </form>

Jeg får stadigt igen svar på mailen :(
Avatar billede sneska Nybegynder
08. oktober 2011 - 17:23 #6
og ændret my@mail.com= $mymail ; og så ændret det i mail funktionen som det første parameter , men det hjalp heller ikke.
Avatar billede olsensweb.dk Ekspert
09. oktober 2011 - 10:24 #7
hvis du kigger på http://dk.php.net/manual/en/function.mail.php Example #4 Sending HTML email
kan du se du skal sende din
$headers = 'MIME-Version: 1.0' . "\r\n";  og 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
skal sendes som det første

nb: vær opmærksom på at html mail ofte ryger i spam filteret

eller nøjes med at gøre som Example #2 Sending mail with extra headers.

$headers = 'From: '. $email . "\r\n" . 'Reply-To: '.$email.'' . "\r\n" . 'X-Mailer: PHP/' . phpversion();
$headers .= 'MIME-Version: 1.0' . "\r\n"; <-- her ville der også mangle et mellemrum, da denne tekst ellers ville værer sat sammen med phpversion()
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";


mangler du ikke et To felt i din header ??

du sætter $email = "my@mail.com";
hvorefter du overskriver den med $email = $_POST['email'] ; knap så smart. :)

prøv med denne rækkefølge: (utested)
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: ' . $email . "\r\n";
$headers .= 'From: '. $email . "\r\n"; // denne addresse skal være på dit domain
$headers .= 'Reply-To: '.$email.'' . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion();


<form method='post' action='tak.php'> jeg går ud fra at aktuelle document hedder tak.php.
ellers bliver denne jo aldrig true  if (isset($_POST['email'] )) //if "email" is filled out, send email
når du trykker på submit :)
Avatar billede sneska Nybegynder
09. oktober 2011 - 15:56 #8
Mange tak for svar, men jeg kan slet ikke få det til at virke.
Har prøvet begge varianter du foreslog, og jeg havde ændret email til mymail, det opdagede jeg godt ;)

Her er den sidste kode jeg prøvede;
if (isset($_POST['submail'] )) //if "email" is filled out, send email
{
  //send email
  $navn = $_POST['navn'] ;
  $email = $_POST['email'] ;
  $tlf = $_POST['tlf'] ;
  $dato = $_POST['dato'] ;
  $antaldeltag = $_POST['antaldeltag'] ;
  $antaltimer = $_POST['antaltimer'] ;
  //$subject = $_POST['subject'] ;
  $message = $_POST['message'] ;
 
  $mymail = "sne_i@hotmail.com";
  $subject = "usermail";

  $info = "$message\n$antaltimer\n$antaldeltag\n$dato\n$tlf\n$navn";
 
$headers .= 'MIME-Version: 1.0' . "\r\n";        
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$$headers = 'From: '. $email . "\r\n" . 'Reply-To: '.$email.'' . "\r\n" . 'X-Mailer: PHP/' . phpversion();
$headers .= 'To: ' . $mymail . "\r\n";

mail( $mymail,  $subject, $info, $headers);

Og den virker ikke ! Jeg har fået en del fejl 500 , som ellers skulle være svære at få hehe...
Avatar billede olsensweb.dk Ekspert
09. oktober 2011 - 16:24 #9
prøv dette:
$headers = 'MIME-Version: 1.0' . "\r\n";        
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: ' . $mymail . "\r\n";
$headers .= 'From: '. $email . "\r\n" . 'Reply-To: '.$email.'' . "\r\n" . 'X-Mailer: PHP/' . phpversion();

du havde resat din variabel undervejs :(
du havde et dobbelt $ i $$headers = 'From: '.
forkert rækkefølge, phpversion(); skal være det sidste

$headers =  --> headers variablen resettes og settes til stringen MIME.....
$headers .= --> headers variablen concateneres med teksten der står efterfølgende
Avatar billede sneska Nybegynder
09. oktober 2011 - 16:46 #10
Godt set , jeg rykkede rundt på dem i desperat forsøg på at prøve en  anden rækkefølge og glemte lige prikken :)

Jeg har heller ikke held med denne gang ;
if (isset($_POST['submail'] )) //if "email" is filled out, send email
{
  //send email
  $navn = $_POST['navn'] ;
  $email = $_POST['email'] ;
  $tlf = $_POST['tlf'] ;
  $dato = $_POST['dato'] ;
  $antaldeltag = $_POST['antaldeltag'] ;
  $antaltimer = $_POST['antaltimer'] ;
  //$subject = $_POST['subject'] ;
  $message = $_POST['message'] ;
 
  $mymail = "sne_i@hotmail.com";
  $subject = "usermail";

  $info = "$message\n$antaltimer\n$antaldeltag\n$dato\n$tlf\n$navn";
 
$headers = 'MIME-Version: 1.0' . "\r\n";       
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: ' . $mymail . "\r\n";
$headers .= 'From: '. $email . "\r\n" . 'Reply-To: '.$email.'' . "\r\n" . 'X-Mailer: PHP/' . phpversion();

mail( $mymail,  $subject, $info, $headers);


Jeg tror snart jeg opgiver og godkender dit svar :)
Avatar billede olsensweb.dk Ekspert
09. oktober 2011 - 18:10 #11
prøv at starte med at sende det som plain text

Example #2 Sending mail with extra headers.
// plain text                              
$headers = 'From: '. $mymail . "\r\n";
$headers .= 'Reply-To: '. $mymail . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion();
mail($mymail, $subject, $info, $headers);


                             
hvis det virker kan du prøve at lave headeren om til html, hvis den ikke kommer frem kig i din spam mail
Example #4 Sending HTML email
// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: '. $mymail . "\r\n";
$headers .= 'From: '. $mymail . "\r\n";

// Mail it
mail($mymail, $subject, $info, $headers);


Ja, jeg ved godt jeg kun bruger $mymail, men nu skal der først hul igennem
så du skal vælge om du vil sende som plain text eller html text, jeg vil anbefale plain.

http://phpartikler.dk/artikler/mail.php
ellers er der jo:
http://phpmailer.worxware.com/
http://swiftmailer.org/
Avatar billede olsensweb.dk Ekspert
09. oktober 2011 - 18:56 #12
>$mymail = "sne_i@hotmail.com";
du skal bruge en anden mail at sende fra, du skal sende fra en mail addresse på eget domain
så hvis dit domain hedder sneska.dk
kunne din fra addresse være sneska@sneska.dk
Avatar billede sneska Nybegynder
09. oktober 2011 - 19:11 #13
wow ok jeg prøver med det samme , mange tak :) de øverste virkerde ikke umiddelbart , men håber det gør når jeg skifter til domæne mail . Jeg vender tilbage
Avatar billede sneska Nybegynder
09. oktober 2011 - 20:31 #14
Hvordan giver jeg point?
Avatar billede sneska Nybegynder
09. oktober 2011 - 20:31 #15
og lukker
Avatar billede olsensweb.dk Ekspert
10. oktober 2011 - 13:09 #16
#14+15
jeg ligger et svar som du accepterer
ref http://www.eksperten.dk/faq#faq-3-5
fik du løst din opgave eller måtte du opgive
Avatar billede sneska Nybegynder
11. oktober 2011 - 21:06 #17
Hej ronols :)
Jeg opgav denne kode men fandt en anden løsning som funger men den sender ikke mail svar tilbage til den der har indtastet info i formen, det kunne jeg godt tænke mig for det er en fin service :)
Desuden tænker jeg at sætte et par radio knapper på eller tjek boxe.

http://codepad.org/SPhPS4Jr hvis du har lyst til at se koden og resultatet kan ses på rent-a-dj.dk/booking.php?p=6
Avatar billede sneska Nybegynder
11. oktober 2011 - 21:07 #18
Og mange tak for venligheden :)
Avatar billede olsensweb.dk Ekspert
11. oktober 2011 - 21:42 #19
tfp
selv tak, trist det ikke kom til at virke
det burde "bare" være http://dk.php.net/manual/en/function.mail.php Example #2 Sending mail with extra headers.
Avatar billede sneska Nybegynder
11. oktober 2011 - 22:27 #20
Helt sikkert #2 virker , men jeg formåede bare ikke at tilpasse det, desværre. Jeg kigger på det igen for det irritere mig en del ..
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