Avatar billede mmark Nybegynder
02. september 2008 - 11:16 Der er 20 kommentarer

Hjælp til mailer funktion

Hej,

Jeg har nedenståend mailform. Det virker til dels. Altså mailen kommer frem. Men hvis brugeren ikke udfylder alle felter, så kommer der en fejlside, selvom mailen kommer frem.

Hvad skal der tilføjes for, at der bliver chekket for at alle felter er udfyldt når der klikkes på "Bestil vareprøver". Så brugeren bliver tvunget til at udfylde felterne og vi ikke modtager mails uden alle info?

FORM:
<form onsubmit="validering();return false;" action="mailer.php" method="post">
    <table>
        <tbody>
            <tr>
                <td>Navn:</td>
                <td><input size="19" name="navn"/></td>
            </tr>
            <tr>
                <td>Gade:</td>
                <td><input size="19" name="gade"/></td>
            </tr>
            <tr>
                <td>Postnr.:</td>
                <td><input size="19" name="postnr"/></td>
            </tr>
            <tr>
                <td>By:</td>
                <td><input size="19" name="by"/></td>
            </tr>
            <tr>
                <td>E-mail*:</td>
                <td><input name="email"/></td>
            </tr>
            <tr>
                <td>Varepr&oslash;ver:</td>
                <td><textarea name="vareproever" rows="5" cols="30"></textarea></td>
            </tr>
            <tr>
            </tr>
            <tr>
                <td></td>
                <td><input type="submit" name="submit" value="Bestil vareprøver"/></td>
            </tr>
        </tbody>
    </table>
</form>
Avatar billede jakobdo Ekspert
02. september 2008 - 11:27 #1
Du skal vise mailer.php koden. :o)
Avatar billede mmark Nybegynder
02. september 2008 - 12:29 #2
if(!isset($_POST['submit'])) {
    ob_end_clean();
   
    header("Location: http://www.minside.dk");
    die();
}

$from = "min@mail.dk";
$subject = "Kontakt";

$navn_field = $_POST['navn'];
$gade_field = $_POST['gade'];
$postnr_field = $_POST['postnr'];
$by_field = $_POST['by'];
$email_field = $_POST['email'];
$vareproever = $_POST['vareproever'];


$sql_query =  "REPLACE INTO `table_samples_orders` ( `Name` , `City` , `Street` , `Email` , `Postal_Code` , `Order_Text` , `Order_Date`, `Mail_Sent_Date`) "
            . "VALUES ('$navn_field', '$by_field', '$gade_field', '$email_field', '$postnr_field', '$vareproever', NOW( ), NOW( ))";

mysql_query($sql_query);

    $headers    = "From: Mig <min@mail.dk>"
                . "\nMIME-Version: 1.0"
                . "\nContent-Type: text/plain; charset=iso-8859-1"
                . "\nContent-Transfer-Encoding: 8bit"
                . "\nX-Mailer: PHP/" . phpversion();

    $subject     = "Kontakt";
    $body ="Hej $navn_field\n;
        $body ="Min tekst etc.\n;

    \n\n";

    $to = "$navn_field <$email_field>";
    $i = 0;
    mail($to, $subject, $body, $headers);
    mail("min@mail.dk", $subject, $body, $headers);

header("Location: http://www.minside.dk"); /* Redirect browser */
Avatar billede jakobdo Ekspert
02. september 2008 - 13:10 #3
Du skal lave et tjek, at disse felter er sat:

$navn_field = $_POST['navn'];
$gade_field = $_POST['gade'];
$postnr_field = $_POST['postnr'];
$by_field = $_POST['by'];
$email_field = $_POST['email'];
$vareproever = $_POST['vareproever'];

Du kan tjekke dem med isset(), empty(), regexp eller lign. :o)
Avatar billede mmark Nybegynder
02. september 2008 - 13:22 #4
Hej Jakobdo,

Hvor og hvordan skal jeg gøre det? er det i onsubmit?
Avatar billede jakobdo Ekspert
02. september 2008 - 13:39 #5
Nej, det skal laves i din mailer.php
Avatar billede jakobdo Ekspert
02. september 2008 - 13:39 #6
Du kan også lave noget validering i javascript, men det må du ikke stole på.
Avatar billede mmark Nybegynder
02. september 2008 - 13:44 #7
ok, har du et forslag til hvordan jeg skal gøre i det i mailer.php?
Avatar billede jakobdo Ekspert
02. september 2008 - 13:47 #8
Lige over:

