Avatar billede xvid Seniormester
18. juni 2015 - 18:54 Der er 8 kommentarer og
2 løsninger

formmail problemer

Hej

er der nogen der kan hjælpe mig med at få denne til at virke?

på forhånd tak

<head>
<title></title>
</head>

<body bgcolor="#B5B5B5">

<?
if((isset($_POST['navn'])) && (isset($_POST['email'])) && (isset($_POST['emne'])) && (isset($_POST['besked']))){
mail("min@mail.dk", $_POST['emne'] , $_POST['navn']."  har skrevet denne besked:\n\n".$_POST['besked'] , "From: ".$_POST['email']);

echo "<b>Tak for din mail.<br><br>Tak for din mail</b>";

} else {
?>&nbsp;<br>

<form method=post action="<? echo $_SERVER['PHP_SELF']; ?>">
<div align="center">
  <center>
<table border="1" width="15%" cellspacing="5" cellpadding="0" bordercolor="#B5B5B5" bgcolor="#B5B5B5">
  <tr>
    <td width="37%"><font color="#101842" size="1" face="Verdana">
Dit navn :</font></td>
    <td width="74%"><font color="#101842" size="1" face="Verdana">
Din e-mail :</font></td>
  </tr>
  <tr>
    <td width="37%"><b><font face="Arial" size="2">
<input type=text name=navn size="18" style="font-family: Verdana; font-size: 8 pt; color: #101842; border: 1 solid #000000"></font></b></td>
    <td width="74%"><b><font face="Arial" size="2">
<input type=text name=email size="18" style="font-family: Verdana; font-size: 8 pt; color: #101842; border: 1 solid #000000"></font></b></td>
  </tr>
  <tr>
    <td width="100%" colspan="2"><font size="1" face="Verdana" color="#101842">
Emne :</font></td>
  </tr>
  <tr>
    <td width="100%" colspan="2"><b><font face="Arial" size="2">
<input type=text name=emne size="39" style="font-family: Verdana; font-size: 8 pt; color: #101842; border: 1 solid #000000"></font></b></td>
  </tr>
  <tr>
    <td width="100%" colspan="2"><font face="Verdana" color="#101842" size="1">
Din besked :</font></td>
  </tr>
  <tr>
    <td width="100%" colspan="2"><b><font face="Arial" size="2">
<textarea name=besked rows=5 cols="38" style="font-family: Verdana; font-size: 8 pt; color: #101842; border: 1 solid #000000"></textarea></font></b></td>
  </tr>
  <tr>
    <td width="100%" colspan="2">
<input type=submit value=" Send " style="background-color: #FFFFFF; font-family: Verdana; color: #101842; font-size: 8 pt; border: 1 solid #000000">&nbsp;
<input type="reset" value=" Slet " style="font-family: Verdana; font-size: 8 pt; color: #101842; background-color: #FFFFFF; border: 1 solid #000000">
    </td>
  </tr>
</table>
  </center>
</div>
</form>

<?
}
?>


formmail.php

<?php

$fm = new Form_Mail();

class Form_Mail
{
    /**
    * Form_Mail
    */

    /* set vars */
    var $error_message = "";
    var $print_array = array();
    var $config_vars_array = array("recipient"                => "",
                                  "from"                      => "",
                                  "subject"                  => "Kontakt Form Fra Din Hjemmeside",
                                  "email"                    => "",
                                  "redirect"                  => "",
                                  "required"                  => "",
                                  "env_report"                => "",
                                  "sort"                      => "",
                                  "print_config"              => "",
                                  "print_blank_fields"        => "0",
                                  "title"                    => "Kontakt Form Fra Din Hjemmeside",
                                  "return_link_url"          => "",
                                  "return_link_title"        => "Tilbage",
                                  "missing_fields_redirect"  => "",
                                  "missing_fields_message"    => "En eller flere felter mangler prøv igen.<br>\n<a onclick=\"history.go(-1)\" style=\"color: black;\">Klik her</a> for at vende tilbage.<br>\n",
                                  "background"                => "",
                                  "bgcolor"                  => "#ffffff",
                                  "text_color"                => "#000000",
                                  "link_color"                => "black",
                                  "vlink_color"              => "black",
                                  "alink_color"              => "black",
                                  "thank_you_message"        => "Tak fordi du udfyldte denne form",
                                  );

