Autor Zpráva
Denis Kryštof
Profil
Ahoj,
tvořím formulář s přílohou. Dopředu chci říct, že jsem nad tím strávil hodně času a zkoušení, ale nikdy se mi nepodařilo zprovoznit tu přílohu (textové zprávy chodí v pořádku). Proto se obracím na vaši pomoc. Budu strašně vděčný, když mi někdo pomůže dopsat tu funkci na přílohu do souboru contact.php (do databáze se zapisovat nemusí). Jinak PHPMailer nechci (to by byla poslední možnost).

Zasílám script, ze kterého už nevím další cestu:

INDEX.PHP
<form method="POST" action="contact.php" id="formular">
                                <input autocomplete="off" type="text" name="fullname" placeholder="Jméno a příjmení" class="kontakt-single clrthis" required><br>
                                <input autocomplete="off" type="email" name="email" placeholder="Email" class="kontakt-double clrthis" style="float: left;" required>
                                <input autocomplete="off" type="text" name="phone" placeholder="Telefon" class="kontakt-double clrthis" style="float: right;" required><br>
                                <textarea name="message" placeholder="Zpráva" class="kontakt-textarea clrthis" required></textarea><br>
                                <input type="file" name="soubor"><br>
                                <input type="submit" name="submit" value="Odeslat zprávu" class="kontakt-submit">
                            </form>

                            <script type="text/javascript">
                                $("#formular").submit(function(e) {
                                    e.preventDefault();

                                    var form = $(this);
                                    var url = form.attr('action');

                                    $.ajax({
                                          type: "POST",
                                          url: url,
                                          data: form.serialize(),
                                          success: function(data)
                                          {
                                            $("#formular").prepend(data);

                                            var areas = document.getElementsByClassName("clrthis");

                                            for(var i = 0; i < areas.length; i++){
                                                areas[i].value = "";
                                            }
                                        }
                                    });
                                });
                            </script>

CONTACT.PHP
<?php
    include_once "headers.php";
    include_once "db.php";

    function check_if_empty($input){
        if(empty($input))
            return "-";
        else
            return $input;
    }

    if((!empty($_POST["email"]) || !empty($_POST["phone"])) && !empty($_POST["fullname"]) && !empty($_POST["message"])){
        $to      = "prijemce@email.cz";
        $subject = "Dotaz";

        $message = htmlspecialchars(check_if_empty($_POST["fullname"]))."<br>";
        $message .= htmlspecialchars(check_if_empty($_POST["email"]))."<br>";
        $message .= htmlspecialchars(check_if_empty($_POST["phone"]))."<br><br>";
        $message .= str_replace("\n", "<br>", check_if_empty($_POST["message"]));

        $headers = "Content-Type: text/html; charset=UTF-8\r\n";
        $headers .= "From: odesilatel@email.cz";

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

        $stmt = $connection->prepare("INSERT INTO messages (id, fullname, email, phone, message) VALUES (null, ?, ?, ?, ?)");
        $stmt->bind_param("ssss", $fullname, $email, $phone, $message);

        $fullname = $connection->real_escape_string(htmlspecialchars(check_if_empty($_POST["fullname"])));
        $email = $connection->real_escape_string(htmlspecialchars(check_if_empty($_POST["email"])));
        $phone = $connection->real_escape_string(htmlspecialchars(check_if_empty($_POST["phone"])));
        $message = $connection->real_escape_string(htmlspecialchars(check_if_empty($_POST["message"])));

        if($stmt->execute())
            echo "Děkujeme, na Vaši zprávu odpovíme nejpozději do 24 hodin.";
        else
            echo "Omlouváme se, ale při zpracování došlo k chybě.";
    }
    else {
        echo "Omlouváme se, ale nebyly správně zadané údaje.";
    }
?>

Díky kluci za každou pomoc.
lionel messi
Profil
Denis Kryštof:

Niežeby mi na tom až tak záležalo, ale môžem sa spýtať, aké pohnútky ťa viedli/vedú k vytvoreniu novej identity? Odeslání emailu s hodnotami checkbox, checkmark, number

PHP pracuje s uploadovanými súbormi pomocou superglobálneho poľa $_FILES["name_z_formularoveho_pole"], ktoré v tvojom kóde úplne absentuje.

Ani hlavičky nemáš zostavené tak, aby indikovali prítomnosť prílohy, inšpiruj sa napr. https://stackoverflow.com/a/12313090.

Taktiež by som preveril, či nemusí mať element form nastavený atribút enctype="multipart/form-data" (nie som si celkom istý, ako je to v prípade jQuery).

Mimochodom, prečo nechceš PHPMailer? S ohľadom na PHP funkciu mail je to najjednoduchšie a najspoľahlivejšie riešenie.
Denis Kryštof
Profil
lionel messi:
Z tebou zasílané diskuze jsme včera kód zkopíroval a byl to poslední funkční script, který jsem našel.

Jinak děkuji
lionel messi
Profil
<mimo témy>

Denis Kryštof:
Z tebou zasílané diskuze jsme včera kód zkopíroval a byl to poslední funkční script, který jsem našel.

V odkázanej diskusii nie je reč o prílohách. Ak ako začiatočník hľadám skript na odosielanie mailu s prílohami, obvykle skopírujem skript na odosielanie mailu s prílohami a nie hocijaký skript na odosielanie mailov. Preto si ma svojím vysvetlením presvedčil, že si Honza21.

</mimo témy>
Davex
Profil
Denis Kryštof:
Jinak PHPMailer nechci
Proč? Je to široko daleko nejjednodušší a funkční varianta.

lionel messi:
Preto si ma svojím vysvetlením presvedčil, že si Honza21.
Nepleteš se.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0