Avatar billede tza Nybegynder
29. marts 2006 - 13:03 Der er 14 kommentarer og
1 løsning

Flere felter i min mail form??

<?php
//http://www.eksperten.dk/spm/690481
session_start();
if(!empty($_POST['email']) && !empty($_POST['besked']))
{
    $from = $_POST['email'];
    $subject  = "Tilmelding til nyhedsbrev";
    $message  = "Email: " . $_POST['email'] . "\n";
    $message .= "Besked: " . $_POST['besked'] . "\n";

    if(mail("xxx@x.dk", $subject, $message, "From: $from\r\nReply-To: $from\r\nX-Mailer: PHP/" . phpversion()))
    {
        //Email er sendt ok
        $_SESSION['sendt'] = 1;
        header("Location: " . $_SERVER['PHP_SELF']);
        exit();
    }
    else
    {
        //Email blev ikke sendt, der opstod en fejl...
        $_SESSION['sendt'] = 2;
        header("Location: " . $_SERVER['PHP_SELF']);
        exit();
    }
}

if(isset($_SESSION['sendt']))
{
    if($_SESSION['sendt'] == 1)
    {
        echo("Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!");
    }
    else
    {
        echo("Din besked blev ikke afsendt korrekt - prøv igen!");
    }
    unset($_SESSION['sendt']);
}
else
{
    ?>
            <table width="234">
              <td width="52"><form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
                <tr>
                  <td><font color="#660033" size="2" face="Franklin Gothic Medium">Mail:</font></td>
                  <td width="144"><input type="text" name="email"></td></tr>
                <td><font color="#660033" size="2" face="Franklin Gothic Medium">By:</font></td><td><input type="text" name="besked"></td>
                <td colspan="2"><input type="submit" name="send" value="Send"></td>
            <td width="196"></form>
        </table>
    <?
}
?>

Denne kode har jeg tidligere brugt, med STOR hjælp fra jakobdo, sagen er at jeg godt kunne bruge flere felter til tekst, da jeg skal lave en simpel bestillings-form på siden.
Afsenderens e-mail skal stadig stå i afsender-feltet i min indbakke, bl.a. så jeg kan lave en auto-responder på de mails der kommer, men subject-feltet skal bare hedde 'bestilling'.

Jeg skal bruge 6 felter;
antal
type
navn
adresse
by
- disse 5 felter skal bare være tekst indeholdt i mailen
e-mail
- skal stå i afsender-feltet i min indbakke.

Jeg er ret lost mht at tilføje nye text-felter, såå...
På forhånd 100000 tak for hjælpen
Avatar billede jackass- Nybegynder
29. marts 2006 - 13:32 #1
Sådan her.. kan godt være du lige skal have rettet lidt data til hvis folk ikke selv bare skal skrive fx typen med alm. cleartext:

--------------------
<?php
//http://www.eksperten.dk/spm/690481
session_start();
if (!empty($_POST['email']) && !empty($_POST['antal']) && !empty($_POST['type']) && !empty($_POST['navn']) && !empty($_POST['adresse']) && !empty($_POST['by']))
{
    $from = $_POST['email'];
    $subject  = "Tilmelding til nyhedsbrev";
    $message  = "Antal: " . $_POST['antal'] . "\n";
    $message .= "Type: " . $_POST['type'] . "\n";
    $message .= "Navn: " . $_POST['navn'] . "\n";
    $message .= "Adresse: " . $_POST['adresse'] . "\n";
    $message .= "By: " . $_POST['by'] . "\n";

    if(mail("xxx@x.dk", $subject, $message, "From: $from\r\nReply-To: $from\r\nX-Mailer: PHP/" . phpversion()))
    {
        //Email er sendt ok
        $_SESSION['sendt'] = 1;
        header("Location: " . $_SERVER['PHP_SELF']);
        exit();
    }
    else
    {
        //Email blev ikke sendt, der opstod en fejl...
        $_SESSION['sendt'] = 2;
        header("Location: " . $_SERVER['PHP_SELF']);
        exit();
    }
}