    var $referers_array = array();

    var $valid_env = array('REMOTE_ADDR','REMOTE_PORT','HTTP_REFERER','HTTP_USER_AGENT');

    function Form_Mail()
    {
        /**
        * Form_Mail();
        */

        $this->referers_array = array($_SERVER["HTTP_HOST"]);

        /* proccess form */
        $this->set_arrays();
        $this->check_referer();
        $this->check_recipient();
        $this->check_required_fields();
        $this->send_form();
        $this->display_thankyou();
    }

    function set_arrays()
    {
        /**
        * set_arrays();
        */

        foreach ($_POST as $key=>$value) {
            if (isset($this->config_vars_array[strtolower("$key")])) {
                $key = strtolower($key);
                $this->config_vars_array["$key"] = $value;
            } else {
                $this->print_array["$key"] = $value;
            }
        }

        /* create an array of config vars to print in message and add them to $print_array */
        if ($this->config_vars_array["print_config"] != "") {
            $print_config_array = explode(",", $this->config_vars_array["print_config"]);
            foreach ($print_config_array as $key=>$value) {
                $value = trim($value);
                $this->print_array["$value"] = $_POST["$value"];
            }
        }

        /* sort $print_array, if requested */
        if ($this->config_vars_array["sort"] == "alphabetic") {
            /* sort alphabetically */
            $print_array_keys_array = array_keys($this->print_array);
            sort($print_array_keys_array);
            foreach ($print_array_keys_array as $key=>$value) {
                $tmp_array["$value"] = $this->print_array["$value"];
            }
            unset($this->print_array);
            $this->print_array = $tmp_array;
        } elseif ($this->config_vars_array["sort"] != "") {
            /* sort according to $sort */
            $sort_array = explode(",", $this->config_vars_array["sort"]);
            foreach ($sort_array as $key=>$value) {
                $value = trim($value);
                $tmp_array["$value"] = $this->print_array["$value"];
            }
            foreach ($this->print_array as $key=>$value) {
                if (!isset($tmp_array["$key"])) {
                    $tmp_array["$key"] = $this->print_array["$key"];
                }
            }
            unset($this->print_array);
            $this->print_array = $tmp_array;
        }

        /* add environmental vars, if set */
        if ($_POST["env_report"] != "") {
            $env_vars_array = explode(",", $_POST["env_report"]);
            foreach ($env_vars_array as $key=>$value) {
                $value = trim($value);
                if (in_array("$value", $this->valid_env)) {
                    $this->print_array["$value"] = $_SERVER["$value"];
                }
            }
        }

        /* remove blank fields, if requested */
        if ($this->config_vars_array["print_blank_fields"] == "0") {
            foreach ($this->print_array as $key=>$value) {
                if ($value == "") {
                    unset($this->print_array["$key"]);
                }
            }
        }
    }

    function check_referer()
    {
        /**
        * check_referer();
        */

        $referer = $_SERVER["HTTP_REFERER"];
        foreach ($this->referers_array as $key=>$value) {
            if ((eregi("^http://$value", $referer)) || (eregi("^https://$value", $referer))) {
                return true;
            }
        }
        $this->error_message = "<b>$referer</b> har ikke rettigheder til at benytte denne form.<br>\n";
        $this->display_error();
        return false;
    }

    function check_recipient()
    {
        /**
        * check_recipient();
        */

        $recipient_array = explode(",", $this->config_vars_array["recipient"]);
        foreach ($recipient_array as $key=>$email) {
            $email = trim($email);
            if(!eregi("^[0-9a-z]([-_.+]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,7}$", "$email")) {
                $this->error_message = "Recipient email is either not set, or is not a valid email address.";
                $this->display_error();
                return false;
            }
        }
        return true;
    }

    function check_required_fields()
    {
        /**
        * check_required_fields();
        */

        if ($this->config_vars_array["required"] != "") {
            $required_fields_array = explode(",", "$_POST[required]");
            foreach ($required_fields_array as $key=>$required_field) {
                $required_field = trim($required_field);
                if ($_POST["$required_field"] == "") {
                    $this->display_missing_fields_error();
                    return false;
                }
            }
        }
        return true;
    }

