Hallo allemaal.

Heb ergens van deze site uit een tutorial een contactformulier gekopieerd en hij doet zijn ding perfect als er een leeg veld achterblijft, geeft ie een melding aan dat er een veld leeg is gebleven.

Nu wil ik ook dat ik via dit script dus een bijlage mee kan sturen. Ik heb al toegevoegd in het HTML form dat er een bijlage in gevoerd kan worden, maar als ik op verzenden druk, dan verstuurt het script de mail ook netjes, maar ik krijg geen bijlage mee. Heb al verschillende script er in geprobeerd te breien, maar krijg het niet voor elkaar.

Hier mijn aangepaste script:


<?php 
$naar = '[email protected]'; // Verander hier [email protected] naar uw eigen email adress. 
if(isset($_POST['verzend']))  // Als het bericht verzonden is
{ 
    if($_POST['naam'] == '') // Als het veld naam leeg is
    { 
        echo "U heeft geen naam ingevuld!<br />"; 
        echo "<a href='javascript:history.back();' style='color: black; text-decoration:none;'>Klik hier om terug te gaan!</a>";  
    } 
    elseif($_POST['email'] == '') // Als het veld email leeg is.
    { 
        echo "U heeft geen e-mail adress ingevuld!<br />"; 
        echo "<a href='javascript:history.back();' style='color: black; text-decoration:none;'>Klik hier om terug te gaan!</a>"; 
    } 
    elseif($_POST['bericht'] == '') // Als er geen bericht is ingevuld.
    { 
        echo "U heeft geen bericht ingevuld!<br />"; 
        echo "<a href='javascript:history.back();' style='color: black; text-decoration:none;'>Klik hier om terug te gaan!</a>"; 
    } 
    elseif($_POST['onderwerp'] == '') // Als er geen onderwerp is ingevuld
    { 
        echo "U heeft geen onderwerp ingevuld!<br />"; 
        echo "<a href='javascript:history.back();' style='color: black; text-decoration:none;'>Klik hier om terug te gaan!</a>"; 
    } 
    else 
    { 
        if(!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$", $_POST["email"]))  // Als het email adress niet klopt
        { 
            echo "U heeft geen geldig e-mail adress ingevuld!<br />"; 
            echo "<a href='javascript:history.back();' style='color: black; text-decoration:none;'>Klik hier om terug te gaan!</a>"; 
        } 
        else 
        { 
// Mailen: 
            $bericht = " 
<html> 
<head> 
  <title>Contact fomulier</title> 
</head> 
<body> 
  <table border='0' width='50%'> 
   <tr> 
    <td width='20%'>Uw naam:</td> 
    <td>".$_POST['naam']."</td> 
   </tr> 
   <tr> 
    <td width='20%'>Uw e-mail adress:</td> 
    <td>".$_POST['email']."</td> 
   </tr> 
   <tr> 
    <td width='20%'>Het onderwerp:</td> 
    <td>".$_POST['onderwerp']."</td> 
   </tr> 
   <tr> 
    <td width='20%'>Het Bericht:</td> 
    <td>".$_POST['bericht']."</td> 
   </tr> 
   </table> 
</body> 
</html> 
"; 
            $headers = "MIME-Version: 1.0\r\n"; 
            $headers.= "Content-type: text/html; charset=iso-8859-1\r\n"; 
            $headers.= "From: ".$_POST['naam']." <".$_POST['email'].">\r\n"; 
// Headers, zodat we html kunnen gebruiken in de mail, en van wie de mail komt.
            if(mail($naar, $_POST['onderwerp'],$bericht,$headers)) // Als de mail naar de maker is verstuurd
            { 
                echo 'Uw bericht is succesvol verstuurd!'; 
            } 
            else // Anders
            { 
                echo 'Uw bericht is helaas niet verstuurd.'; 
            } 
            $ond = "Uw bericht, verzonden naar". $naar;
            if(mail($naar, $ond,$bericht,$headers)) // Als de mail naar de verzender is verstuurd
            { 
                echo 'Uw bericht is succesvol verstuurd!'; 
            } 
            else // Anders
            { 
                echo 'Uw bericht is helaas niet verstuurd.'; 
            } 
        } 
    } 
} 
else 
{ 
?> 
<!-- Formulier weergeven -->
<table border='0' width='50%'> 
<form method='post' ENCTYPE="multipart/form-data"> 
<tr> 
  <td align='right' width='30%'><b>Contact Systeem</b></td> 
</tr> 
<tr> 
  <td width='20%'>Naam:</td> 
  <td><input type='text' name='naam' /></td> 
</tr> 
<tr> 
  <td width='20%'>E-mail adress:</td> 
  <td><input type='text' name='email' /></td> 
</tr> 
<tr> 
  <td width='20%'>Het onderwerp:</td> 
  <td><input type='text' name='onderwerp' /></td> 
</tr> 
<tr> 
  <td width='20%'>Het Bericht:</td> 
  <td><textarea name='bericht'>Uw Bericht</textarea></td> 
</tr> 

<tr> 
  <td width='20%'>Bijlage</td> 
  <td><input type="file" name="file">
</td> 
</tr> 
<tr> 

<tr> 
  <td colspan='2' align='center'><input type='submit' value='Verzend' name='verzend' /></td> 
</tr> 
</form> 
</table> 
<?php 
} 
?>


Wat moet ik hieraan toevoegen om bestanden mee te versturen van alleen de bestandstypes: RAR ZIP (Gelieve ook JPG met een maximale grote van 800*600) en een bestandsgrote van maximaal 10mb!

Welke code hoort daarbij, als ik zelf de juiste code alleen in een antwoord krijg, kan ik hem misschien zelf wel plaatsen in het script!

Alvast hartelijke dank!

[EDIT]
<form method='post' ENCTYPE="multipart/form-data"> toegevoegd in script!
Op die plek wordt een melding gegeven dat het bestand geüpload is. Dan is het dus zeker dat het bestand in jouw ftp te vinden is. Nu kun je tussen diezelfde accolades waar ook de melding staat een [php]mail[/php]() functie uitvoeren die de link naar jou mailt.
Zoals op php.net staat:
move_uploaded_file ( string $filename , string $destination )

Deze functie heb jij gebruikt om je bestanden te uploaden, dus de locatie waar het bestand staat is al bekend, namelijk $destination = locatie, $filename = bestandsnaam. in jou geval staat jou bestand nu op locatie:
<?php
$delocatiewaarjegeuploadefilestaat = $url.'/'. $_FILES['file']['tmp_name'];
?>
Dus als je ook nog mail() gebruikt, zou je die link die hierbovenstaat naar jou toe kunnen sturen
mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

<?php
mail('[email protected] 'Iemand heeft wat geupload', $delocatiewaarjegeuploadefilestaat);
?>

Als je nu eens in deze richting kijkt, zou je al een heel eind kunnen komen. Als je de tekst van mij kopieert/plakt, zal het misschien niet werken, maar ik die dit ook alleen maar uit het hoofdje.
Dit is de code die ik nu heb, en die ook werkt! Zim hartstikke bedankt!

Maarja, hier wil ik het natuurlijk niet bij laten ;)

Zoals je kunt zien heb ik in het formulier een paar invoervelden toegevoegd.
Deze wil ik ook mee laten mailen!
Nu heb ik de mail() regel al onderaan het script gezet en ook zo werkt dit nog perfect. Hoe kan ik nu die andere invoervelden ook mee laten emailen?

Heb al geprobeerd om een $message aan te maken, maar dit kreeg ik niet voor elkaar.

En het mooiste zou natuurlijk ook weer zijn dat die invoervelden gecontorleerd word. Heb al geprobeerd het script hieronder samen te voegen met het script uit mijn eerste post. Dit werkte wel, maar als ik dan op submit drukte, dan verstuurde die alleen de inhoud van het formulier van de startpost, en ging de bijlage helaaaas niet mee!

Wie kan mij weer in de goeie richting pushen?


Upload dit bestand en maak in diezelfde dir een nieuwe map aan.
Geef hieronder bij $mapnaam de naam van de map op die je daar aan hebt gemaakt.
Geef die map alle rechten (CHMOD 777)
Vul bij $site hieronder je dir in waar dit bestand in staat.
*/

$url = "http://www.dekschrobbers.nl/mk/test/mail/";
$mapnaam = "/home/dekschro/domains/dekschrobbers.nl/public_html/mk/test/mail/";
$naar = '[email protected]';

if($_POST['submit']) {
    $extensions = array();
    $extensions['ext'][] = "image/gif";
    $extensions['ext'][] = "image/jpg";
    $extensions['ext'][] = "image/jpeg";
    $extensions['ext'][] = "image/pjpeg";
    $extensions['ext'][] = "image/png";
    $extensions['ext'][] = "image/bmp";
    $extensions['ext'][] = "image/x-png";
    if(in_array($_FILES['file']['type'], $extensions['ext'])) {
        if($_FILES['file']['size'] > 1048576) {
            echo "Uw bestand is meer als 1 MB (1024 KB)!<br>Klik <a href='javascript:history.back(1)'>hier</a> om terug te gaan!";
        } else {
            if($_FILES['file']['type'] == "image/gif") {
                $ext = ".gif";
            } elseif($_FILES['file']['type'] == "image/jpg") {
                $ext = ".jpg";
            } elseif($_FILES['file']['type'] == "image/jpeg") {
                $ext = ".jpg";
            } elseif($_FILES['file']['type'] == "image/pjpeg") {
                $ext = ".jpg";
            } elseif($_FILES['file']['type'] == "image/bmp") {
                $ext = ".bmp";
            } elseif($_FILES['file']['type'] == "image/png") {
                $ext = ".png";
            } elseif($_FILES['file']['type'] == "image/x-png") {
                $ext = ".png";
            }
            if(file_exists($mapnaam.$_FILES['file']['name'].$ext)) {
                unlink($mapnaam.$_FILES['file']['name'].$ext);
            }
            if(is_uploaded_file($_FILES['file']['tmp_name'])) {
                move_uploaded_file($_FILES['file']['tmp_name'], $mapnaam.$_FILES['file']['name']);
                echo "Uw bestand is succesvol geupload! <br>Klik <a href='javascript:history.back(1)'>hier</a> om terug te gaan!";
                 $delocatiewaarjegeuploadefilestaat = $url.'/'.$_FILES['file']['name'].''.$ext;
                 
            } else {
                echo "Er is iets fout gegaan tijdens het uploaden!<br>Probeert u het nogmaals..<br>Klik <a href='javascript:history.back(1)'>hier</a> om terug te gaan!";
            }
        }
    } else {
        echo "U heeft een bestand gekozen dat niet de extensie .gif, .jpg, .jpeg, .png of .bmp heeft!<br>Klik <a href='javascript:history.back(1)'>hier</a> om terug te gaan!<br><br>";
    }
} else {
    echo "<form method='post' enctype='multipart/form-data'>
    De volgende extensies zijn toegestaan: .gif & .jpg & .jpeg & .png & .bmp.<br>
    Let wel op dat het bestand niet groter is dan 1 MB<br><br>
    Upload bestand: <input type='file' name='file' id='file'><br>
    Je eigen naam: <input type='text' name='naam' ><br>
    Je eigen email: <input type='text' name='email'><br>
    Van welk feestje komen de fotos: <input type='text' name='feest'><br>    
<br>
    <input type='submit' name='submit' value='Upload bestand..'>
    </form>";
}



mail('$naar', 'Iemand heeft wat geupload', $delocatiewaarjegeuploadefilestaat);


?> 
Goed zo, pleur dingen maar ergens in een hoek. Dan zullen ze altijd werken, toch? Vraag je nu maar eens af wat er gebeurt als je de pagina laadt.
Hmm, beetje vage reactie die ik zelf niet helemaal snap.

Als de pagina nu geladen wordt, leest ie het formulier voor, hier kan ik wat gegevens invoeren en samen met een bestandje. Als ik op versturen druk, dan wordt er met het bestand iets gedaan, met de rest nu nog niks.

Maar als ik mijn controles toe wil voegen, maar moet ik die doen, voor of na het bestandscontrole stukje, en voor welke accolade moet ik het invoegen als het erachter moet!?

 } else {
                echo "Er is iets fout gegaan tijdens het uploaden!<br>Probeert u het nogmaals..<br>Klik <a href='javascript:history.back(1)'>hier</a> om terug te gaan!";
            }
        }
    } else {
        echo "U heeft een bestand gekozen dat niet de extensie .gif, .jpg, .jpeg, .png of .bmp heeft!<br>Klik <a href='javascript:history.back(1)'>hier</a> om terug te gaan!<br><br>";
    }
} else {
echo "<form method='post' enctype='multipart/form-data'>
    De volgende extensies zijn toegestaan: .gif & .jpg & .jpeg & .png & .bmp.<br>
    Let wel op dat het bestand niet groter is dan 1 MB<br><br>
    Upload bestand
Hmm, beetje vage reactie die ik zelf niet helemaal snap.
Check je mailbox maar eens, dan. Misschien dat je geluk hebt gehad, omdat je een variabele binnen quotes gebruikt.
Djemo schreef op 15.04.2008 20:51
Hmm, beetje vage reactie die ik zelf niet helemaal snap.
Check je mailbox maar eens, dan. Misschien dat je geluk hebt gehad, omdat je een variabele binnen quotes gebruikt.


Sorry hoor, maar probeer je me nog wat duidelijk te maken of kraak je me nu af? Ik kan je niet helemaal peilen..

EDIT:
Excuses, snap nu wat je wel bedoeld met de variabele tussen haakjes, maar je komt nog steeds over als chagerijnig, afkrakend??
Maikel, is het zo moeilijk om 5 woordjes die samen één zin vormen te begrijpen? "Check-je-mailbox-maar-eens". Moeilijk, toch?

Hetgeen waar ik je op wil attenderen is het volgende. De mail() functie staat bij jou buiten enige controle en zal dus áltijd maar dan ook áltijd uitgevoerd worden. Ookal zit er helemaal niks in $delocatievanjebestandblablabla. Dus, als iemand nu de pagina telkens refresht, wordt jouw mailbox ondergespamd.
Snap je het nu?
Ja, dat klopt als de pagina ververst wordt, krijg ik constant email ja, misschien moet ik dat maar eens proberen op te lossen...

Dat gaf ik ook aan in mijn edit, maar je komt nog steeds erg chagerijnig over? Beetje degraderend, sorry..
Sorry, afkrakend en chagarijnig overkomen is helemaal niet mijn bedoeling. Je edit heb ik niet meer gelezen. Maar het is een beetje frustrerend als je drie dezelfde posts moet plaatsen en dat diegene het dan nog niet snapt. Terwijl als er even goed gelezen wordt en ook maar enige kennis is dit allang begrepen was.

Enfin, niet afkrakend bedoelt, al helemaal geen aanval naar jou. De mail functie hoort niet thuis onderaan je pagina. Maar - zoals ik al 2 keer eerder heb gezegd - in dezelfde if-lus als waar je melding staat dat het bestand is geüpload ;-).

Reageren