if(isset($_SESSION['sendt']))
{
    if($_SESSION['sendt'] == 1)
    {
        echo("Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!");
    }
    else
    {
        echo("Din besked blev ikke afsendt korrekt - prøv igen!");
    }
    unset($_SESSION['sendt']);
}
else
{
    ?>
            <form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
            <table width="234">
              <tr>
                <td width="52">Mail:</td>
                <td width="144"><input type="text" name="email"></td>
              </tr>
              <tr>
                <td width="52">Antal:</td>
                <td width="144"><input type="text" name="antal"></td>
              </tr>
              <tr>
                <td width="52">Type:</td>
                <td width="144"><input type="text" name="type"></td>
              </tr>
              <tr>
                <td width="52">Navn:</td>
                <td width="144"><input type="text" name="navn"></td>
              </tr>
              <tr>
                <td width="52">Adresse:</td>
                <td width="144"><input type="text" name="adresse"></td>
              </tr>
              <tr>
                <td width="52">By:</td>
                <td width="144"><input type="text" name="by"></td>
              </tr>
              <tr>
                <td colspan="2"><input type="submit" name="send" value="Send"></td>
              </tr>
          </table>
    <?
}
?>
Avatar billede tza Nybegynder
29. marts 2006 - 13:50 #2
Det ser godt ud, men kan det passe at jeg ikke kan hente siden igen, efter jeg har sendt formen én gang??
Avatar billede tza Nybegynder
29. marts 2006 - 13:52 #3
Forresten, subject-feltet skal indeholde det der er skrevet 'type'feltet, og altså ikke tilmelding til nyhedsbrev??
Avatar billede jackass- Nybegynder
29. marts 2006 - 13:59 #4
Ja fordi den tjekker på session.. Jeg havde nok valgt at lave det på en lidt anden måde godt nok.. sådan her fx:

--------------------

<?php
//http://www.eksperten.dk/spm/690481
session_start();
if (!empty($_POST['email']) && !empty($_POST['antal']) && !empty($_POST['type']) && !empty($_POST['navn']) && !empty($_POST['adresse']) && !empty($_POST['by']))
{
    $from = $_POST['email'];
    $subject  = "Tilmelding til nyhedsbrev";
    $message  = "Antal: " . $_POST['antal'] . "\n";
    $message .= "Type: " . $_POST['type'] . "\n";
    $message .= "Navn: " . $_POST['navn'] . "\n";
    $message .= "Adresse: " . $_POST['adresse'] . "\n";
    $message .= "By: " . $_POST['by'] . "\n";

    if(mail("roj@mvb.dk", $subject, $message, "From: $from\r\nReply-To: $from\r\nX-Mailer: PHP/" . phpversion())) {
        //Email er sendt ok
        echo("Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!");
    }
    else {
        //Email blev ikke sendt, der opstod en fejl...
        echo("Din besked blev ikke afsendt korrekt - prøv igen!");
    }
}


else
{
    ?>
            <form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
            <table width="234">
              <tr>
                <td width="52">Mail:</td>
                <td width="144"><input type="text" name="email"></td>
              </tr>
              <tr>
                <td width="52">Antal:</td>
                <td width="144"><input type="text" name="antal"></td>
              </tr>
              <tr>
                <td width="52">Type:</td>
                <td width="144"><input type="text" name="type"></td>
              </tr>
              <tr>
                <td width="52">Navn:</td>
                <td width="144"><input type="text" name="navn"></td>
              </tr>
              <tr>
                <td width="52">Adresse:</td>
                <td width="144"><input type="text" name="adresse"></td>
              </tr>
              <tr>
                <td width="52">By:</td>
                <td width="144"><input type="text" name="by"></td>
              </tr>
              <tr>
                <td colspan="2"><input type="submit" name="send" value="Send"></td>
              </tr>
          </table>
    <?
}
?>
Avatar billede jackass- Nybegynder
29. marts 2006 - 14:02 #5
Ok, så skift den øverste del ud med det her:

    $from = $_POST['email'];
    $subject  = "Type: " . $_POST['type'];
    $message  = "Antal: " . $_POST['antal'] . "\n";
    $message .= "Navn: " . $_POST['navn'] . "\n";
    $message .= "Adresse: " . $_POST['adresse'] . "\n";
    $message .= "By: " . $_POST['by'] . "\n";