    function send_form()
    {
        /**
        * send_form();
        */

        $mailBody = "";

        foreach ($this->print_array as $key=>$value) {
            if (is_array($value)) {
                foreach ($value as $key2=>$value2) {
                    $mailBody .= "$key: $value2\n";
                }
            } else {
                $mailBody .= "$key: $value\n";
            }
        }

        $mailHeaders = "From: " . $this->config_vars_array["email"] . "\n";

        if(mail($this->config_vars_array["recipient"], $this->config_vars_array["subject"], $mailBody, $mailHeaders)) {
            return true;
        } else {
            return false;
        }
    }


    function display_thankyou()
    {
        /**
        * display_thankyou();
        */

        if($this->config_vars_array["redirect"] == "") {
            $this->display_header();
            print "<h2>" . $this->config_vars_array["thank_you_message"] . "</h2><br>\n";
            if ($this->config_vars_array["return_link_url"] != "") {
                print "<br>\n";
                print "<a href=\"" . $this->config_vars_array["return_link_url"] . "\">" . $this->config_vars_array["return_link_title"] . "</a><br>\n";
            }
            $this->display_footer();
        } else {
            header("Location: " . $this->config_vars_array["redirect"]);
        }
        exit;
    }

    function display_missing_fields_error()
    {
        /**
        * display_error();
        */

        if($this->config_vars_array["missing_fields_redirect"] == "") {
            $this->display_header();
            print $this->config_vars_array["missing_fields_message"];
            $this->display_footer();
        } else {
            header("Location: " . $this->config_vars_array["missing_fields_redirect"]);
        }
        exit;
    }

    function display_error()
    {
        /**
        * display_error();
        */

        $this->display_header();
        print $this->error_message;
        $this->display_footer();
        exit;
    }

    function display_header()
    {
        /**
        * display_header();
        */

        $bgcolor = $this->config_vars_array["bgcolor"];
        $text_color = $this->config_vars_array["text_color"];
        $background = $this->config_vars_array["background"];
        $link_color = $this->config_vars_array["link_color"];
        $vlink_color = $this->config_vars_array["vlink_color"];
        $alink_color = $this->config_vars_array["alink_color"];

        print "<html>\n";
        print "<head>\n";
        print "<title>$title</title>\n";
        print "</head>\n";
        print "<body text=\"$text_color\" background=\"$background\" bgcolor=\"$bgcolor\" link=\"$link_color\" alink=\"$alink_color\" vlink=\"$vlink_color\">\n";
        print "<div align=\"center\">";
    }

    function display_footer()
    {
        /**
        * display_footer();
        */

        print "</div>\n";
        print "</body>\n";
        print "</html>\n";
    }

}
?>
Avatar billede olsensweb.dk Ekspert
18. juni 2015 - 23:02 #1
hvad fejl får du ??
hvorfor anvender du tabeller til design ?? (man gik bort fra det i år 2000)
hvorfor anvender du inline style ?? din code bliver mere ren og overskuelig hvis du ligger style oppe i head/externt.

er du sikker på dit system understøtter short open tag ??
prøv at lave en vis code i din browser, hvis den visser php code er det ikke understøttet, det er slået fra pr default
<? skal laves om til <?php
http://php.net/manual/en/ini.core.php#ini.short-open-tag


prøv at validere din code, der er mange forældet tags i den.


function Form_Mail()
bliver ikke kaldt automatisk, mere, skal omdøbes til constructor

ref http://php.net/manual/en/language.oop5.decon.php
As of PHP 5.3.3, methods with the same name as the last element of a namespaced class name will no longer be treated as constructor. This change doesn't affect non-namespaced classes.

hvor bruger du Form_Mail ??, hvis den ikke bruges hvorfor har du så vist coden for den ??
Avatar billede xvid Seniormester
19. juni 2015 - 18:37 #2
Hej

