Hoi,
Je leest er veel over, maar ik kan nog niet de juiste oplossing vinden.
Script php , een contact formulier, waarin de invuller een automatisch antwoord kreeg, de gegevens naar een data base gingen en in mijn email box een mail aankwam werkte prima maar nu niet meer.
De database en mail in mijn box nog wel maar de contact persoon krijgt geen bevestiging.
Het script moet veranderd , is er iemand die een duidelijk voorbeeld heeft wat er nu precies moet worden aangepast? Voor allerlei aanmeldingen zo'n soort formulier gemaakt... html achterwege gelaten.
Waar gaat het nu mis??
Bedankt!
<?php
session_start();
ini_set('display_errors', 1);
error_reporting(E_ALL);

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Zorgen dat de array met errors leeg is.
$_SESSION['errors'] = array();
$_SESSION['input'] = array();

// Velden in het formulier definiëren
$formuliervelden = array(

'Vn1' => 'text',
'Tus1' => 'text',
'An1' => 'text',
'Email1' => 'text',
'Bridgekofferkleur' => 'radio',
'Datum' => 'text',
'Ophalen' => 'text',
'Reactie' =>'textarea',
);

// Velden waar geen controle op uitgevoerd hoeft te worden.
$no_check = array( 'Tus1','Ophalen','Reactie');
// Loop alle elementen uit de $_POST array langs

foreach($formuliervelden as $veld => $type)
{
if($type == 'select')
{
if(empty($_POST[$veld]) && !in_array($veld, $no_check))
{
$_SESSION['errors'][$veld] = true;
$errors[] = 's.v.p. speelsterkte "'.$veld.'" aangeven';

}
else
{
$_SESSION['input'][$veld] = $_POST[$veld];
}
}

elseif($type == 'radio')
{
if(empty($_POST[$veld]) && !in_array($veld, $no_check))
{
$_SESSION['errors'][$veld] = true;
$errors[] = 'Kies een optie bij "'.$veld.'"';
}
else
{
$_SESSION['input'][$veld] = $_POST[$veld];
}
}

else
{
if(isset($_POST[$veld]))
{
// Spaties voor en achter input verwijderen
$value = trim($_POST[$veld]);

// Ingevulde waarden in een sessievariabele zetten.
$_SESSION['input'][$veld] = $value;

// Controle van verschillende velden.
// Velden waar geen controle op uitgevoerd hoeft te worden overslaan.
if(in_array($veld, $no_check))
{
continue;
}


else
{
if(empty($value))
{
$_SESSION['errors'][$veld] = true;
$errors[] = 'Je bent vergeten het veld '.$veld.' in te vullen.';
}
}
}
else
{
$errors[] = 'Het veld '.$veld.' ontbreekt aan het formulier';
}
}
}


// Verwerk het formulier als er geen fouten opgetreden zijn.
if(empty($_SESSION['errors']))
{
// Verwerk het formulier:
// vb. Schrijf gegevens naar een database

include('contactdb.php');

$Vn1 = mysql_real_escape_string($_POST['Vn1']);
$Tus1 = mysql_real_escape_string($_POST['Tus1']);
$An1 = mysql_real_escape_string($_POST['An1']);
$Email1 = mysql_real_escape_string($_POST['Email1']);
$Bridgekofferkleur = mysql_real_escape_string($_POST['Bridgekofferkleur']);
$Datum = mysql_real_escape_string($_POST['Datum']);
$Ophalen = mysql_real_escape_string($_POST['Ophalen']);
$Reactie = mysql_real_escape_string($_POST['Reactie']);


// Schrijf gegevens naar een database

$sql = "
INSERT INTO bridgekoffer
(
Vn1,
Tus1,
An1,
Email1,
Bridgekofferkleur,
Datum,
Ophalen,
Reactie

)
VALUES

(
'".$Vn1."',
'".$Tus1."',
'".$An1."',
'".$Email1."',
'".$Bridgekofferkleur."',
'".$Datum."',
'".$Ophalen."',
'".$Reactie."'
)
";

if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}

// ....

if(empty($_SESSION['errors']))

$ontvanger = "[email protected]";

$onderwerp = "Reservering bridgekoffer ";

$_POST['Alles']= " ".$_POST['Vn1']." ,".$_POST['Tus1']." ,".$_POST['An1']." ,".$_POST['Email1']." ";

Mail($ontvanger, $onderwerp, $_POST['Alles']);

{
$site = "mijnsite.com";
$sql = "SELECT * FROM bridgekoffer WHERE Email1='".$_POST['Email1']."'";
$resultaat = mysql_query($sql) or die (mysql_error());
$aantal = mysql_num_rows($resultaat);
$rij = mysql_fetch_object($resultaat);
$Email1 =($rij->Email1);
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To:[email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

if ($aantal == '0') {
echo "Dit emailadres is bij ons niet bekend!";
} else

{

$bericht = "Beste ".$Vn1."".$Tus1."".$An1.",\n\n
Er is zojuist op ".$site." met dit emailadres, een bridgekoffer reservering binnen gekomen \n\n
Koffer: ".$Bridgekofferkleur."\n
Voor de volgende datum: ".$Datum." \n
U zou de koffer ophalen op : ".$Ophalen." \n
Veel plezier !\n
Met vriendelijke groet; N.\n";

mail($Email1,"Reservering bridgekoffer",$bericht,"From: ".$site." <no_reply@".$site.">");
echo "Er is een bevestigings mail, naar uw email-adres gestuurd, zoniet, dan hebben wij geen juist email adres, wilt u dan contact met ons opnemen! ";
}

}


{
// Stuur gebruiker door naar een volgende pagina.
$content[] = '<p><b>Veel plezier.</b></p>';
$content[] = '<ul>';

foreach($_SESSION['input'] as $key => $value)
{
$content[] = '<li>'.$key.': '.$value.'</li>';
}
$content[] = '</ul>';


unset($_SESSION['input']);

}
}
}
?>
Wat gebeurt er nu wel als de gebruiker het formulier naar behoren invult?
De gebruiker krijgt geen reactie.
Een lege pagina dus?

