Gegevens uit formulier ontvangen per e-mail

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Koen de Bakker

Koen de Bakker

30/09/2014 21:37:00
Quote Anchor link
Hallo,

Ik ben mij aan het verdiepen in de wonderbaarlijke wereld van PHP en ik zit met een mailformuliertje en een stukje php om het formulier af te handelen, die niet doen wat ik had gehoopt dat ze zouden doen. De inhoud zou ik in de mail moeten ontvangen, maar dat gebeurt dus niet.

Dit is het formuliertje:

oefenbestand formulier.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<form action ="formulier uitlezen.php" method = "post">

    <input type = "hidden" name = "to" value = "[email protected]">
    <input type = "hidden" name = "subject" value = "mail van het oefenbestand">
    <input type = "hidden" name = "redirect" value = "roterende homepage 1.html">
    
    naam: <input type = "text" name = "naam"> <br />
    E-mail: <input type = "text" name = "mailadres"> <br />
    Uw reactie: <textarea cols = "30" rows = "4" name = "reactie"></textarea> <br />
    
    <input type = "submit" value = "verzenden">


En dit is het bestandje om het formulier af te handelen:

formulier uitlezen.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php

ini_set ("SMTP", "smtp.zeelandnet.nl");
ini_set ("smtp_port", 25);
ini_set ("sendmail_from", "[email protected]");

$to = $_POST ["to"];
$subject = $_POST ["subject"];
$redirect = $_POST ["redirect"];

if (!$to)
{

    echo "geen ontvanger opgegeven";
    exit;
}


reset ($_POST);
while ($postvar = each ($_POST))
{

    $varnaam = $postvar ['key'];
    $varinhoud = $postvar ['value'];
    $boodschap = $varnaam." = ".$varinhoud."\n";
}


mail ($to, $subject, $boodschap);

if (isset ($redirect))
{

    header ("location: $redirect");
}


?>



Kan iemand mij zeggen wat ik hier fout doe (heb ook al wat geprobeerd met localhost)? Ik heb een mailaccount bij zeelandnet en die is gekoppeld aan m'n gmail. Daar lees ik altijd mijn mail uit. Misschien heeft het daar wat mee te maken?

Hopelijk stel ik hiermee geen al te stomme vraag en kan iemand me uit de brand helpen.

Bij voorbaat dank,

Koen
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 30/09/2014 21:50:27 door - Ariën -
 
PHP hulp

PHP hulp

20/04/2024 07:12:09
 
Eddy E

Eddy E

30/09/2014 21:49:12
Quote Anchor link
Waarom $boodschap = $var . "=".$postvar['value'] gebruiken?
En niet gewoon $_POST['reactie']?

Als je al je gegevens in de inhoud wil hebben, kijk eens hier naar:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo print_r($_POST, true);
?>


Dat echoëd de hele $_POST-array naar je scherm.
Dat kan je ook in je $boodschap zetten.
 
Koen de Bakker

Koen de Bakker

30/09/2014 22:32:51
Quote Anchor link
Beste Eddy E,

Dank je voor je reactie.

Met $_POST['reactie'] sla ik inderdaad een hoop onnodige handelingen over.

Heb je nog een suggestie voor me hoe ik de gegevens uit het formulier in mijn mailbox binnen kan krijgen (ook al is het bij mij nu nog lokaal geknutsel via xampp)? Dat is voor mij de stap naar iets wat uiteindelijk een online werkregistratie voor op mijn werk moet worden.

Bij voorbaat dank,

Koen.
 

30/09/2014 22:51:14
Quote Anchor link
Koen,

Ik heb hier een script die gebruik maakt van een class, PHPmailer.
Dit script is zo ingericht zodat je gemakkelijk emails kunt sturen gebruikmakend van een externe SMTP server.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
// Eerst gaan we de error reporting aanzetten zodat we kunnen zien wat er misgaat
error_reporting(E_ALL & ~E_NOTICE);

// We gaan de autoloader inladen zodat we alles uit de class kunnen gebruiken
require 'PHPMailerAutoload.php';

// We maken een nieuw object aan zodat we een e-mail kunnen gaan versturen
$mail = new PHPMailer;