Jeg synes ikke at jeg kan få den til at virke, altså sende det hele i en mail.
det er noget jeg har fået hjælp til for længe sidden, kan det gøres enklere og er det noget du kan hjælpe mig med ?
Avatar billede xvid Seniormester
19. juni 2015 - 18:47 #3
ps. jeg har ikke forstand på php
Avatar billede olsensweb.dk Ekspert
19. juni 2015 - 23:16 #4
kan du ikke ligge det online så vi evt kan se fejlen

>altså sende det hele i en mail. 
vil det sige den sender noget af det ??

du bruger ikke  Form_Mail(), så der er ikke nogle grund til at have den code inde

har du set på denne side
http://php.net/manual/en/function.mail.php
Example #2 Sending mail with extra headers.
hvilke er det du forsøger

>kan det gøres enklere og er det noget du kan hjælpe mig med ? 
rens op i din code så du ikke anvender inline style, så er coden ikke så uoverskuelig
Avatar billede xvid Seniormester
20. juni 2015 - 00:17 #5
den viser ikke nogen fejl, det er bare mail adresse der ikke kommer med.

kender du en anden formmail som er mere overskuelig og som virker og evt hvor man kan tilføje et par felter mere, det sidste ikke must, så vil jeg gerne be om det, jeg er virkeligt dårlig til php
Avatar billede olsensweb.dk Ekspert
20. juni 2015 - 00:57 #6
>det er bare mail adresse der ikke kommer med.
har du kontrolleret med udviklings værktøjet i din browser (typisk F12), om det bliver sendt over ?? (burde det gøre)

skriv din mail på denne måde, som jeg linkede til i #4
ref http://php.net/manual/en/function.mail.php
Example #2 Sending mail with extra headers.
   
<?php
$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);
?>

det giver dig mulighed for at kontrollerer (echo) om hver variabel indeholder det du forvendter

>kender du en anden formmail som er mere overskuelig og som virker
umildbart burde din nuværende code virke, hvis din php understøtter short_open_tag
hvis din php ikke undersøttter short_open_tag, skal der lavet den rettelse jeg skrev med fed i #1

senere kan du tage et kig på http://www.eksperten.dk/spm/961816 #3
der bliver mailen sendt i UTF-8 format, for os der ikke gider rode med andre charset, og gerne vil køre utf-8 på alt.
Avatar billede xvid Seniormester
20. juni 2015 - 10:52 #7
Hej igen

Jeg har fundet en med flere felter som virker fint
http://www.freecontactform.com/email_form.php

i linje 147 står der Thank you for contacting us. We will be in touch with you very soon.

er det muligt at tilføje navn og ændre skrifttype til arial 12 ?


--------------
Thank (NAVN) you for contacting us.

We will be in touch with you very soon.
-----------------------------
Avatar billede olsensweb.dk Ekspert
20. juni 2015 - 11:59 #8
>Jeg har fundet en med flere felter som virker fint
sad også selv og googlede https://www.google.com/search?q=html+contact+form
feks.
guide
http://tangledindesign.com/how-to-create-a-contact-form-using-html5-css3-and-php/

div design
http://www.123contactform.com/html-contact-form/
http://www.html-form-guide.com/contact-form/creating-a-contact-form.html
https://css-tricks.com/nice-and-simple-contact-form/

tabel design (forældet)
http://www.freecontactform.com/html_form.php (har du også selv fundet)
http://www.smartaddon.com/contact_form.html (klik af hvad du skal bruge, bør rettes til efterfølgende)

>i linje 147 står der Thank you for contacting us. We will be in touch with you very soon.
>er det muligt at tilføje navn og ændre skrifttype til arial 12 ?

smid et span tag omkring teksten, og giv taget et id eller en class

noget ala (uested)
   
<style type="text/css">
#tak_besked{
    font-family: arial;
    font-size: 12pt;
}
</style>


   
<span id="tak_besked"> Thank you <?php echo $first_name . " " . $last_name; ?> for contacting us.<br>We will be in touch with you very soon.</span>
Avatar billede xvid Seniormester
20. juni 2015 - 13:29 #9
jeg vil gerne sige tak, bare smid et svar :)
Avatar billede olsensweb.dk Ekspert
20. juni 2015 - 14:47 #10
får du her
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