Verder is je script vatbaar voor hacking via SQL-injection.
Wat er wel werkt is dat de gegevens in de database komen en dat er een mail in mijn email box binnen komt. Maar de invuller ziet daar niets van..

[size=xsmall]Toevoeging op 08/07/2015 16:25:13:[/size]

Ook geen lege pagina, geen reactie terug, normaal werd "bericht" automatisch teruggezonden.
Dus geen bevestiging (Er is een bevestigings mail, naar uw email-adres gestuurd.....) op het scherm nadat de mail verstuurd is, als ik goed begrijp?
Of is het de bevestigingsmail die niet aankomt bij de gebruiker?
De echo staat wel in beeld, maar er komt geen bevestigingsmail aan.
Je doet niks met je $headers in je mailfunctie.
... Dat zou best kunnen, het heeft echter altijd zo gewerkt... hoe zou het script dan nu moeten zijn?
Zo een constructie moet wel helpen. Je stuurt de juiste headers mee die ervoor zorgen dat je mail niet zo snel in de spam-box komen, en je kijkt of de mail-functie een FALSE uitspuugt, als de mail niet verstuurd kan worden door een technisch probleem.


<?php
// Geef GELDIGE adressen op
// Een korte benaming voor jouw website
$website_naam = 'Mijn Site';
// Jouw eigen geldige emailadres
$eigen_emailadres = 'mijn_emailadres@mijn_domein.nl';
// Een geldig emailadres voor errors
$error_emailadres = 'mijn_emailadres@mijn_domein.nl';
// De naam van de verzender
$naam_verzender = 'Afzender';
// Het geldige emailadres van de afzender
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
// Een geldig emailadres of helemaal leeg laten
$bcc_emailadres = 'geldig_emailadres@geldig_domein.nl';
// HTML mail? True/False
$html = true;

// De headers samenstellen
$headers	 = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . "\r\n";
$headers	.= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";
$headers	.= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . "\r\n";
$headers	.= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
$headers	.= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers	.= 'X-Priority: Normal' . "\r\n";
$headers	.= ($html) ? 'MIME-Version: 1.0' . "\r\n" : '';
$headers	.= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . "\r\n" : '';



if(mail($Email1,"Reservering bridgekoffer",$bericht,$headers)) {
	echo "Er is een  bevestigings mail, naar uw email-adres gestuurd, zoniet, dan hebben wij geen juist email adres, wilt u dan contact met ons opnemen! ";
} else {
	echo "De mail kon door een technische fout aan onze kant niet verstuurd worden. Onze excuses.";
}
?>

Bij voorkeur gebruik ik altijd phpMailer. Deze kan gebruik maken van elke willekeurige SMTP-server, die de mails aanneemt en aflevert, en is tevens makkelijker te debuggen.
Hallo, alvast bedankt voor je voorstel.
Moet helaas nu weg, ga het morgen uitwerken.

[size=xsmall]Toevoeging op 09/07/2015 09:59:32:[/size]

Hallo, helaas krijg je als invuller nog geen email.

Naam verzender = de als ingevulde naam van de invuller.. dus 'Achternaam'?
Email verzender is de invuller, die heeft zijn email adres ingevuld, die heeft meestal geen mijn domein naam.nl adres. 'Email' dus je hebt daar geen vaste waarde staan, want die wisselt.

Via bcc krijg ik wel de ingevulde mail binnen... maar dan weer op mijn eigen adres.

Waar gaat het nog mis? Stuur hierna de php op. Want om te lezen is het moeilijk.



[size=xsmall]Toevoeging op 09/07/2015 09:59:51:[/size]

<?php
// Geef GELDIGE adressen op
// Een korte benaming voor jouw website
$website_naam = 'site.com';
// Jouw eigen geldige emailadres
$eigen_emailadres = '[email protected]';
// Een geldig emailadres voor errors
$error_emailadres = '[email protected]';
// De naam van de verzender
$naam_verzender = 'Achternaam';
// Het geldige emailadres van de afzender
$email_verzender = 'Email1';
// Een geldig emailadres of helemaal leeg laten
$bcc_emailadres = '[email protected]';
// HTML mail? True/False
$html = true;

// De headers samenstellen
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . "\r\n";
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . "\r\n";
$headers .= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";
$headers .= ($html) ? 'MIME-Version: 1.0' . "\r\n" : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . "\r\n" : '';



if(mail($Email1,"Reservering bridgekoffer",$bericht,$headers)) {
echo "Er is een bevestigings mail, naar uw email-adres gestuurd, zoniet, dan hebben wij geen juist email adres, wilt u dan contact met ons opnemen! ";
} else {
echo "De mail kon door een technische fout aan onze kant niet verstuurd worden. Onze excuses.";
}
?>


Reageren