$navn_field = $_POST['navn'];
$gade_field = $_POST['gade'];
$postnr_field = $_POST['postnr'];
$by_field = $_POST['by'];
$email_field = $_POST['email'];
$vareproever = $_POST['vareproever'];

kunne du lave:
if(isset($_POST['navn']) && empty($_POST['navn'])){
echo 'Du mangler at skrive et navn, prøv igen';
}

if(isset($_POST['gade']) && empty($_POST['gade'])){
echo 'Du mangler at skrive et gadenavn, prøv igen';
}

osv...
Avatar billede mmark Nybegynder
02. september 2008 - 14:02 #9
Hvis jeg sætter det ind efter felter som du har vidst, så virker det ikke?
Avatar billede jakobdo Ekspert
02. september 2008 - 14:10 #10
Virker det ikke ?
Eller spørger du om det virker ?
Avatar billede mmark Nybegynder
02. september 2008 - 14:48 #11
Jeg har sat det ind og det virker ikke. Jeg ved ikke om det konflikter med den første linie i filen?
Avatar billede jakobdo Ekspert
02. september 2008 - 14:56 #12
Vis hele din mailer.php
Avatar billede mmark Nybegynder
02. september 2008 - 15:36 #13
<?php
include_once("../admin1/install/config.php");
ob_start();
include_once("../admin1/install/defs.php");

if(!isset($_POST['submit'])) {
    ob_end_clean();
   
    header("Location: http://www.minside.dk");
    die();
}

$from = "min@mail.dk";
$subject = "Kontakt";

$navn_field = $_POST['navn'];
$gade_field = $_POST['gade'];
$postnr_field = $_POST['postnr'];
$by_field = $_POST['by'];
$email_field = $_POST['email'];
$vareproever = $_POST['vareproever'];


$sql_query =  "REPLACE INTO `table_samples_orders` ( `Name` , `City` , `Street` , `Email` , `Postal_Code` , `Order_Text` , `Order_Date`, `Mail_Sent_Date`) "
            . "VALUES ('$navn_field', '$by_field', '$gade_field', '$email_field', '$postnr_field', '$vareproever', NOW( ), NOW( ))";

mysql_query($sql_query);

    $headers    = "From: Mig <min@mail.dk>"
                . "\nMIME-Version: 1.0"
                . "\nContent-Type: text/plain; charset=iso-8859-1"
                . "\nContent-Transfer-Encoding: 8bit"
                . "\nX-Mailer: PHP/" . phpversion();

    $subject    = "Kontakt";
    $body ="Hej $navn_field\n;
        $body ="Min tekst etc.\n;

    \n\n";

    $to = "$navn_field <$email_field>";
    $i = 0;
    mail($to, $subject, $body, $headers);
    mail("min@mail.dk", $subject, $body, $headers);

header("Location: http://www.minside.dk"); /* Redirect browser */
ob_end_clean();
?>
Avatar billede jakobdo Ekspert
02. september 2008 - 16:02 #14
<?php
include_once("../admin1/install/config.php");
ob_start();
include_once("../admin1/install/defs.php");

if(!isset($_POST['submit'])) {
    ob_end_clean();
 
    header("Location: http://www.minside.dk");
    die();
}

$from = "min@mail.dk";
$subject = "Kontakt";

if(isset($_POST['navn']) && empty($_POST['navn'])){
    echo 'Du mangler at skrive et navn, prøv igen';
}

if(isset($_POST['gade']) && empty($_POST['gade'])){
    echo 'Du mangler at skrive et gadenavn, prøv igen';
}

if(isset($_POST['postnr']) && empty($_POST['postnr'])){
    echo 'Du mangler at skrive et postnummer, prøv igen';
}

if(isset($_POST['by']) && empty($_POST['by'])){
    echo 'Du mangler at skrive en by, prøv igen';
}

if(isset($_POST['email']) && empty($_POST['email'])){
    echo 'Du mangler at skrive en email, prøv igen';
}

if(isset($_POST['vareproever']) && empty($_POST['vareproever'])){
    echo 'Du mangler at angive vareprøver, prøv igen';
}

$navn_field = $_POST['navn'];
$gade_field = $_POST['gade'];
$postnr_field = $_POST['postnr'];
$by_field = $_POST['by'];
$email_field = $_POST['email'];
$vareproever = $_POST['vareproever'];


