Avatar billede hans01 Forsker
02. december 2016 - 05:43 Der er 2 kommentarer og
1 løsning

kan ikke få formular til at sende informationer via php script

Jeg har rodet med at få min orderformular til at sende informationerne til mig.

På siden www.jeppes-kartofler.dk har jeg en orderform under menu punktet BESTILLING, disse informationer skulle gerne sendes til mig. Mit php script ser sådan ud:

Jeg modtager dog ingen mail, min kontakt formular virker fint, så det er et eller andet i php scriptet der ikke virker.

Kan nogen gennemskue det?


<?php
ini_set("SMTP", "asmtp.intergate.dk");
ini_set("smtp_port", "25");
if(isset($_POST['mail'])) {

    // EDIT THE 2 LINES BELOW AS REQUIRED

    $email_to = "xxxxxx@gmail.com";
    $email_subject = "ORDER FRA www.JEPPES-KARTOFLER.DK";

function died($error) {

        // your error code can go here

        echo "Det er fejl, på den sendte formular! ";
        echo "Fejlene kan ses underneden.<br /><br />";
        echo $error."<br /><br />";
        echo "Venligst returner til formularen og ret fejlene!<br /><br />";

        die();

    }

    // validation expected data exists

    if(!isset($_POST['fornavn']) ||
    !isset($_POST['efternavn']) ||
    !isset($_POST['mail']) ||
    !isset($_POST['telefon']) ||
    !isset($_POST['butik']) ||
    !isset($_POST['adresse']) ||
    !isset($_POST['postnr']) ||
    !isset($_POST['by']) ||
    !isset($_POST['antal']) ||
    !isset($_POST['dato']) ||
    !isset($_POST['betingelser'])) {

    died('Vi er kede af det, med det ser ud som om formularen er udfyldt forkert!');     

    }
        $fornavn = $_POST['fornavn']; // required
        $efternavn = $_POST['efternavn'];
        $mail = $_POST['mail']; // required
        $telefon = $_POST['telefon']; // required
        $butik = $_POST['butik']; // required
        $adresse = $_POST['adresse']; // required
        $postnr = $_POST['postnr']; // required
        $by = $_POST['by']; // required
        $antal = $_POST['antal']; // required
        $dato = $_POST['dato']; // required
        $betingelser = $_POST['betingelser']; // required
        $error_message = "";
        $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';

if(!preg_match($email_exp,$mail)) {

    $error_message .= 'Indtast en gyldig email adresse.<br />';

  }

    $string_exp = "/^[A-Za-z .'-]+$/";

if(!preg_match($string_exp,$fornavn)) {

    $error_message .= 'Indtast et gyldigt navn.<br />';

  }



if(strlen($fornavn) < 2) {

    $error_message .= 'Indtast en gyldig besked.<br />';

  }

if(strlen($error_message) > 0) {
died($error_message);

  }
    $email_message = "Order fra: Jeppes-kartofler.dk.\n\n";
            function clean_string($string) {
                $bad = array("content-type","bcc:","to:","cc:","href");
            return str_replace($bad,"",$string);

    }
    $email_message .= "For Navn: ".clean_string($fornavn)."\n";
    $email_message .= "Efter Navn: ".clean_string($efternavn)."\n";
    $email_message .= "Email: ".clean_string($mail)."\n";
    $email_message .= "Telefon: ".clean_string($telefon)."\n";
    $email_message .= "Butik: ".clean_string($butik)."\n";
    $email_message .= "Levrings adresse: ".clean_string($adresse)."\n";
    $email_message .= "Postnr: ".clean_string($postnr)."\n";
    $email_message .= "By: ".clean_string($by)."\n";
    $email_message .= "Antal kasser: ".clean_string($antal)."\n";
    $email_message .= "Ønsket leveringsdato: ".clean_string($dato)."\n";
    $email_message .= "Betingelser: ".clean_string($betingelser)."\n";

// create email headers

$headers = 'From: '.$mail."\r\n".

'Reply-To: '.$mail."\r\n" .

'X-Mailer: PHP/' . phpversion();

@mail($mail, $email_subject, $email_message, $headers); 
//// set headers ////
    $headers = 'MIME-version: 1.0' . "rn";
    $headers .= "From: $emailrn";   
    header('Location: index.html');
?>
<!-- include your own success html here -->
<?php

}

?>
Avatar billede Slater Ekspert
02. december 2016 - 07:45 #1
mail($mail, $email_subject, $email_message, $headers);

- Den sender mail til $mail, men $mail ser ud til at indeholde afsenderens mail.
Variablen $email_to bliver ikke brugt nogen steder.

Har du prøvet bare at lave en simpel mail('din-email@her', 'test', 'test'); og set om den kommer frem?
Avatar billede olsensweb.dk Ekspert
02. december 2016 - 10:40 #2
nu skulle den kunne forstå PHP, som var fejlen i sidste spm
http://www.computerworld.dk/eksperten/spm/1014040?k=8239913

har du slået error_reporting til ?? giver den nogle fejl ??

ref udviklings værktøjet i chrome -> network -> all

general
Request URL:http://www.jeppes-kartofler.dk/send-order.php
Request Method:POST
Status Code:302 Moved Temporarily
Remote Address:195.178.14.60:80

Response Headers
view source
Content-Length:341
Content-Type:text/html; charset=UTF-8
Date:Fri, 02 Dec 2016 08:44:16 GMT
Location:index.html
Server:Microsoft-IIS/7.5
X-Powered-By:PHP/5.4.14
X-Powered-By:ASP.NET

Request Headers
// slettet

Form Data
view source
view URL encoded
fornavn:dfsw
efternavn:erwq3er
mail:test@olsensweb.dk
telefon:123456
butik:erwe
adresse:erew
postnr:1232
by:erwewr
antal:1 ks a 10kg
dato:09/05/2016  // <-- ups skal man kunne får leveret i fortiden ??
betingelser:on
g-recaptcha-response: // slettet

så form data bliver da sendt til serveren, og man bliver rediageret til index.html igen, så du burde nok teste på om mailen bliver sendt, istedet for at undertrykke evt fejl besked


vedr parameter på mail kig i documentationen
http://php.net/manual/en/function.mail.php

istedet for selv at rode med div headers så brug functionen
mail_utf8
http://php.net/manual/en/function.mail.php#108669

eller OleBoles vertion  (kan anbefales)
http://www.computerworld.dk/eksperten/spm/961816?k=7937170

alternativ til base64_encode kunne være
http://php.net/manual/en/function.quoted-printable-encode.php
http://www.computerworld.dk/eksperten/spm/1001270?k=8169581
eks
http://www.computerworld.dk/eksperten/spm/1012847?k=8233261
Avatar billede hans01 Forsker
03. december 2016 - 07:22 #3
tak til jer begge, nu kunne jeg se det. i stedet for:

@mail($mail, $email_subject, $email_message, $headers); 

så skulle det være:

@mail($email_to, $email_subject, $email_message, $headers); 
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

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