Autor Zpráva
samoch96
Profil
Ahojte trocha som experimentoval s PHP a HTML na vytvorenie emailového formuláru ktorý okrem sprav odosiela aj prílohu. Správy mi odosielalo v poriadku (je to kód ktorý som našiel na nete) a potom som našiel ďalšie postupy ako k tomu kódu dotvorit aj to, aby sa dali posielať aj prílohy. Žiaľ, ako som kód zmenil, už nefunguje celý formulár správne. Neodosiela ani základné údaje (meno, text, mail).. Vedel by ste mi s tým poradiť? Ďakujem
<b>Polia označené * je povinné vyplniť!</b>
    <form action="data.php" method="post">
    <fieldset>
    Meno a Priezvisko: <input name="meno" type="text" size="20" /> *<br />
    Tel. kontakt: <input name="telkontakt" type="text" size="25" /> *<br />
    E-mail: <input name="email" type="text" size="25" /> *<br />
    Text: *<br />
    <textarea name="text" rows="4" cols="29"></textarea><br>
    Priložiť žiadosť o zamestnanie:<br />
    <input name="subor" type=file size=25 name="fileToUpload" id="fileToUpload"><br /><br />
    <input name="odoslat" type="submit" value="Odoslať formulár" style="background:#330000;color:white;border:1px solid #330000;">
    </fieldset></form>

<?php

$prijemca = "nieco@gmail.com";
$predmet = "PREDMET MAILU, KTORÝ PRÍDE";
$meno = $_POST['meno'];
$telkontakt = $_POST['telkontakt'];
$email = $_POST['email'];
$text = $_POST['text'];
$subor = $_POST['subor'];

$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/plain; charset=windows-1250' . "\r\n";
$headers .= 'From: '.$email.'' . "\r\n";

if ($meno && $telkontakt && $email && $text && $subor){

mail("$prijemca", "$predmet", "Meno a Priezvisko: $meno \n Telefón: $telkontakt \n E-mail: $email \n Text: $text \n Priložiť žiadosť o zamestnanie: $subor", $headers);

echo "<b>SEM NAPÍSAŤ TEXT, KTORÝ SA POUŽÍVATEĽOVI ZOBRAZÍ PO KLIKNUTÍ NA TLAČIDLO ODOSLAŤ</b>";
echo "<meta http-equiv=\"refresh\" content=\"6;URL='index.php'\">";

}

elseif (($meno && $email && $telkontakt && $text && $subor) == false){

echo "SEM NAPÍSAŤ TEXT, KTORÝ SA ZOBRAZÍ, KEĎ SA FORMULÁR NEODOŠLE. NAPRÍKLAD PRE NEVYPÍSANIE VŠETKÝCH POLÍ";
echo "<meta http-equiv=\"refresh\" content=\"6;URL='index.php'\">";
}

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" && $imageFileType != "doc" && $imageFileType != "docx" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}

?>
Davex
Profil
1) V kódu formuláře chybí atribut
<form action="data.php" method="post" enctype="multipart/form-data">
2) V poli typu file jsou dva atributy name, ale měl by tam být jen jeden z nich.
<input name="subor" type=file size=25 name="fileToUpload" id="fileToUpload">
3) $subor = $_POST['subor'] a v podmínkách && $subor jsou nesmysly. Informace o nahraných souborech jsou v poli $_FILES.
4) if(isset($_POST["submit"])) { - ve formuláři není žádné odesílací tlačítko s name="submit"
5) K odeslání e-mailu s přílohou doporučuji použít knihovnu PHPMailer.
6) Není dobré lepit dohromady cizí kódy, pokud nerozumíš tomu, co dělají.

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