$mail->SMTPDebug = 3;                                 // We willen HEEL graag zien wat er gebeurd en misschien fout gaat

$mail->isSMTP();                                            // We gaan een e-mail sturen via een andere server, Google in dit geval
$mail->Host = 'smtp.gmail.com';                                // Hoe heet de server waar we vanaf willen sturen?
$mail->SMTPAuth = true;                                        // Ja we willen de STMP gebruiken van een andere server
$mail->Username = '[email protected]';                // Jou gebruikersnaam van gmail incl. @gmail.com
$mail->Password = 'en-jou-wachtwoord';                        // Jou wachtwoord voor Gmail
$mail->SMTPSecure = 'tls';                            
$mail->Port = 587;                                    

$mail->From = '[email protected]';                // Dit is de afzender van de e-mail
$mail->FromName = 'Jou-naam';                            // En jou naam, dit voorkomt dat het gezien wordt als SPAM
$mail->addAddress('[email protected]', 'Joe User');        // Naar wie moet het toe?

$mail->isHTML(true);                                    // Wordt de e-mail in HTML of niet?

$mail->Subject = 'Here is the subject';                        // Jou onderwerp
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';                // Hier jou HTML inhoud
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';    // En hier alles zonder HTML, maar dit is niet verplicht

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
}
else {
    echo 'Message has been sent';
}

?>


Nu is het aan jou om een urenbriefje te maken die dan in de body van de e-mail gezet wordt.

Uiteraard kunnen we je erbij helpen mocht je vastlopen.
 
Koen de Bakker

Koen de Bakker

30/09/2014 22:55:26
Quote Anchor link
Bedankt Rickert,

Ik ga ermee aan de slag!
 

30/09/2014 23:08:21
Quote Anchor link
Sorry ik was nog vergeten dat je ook PHPmailer even moet downloaden.
 
Koen de Bakker

Koen de Bakker

01/10/2014 00:00:41
Quote Anchor link
Dank je Rickert,

Heb er ook nog class.phpmailer.php bij moeten downloaden, but now i'm getting somewhere. Bericht komt nu binnen in mijn gmail. Ik knutsel verder!
 
John D

John D

01/10/2014 00:33:54
Quote Anchor link
Rickert Bombaklats op 30/09/2014 23:08:21:
Sorry ik was nog vergeten dat je ook PHPmailer even moet downloaden.
Op PHP Versie 5.4.4 krijg je met phpmailer deprecated warnings op de get_magic_quotes() function.
 

01/10/2014 01:32:52
Quote Anchor link
@john. Ik heb een pull request bij ze ingediend waarmee dit in PHP 5.4 verholpen zou moeten zijn.
Er wordt al wel een check gedaan door hun alleen kent php de functie niet en geeft hij daardoor een error.

Als hij erdoor is zal ik het aangeven en kunnen jullie de nieuwe versie weer downloaden.
 
Xander hoogendoorn

xander hoogendoorn

19/11/2014 16:13:15
Quote Anchor link
Ik zit met een vergelijkbaar issue, alleen heb ik een eigen domeinnaam

http://www.freecontactform.com/email_form.php

gaf mij instructies en ik heb ze letterlijk overgenomen en in http://localhost/test.html geplaatst om de combinatie van html en php uit te proberen.

// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "[email protected]";
$email_subject = "inschrijving";

bovenstaande tekst heb hiermee dus aangepast zoals gevraagd,
ook heb ik er nog geen spam filter er nog opgedaan totdat het nodig is.
Toch ontvang ik geen mail.
doe ik iets fout of moet ik SMTP instellen via XAMMP of local server?
 
- Ariën  -
Beheerder

- Ariën -

19/11/2014 16:23:11
Quote Anchor link
Misschien handig om in een vervolg een nieuw topic te starten, voordat er twee discussies door elkaar heen starten.

Verder gebruik dit de normale mail()-functie van PHP. Je zult OF SMTP in moeten stellen in je php.ini (met restart van Apache), OF eenmailserver moeten installeren, maar dat raad ik niet aan voor beginners, gezien een onveilige mailserver als spam-doorgeefluik kan dienen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.