$sql_query =  "REPLACE INTO `table_samples_orders` ( `Name` , `City` , `Street` , `Email` , `Postal_Code` , `Order_Text` , `Order_Date`, `Mail_Sent_Date`) "
            . "VALUES ('$navn_field', '$by_field', '$gade_field', '$email_field', '$postnr_field', '$vareproever', NOW( ), NOW( ))";

mysql_query($sql_query);

    $headers    = "From: Mig <min@mail.dk>"
                . "\nMIME-Version: 1.0"
                . "\nContent-Type: text/plain; charset=iso-8859-1"
                . "\nContent-Transfer-Encoding: 8bit"
                . "\nX-Mailer: PHP/" . phpversion();

    $subject    = "Kontakt";
    $body ="Hej $navn_field\n;
        $body ="Min tekst etc.\n;

    \n\n";

    $to = "$navn_field <$email_field>";
    $i = 0;
    mail($to, $subject, $body, $headers);
    mail("min@mail.dk", $subject, $body, $headers);

header("Location: http://www.minside.dk"); /* Redirect browser */
ob_end_clean();
?>
Avatar billede mmark Nybegynder
02. september 2008 - 21:08 #15
Jeg harprøvet at sætte dit forslag ind, men jeg får følgende fejl:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, morten@mmark.dk and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.
Avatar billede jakobdo Ekspert
02. september 2008 - 21:22 #16
Fandt en fejl, test her:

<?php
//http://www.eksperten.dk/spm/843898
include_once("../admin1/install/config.php");
ob_start();
include_once("../admin1/install/defs.php");

if(!isset($_POST['submit'])) {
    ob_end_clean();

    header("Location: http://www.minside.dk");
    die();
}

$from = "min@mail.dk";
$subject = "Kontakt";

if(isset($_POST['navn']) && empty($_POST['navn'])){
    echo 'Du mangler at skrive et navn, prøv igen';
}

if(isset($_POST['gade']) && empty($_POST['gade'])){
    echo 'Du mangler at skrive et gadenavn, prøv igen';
}

if(isset($_POST['postnr']) && empty($_POST['postnr'])){
    echo 'Du mangler at skrive et postnummer, prøv igen';
}

if(isset($_POST['by']) && empty($_POST['by'])){
    echo 'Du mangler at skrive en by, prøv igen';
}

if(isset($_POST['email']) && empty($_POST['email'])){
    echo 'Du mangler at skrive en email, prøv igen';
}

if(isset($_POST['vareproever']) && empty($_POST['vareproever'])){
    echo 'Du mangler at angive vareprøver, prøv igen';
}

$navn_field = $_POST['navn'];
$gade_field = $_POST['gade'];
$postnr_field = $_POST['postnr'];
$by_field = $_POST['by'];
$email_field = $_POST['email'];
$vareproever = $_POST['vareproever'];


$sql_query =  "REPLACE INTO `table_samples_orders` ( `Name` , `City` , `Street` , `Email` , `Postal_Code` , `Order_Text` , `Order_Date`, `Mail_Sent_Date`) "
            . "VALUES ('$navn_field', '$by_field', '$gade_field', '$email_field', '$postnr_field', '$vareproever', NOW( ), NOW( ))";

mysql_query($sql_query);

    $headers    = "From: Mig <min@mail.dk>"
                . "\nMIME-Version: 1.0"
                . "\nContent-Type: text/plain; charset=iso-8859-1"
                . "\nContent-Transfer-Encoding: 8bit"
                . "\nX-Mailer: PHP/" . phpversion();

    $subject    = "Kontakt";
    $body ="Hej $navn_field\n";
        $body .="Min tekst etc.\n\n\n";

    $to = "$navn_field <$email_field>";
    $i = 0;
    mail($to, $subject, $body, $headers);
    mail("min@mail.dk", $subject, $body, $headers);

header("Location: http://www.minside.dk"); /* Redirect browser */
ob_end_clean();
?>
Avatar billede mmark Nybegynder
02. september 2008 - 21:35 #17
Den giver stadig samme fejl
Avatar billede jakobdo Ekspert
02. september 2008 - 21:41 #18
Den kode virker fint nok hos mig.
Avatar billede mmark Nybegynder
02. september 2008 - 22:10 #19
Skal jeg evt. ændre noget i selveformen?
Avatar billede jakobdo Ekspert
02. september 2008 - 22:18 #20
Ikke til at starte med.
Hvad sker der hvis du kalder mailer.php direkte ?
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