Avatar billede tza Nybegynder
29. marts 2006 - 14:26 #6
Hmm, jeg modtager ikke mailen, og får denne besked (har allerede prøvet et par gange med den første kode du skrev, der blev mailen sendt)
Tak for hjælpen indtil videre ;) - Pointene er allerede på vej..



Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/html/v2/shop_test.php:5) in /var/www/html/v2/shop_test.php on line 56

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/html/v2/shop_test.php:5) in /var/www/html/v2/shop_test.php on line 56
Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!
Avatar billede jackass- Nybegynder
29. marts 2006 - 14:28 #7
Dette virker fint for mig:

------------

<?php
//http://www.eksperten.dk/spm/690481
session_start();
if (!empty($_POST['email']) && !empty($_POST['antal']) && !empty($_POST['type']) && !empty($_POST['navn']) && !empty($_POST['adresse']) && !empty($_POST['by']))
{
    $from = $_POST['email'];
    $subject  = "Type: " . $_POST['type'];
    $message  = "Antal: " . $_POST['antal'] . "\n";
    $message .= "Navn: " . $_POST['navn'] . "\n";
    $message .= "Adresse: " . $_POST['adresse'] . "\n";
    $message .= "By: " . $_POST['by'] . "\n";

    if(mail("xxx@x.dk", $subject, $message, "From: $from\r\nReply-To: $from\r\nX-Mailer: PHP/" . phpversion())) {
        //Email er sendt ok
        echo("Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!");
    }
    else {
        //Email blev ikke sendt, der opstod en fejl...
        echo("Din besked blev ikke afsendt korrekt - prøv igen!");
    }
}


else
{
    ?>
            <form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
            <table width="234">
              <tr>
                <td width="52">Mail:</td>
                <td width="144"><input type="text" name="email"></td>
              </tr>
              <tr>
                <td width="52">Antal:</td>
                <td width="144"><input type="text" name="antal"></td>
              </tr>
              <tr>
                <td width="52">Type:</td>
                <td width="144"><input type="text" name="type"></td>
              </tr>
              <tr>
                <td width="52">Navn:</td>
                <td width="144"><input type="text" name="navn"></td>
              </tr>
              <tr>
                <td width="52">Adresse:</td>
                <td width="144"><input type="text" name="adresse"></td>
              </tr>
              <tr>
                <td width="52">By:</td>
                <td width="144"><input type="text" name="by"></td>
              </tr>
              <tr>
                <td colspan="2"><input type="submit" name="send" value="Send"></td>
              </tr>
          </table>
    <?
}
?>
Avatar billede tza Nybegynder
29. marts 2006 - 14:28 #8
Du får lige hele koden, der er tilsyneladende et tag placeret forkert i min <table>... Kan du finde fejlen??
----------------------------------------------


<table width="631" height="450" border="0" align="center" bgcolor="#FFFFFF">
  <tr>
    <td height="286" colspan="2" background="bg_krystal.jpg">&nbsp;</td>
  </tr>
  <tr>
    <td width="506" height="136"></td>
<?php
//http://www.eksperten.dk/spm/690481
session_start();
if (!empty($_POST['email']) && !empty($_POST['antal']) && !empty($_POST['type']) && !empty($_POST['navn']) && !empty($_POST['adresse']) && !empty($_POST['by']))
{
    $from = $_POST['email'];
    $subject  = "Type: " . $_POST['type'];
    $message  = "Antal: " . $_POST['antal'] . "\n";
    $message .= "Navn: " . $_POST['navn'] . "\n";
    $message .= "Adresse: " . $_POST['adresse'] . "\n";
    $message .= "By: " . $_POST['by'] . "\n";

    if(mail("bestilling@xxx.dk", $subject, $message, "From: $from\r\nReply-To: $from\r\nX-Mailer: PHP/" . phpversion())) {
        //Email er sendt ok
        echo("Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!");
    }
    else {
        //Email blev ikke sendt, der opstod en fejl...
        echo("Din besked blev ikke afsendt korrekt - prøv igen!");
    }
}


else
{
    ?>
            <form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
            <table width="234">
              <tr>
                <td width="52">Mail:</td>
                <td width="144"><input type="text" name="email"></td>
              </tr>
              <tr>
                <td width="52">Antal:</td>
                <td width="144"><input type="text" name="antal"></td>
              </tr>
              <tr>
                <td width="52">Type:</td>
                <td width="144"><input type="text" name="type"></td>
              </tr>
              <tr>
                <td width="52">Navn:</td>
                <td width="144"><input type="text" name="navn"></td>
              </tr>
              <tr>
                <td width="52">Adresse:</td>
                <td width="144"><input type="text" name="adresse"></td>
              </tr>
              <tr>
                <td width="52">By:</td>
                <td width="144"><input type="text" name="by"></td>
              </tr>
              <tr>
                <td colspan="2"><input type="submit" name="send" value="Send"></td>
              </tr>
          </table>
    <?
}
?>
    <td width="115"><img src="sect_bar_shop.jpg" width="122" height="136"></td>
  </tr>
  <tr>
    <td height="33" colspan="2">

<?php
include("v2bund.txt");
?>
</td>
  </tr>
</table>
Avatar billede jackass- Nybegynder
29. marts 2006 - 14:28 #9
Du skal selvfølgelig lige huske at skifte

if(mail("xxx@x.dk",

..ud med din egen mailadresse :)
Avatar billede tza Nybegynder
29. marts 2006 - 14:39 #10
^Hehe, det er jeg selvf. med på...

Nu bliver mailen sendt og jeg kan åbne siden igen osv...
Men jeg får stadig fejlen;


Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/html/v2/shop_test.php:5) in /var/www/html/v2/shop_test.php on line 56

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/html/v2/shop_test.php:5) in /var/www/html/v2/shop_test.php on line 56
Du er nu tilmeldt nyhedsbrevet, og vil løbende blive informeret...Tak!


- Kan jeg iøvrigt placere den tekst brugeren får tilbage, et andet sted på siden??
(alså 'Du er nu tilmeldt....')

Tak for hjælpen!
Avatar billede jackass- Nybegynder
29. marts 2006 - 14:42 #11
Det er fordi

<table width="631" height="450" border="0" align="center" bgcolor="#FFFFFF">
  <tr>
    <td height="286" colspan="2" background="bg_krystal.jpg">&nbsp;</td>
  </tr>
  <tr>
    <td width="506" height="136"></td>

..er placeret inden session_start();

Smid det et andet sted nedenunder. Det ser lidt ud som om der er rod i dine tables?
Avatar billede tza Nybegynder
29. marts 2006 - 14:45 #12
Det ser ud til at mailen bliver sendt med mit eget domæne som afsender, jeg får mail@domænet.dk i mit 'afsender'felt i indbakken??
Avatar billede tza Nybegynder
29. marts 2006 - 14:48 #13
Undskyld jeg spammer dig sådan med spørgsmål, sætter pris på hjælpen!!!
Avatar billede tza Nybegynder
29. marts 2006 - 16:23 #14
Mailen bliver sendt fint, så ingen problemer dér!

Jeg får dog stadig samme fejl;

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/html/v2/shop_test.php:5) in /var/www/html/v2/shop_test.php on line 51

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/html/v2/shop_test.php:5) in /var/www/html/v2/shop_test.php on line 51
---------

Tak for hjælpen, pointene er fortjent... (hvis bare jeg lige kan få regnet det sidste ud ;) )
Avatar billede tza Nybegynder
30. marts 2006 - 13:25 #15
Aloha?! - Er du forsvundet nu hvor jeg har givet point??? - Andre der kan hjælpe??

På forhånd tak!
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