Ga naar inhoud


Emailform PHP vraag


Hasselt

Aanbevolen berichten

Goedendag,

 

Ik heb met veel moeite een email van PHP in elkaar geknutseld Zonder php kennis..

Dit werkt perfect.

Echter na verzenden van het emailformulier blijft hij op die pagina staan.

 

Ik zou graag willen dat na het verzenden weer terug gaat naar de index.html

 

Hieronder 1x html text voor de contact.html. pagina

en 1x het php scriptvoor op de server.

 

Wie wil er eens naar kijken.

Om reclame te voorkomen het ik kruisjes op de namen gezet.

 

 

 

<form name="form1" method="post" action="post.php">

<p align="center">Uw

Naam: <br><input name="naam" type="text" value""><br>

Uw

E-mail: <br><input name="email" type="text" value=""></p>

<p align="center">Uw Bericht:<br>

<textarea name="bericht" rows="7" cols="45"></textarea><br>

<input type="submit" name="Submit" value="Verzenden">

 

 

<?php

$naam = htmlspecialchars($_POST['naam']);

$email = htmlspecialchars($_POST['email']);

$bericht = htmlspecialchars($_POST['bericht']);

 

if (!$naam) {

echo "u heeft geen naam ingevuld!";

exit; }

 

if (!$email) {

echo "u heeft geen e-mailadres ingevuld!";

exit; }

 

if (!$bericht) {

echo "u heeft geen bericht ingevuld!";

exit; }

 

else {

 

$tijd = time();

$datum = strftime("%d/%m/%y %H:%M", $tijd);

$ip = getenv("REMOTE_ADDR");

$message = "" . $naam . " met het e-mailadres " . $email . " en het IP $ip stuurde op $datum het volgende bericht:

____________________________________

" . $bericht . "

------------------------------------";

 

$mailadres = "info@xxxxxxxxxxxxxxx.nl";

$message = str_replace ("<br>","\n", $message);

mail("$mailadres", "Bericht van www.xxxxxxxxxxxxxxx.nl",

$message, "From: " . $email . "");

 

echo "Uw bericht is met succes verzonden. We helpen u zo snel mogelijk.";

}

?>

Link naar reactie
Delen op andere sites


Zet in de header van de pagina die je "stuurt" om de bevestiging te tonen:

<meta http-equiv="refresh" content="5;url=http://jouwebsite.nl/index.html">

 

De "5" geeft aan na hoeveel seconden de redirect wordt gedaan.

 

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

Origineel bericht van: Tha Great Mac
Laatste regel:

header("refresh: 5; index.html");

Gaat niet werken aangezien je hoogstwaarschijnlijk een error krijgt in de trant van "headers already sent".
Zoals het in de naam al doet vermoeden dien je dus eerst de header te sturen voordat je de "echo" doet. Anders wordt de echo gezien als "header"... Daarom is het ook zeer belangrijk dat "<?php" zonder spatie/enter aan het begin van het bestand staat...

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

Gast Tha Great Mac
Origineel bericht van: Big fellow
Gaat niet werken aangezien je hoogstwaarschijnlijk een error krijgt in de trant van "headers already sent".

Je hebt gelijk, in de loop der code kan dat inderdaad niet altijd.

Kan evt. ook middels javascript... window.location="je-url";
Link naar reactie
Delen op andere sites

Op deze manier werkt het niet ???

 

<?php

$naam = htmlspecialchars($_POST['naam']);

$email = htmlspecialchars($_POST['email']);

$bericht = htmlspecialchars($_POST['bericht']);

 

if (!$naam) {

echo "u heeft geen naam ingevuld!";

exit; }

 

if (!$email) {

echo "u heeft geen e-mailadres ingevuld!";

exit; }

 

if (!$bericht) {

echo "u heeft geen bericht ingevuld!";

exit; }

 

else {

 

$tijd = time();

$datum = strftime("%d/%m/%y %H:%M", $tijd);

$ip = getenv("REMOTE_ADDR");

$message = "" . $naam . " met het e-mailadres " . $email . " en het IP $ip stuurde op $datum het volgende bericht:

____________________________________

" . $bericht . "

------------------------------------";

 

$mailadres = "info@xxxxxxxxxxxxxxx.nl";

$message = str_replace ("<br>","\n", $message);

mail("$mailadres", "Bericht van www.xxxxxxxxxxxxxxx.nl",

$message, "From: " . $email . "");

 

echo "Uw bericht is met succes verzonden. We helpen u zo snel mogelijk.";

}

<?php refresh: 5; index.html

?>

Link naar reactie
Delen op andere sites

Gast Tha Great Mac
Origineel bericht van: Blackout

echo "Uw bericht is met succes verzonden. We helpen u zo snel mogelijk.";
}
refresh: 5; index.html
?>

Zie kleine correctie, probeeer het gewoon maar ff...
Link naar reactie
Delen op andere sites

Maak dit er eens van:

Origineel bericht van: Blackout

<meta http-equiv="refresh" content="5;url=http://jouwebsite.nl/index.html">

<?php

$naam = htmlspecialchars($_POST['naam']);

$email = htmlspecialchars($_POST['email']);

$bericht = htmlspecialchars($_POST['bericht']);

 

if (!$naam) {

echo "u heeft geen naam ingevuld!";

exit; }

 

if (!$email) {

echo "u heeft geen e-mailadres ingevuld!";

exit; }

 

if (!$bericht) {

echo "u heeft geen bericht ingevuld!";

exit; }

 

else {

 

$tijd = time();

$datum = strftime("%d/%m/%y %H:%M", $tijd);

$ip = getenv("REMOTE_ADDR");

$message = "" . $naam . " met het e-mailadres " . $email . " en het IP $ip stuurde op $datum het volgende bericht:

____________________________________

" . $bericht . "

------------------------------------";

 

$mailadres = "info@xxxxxxxxxxxxxxx.nl";

$message = str_replace ("<br>","\n", $message);

mail("$mailadres", "Bericht van www.xxxxxxxxxxxxxxx.nl",

$message, "From: " . $email . "");

 

echo "Uw bericht is met succes verzonden. We helpen u zo snel mogelijk.";

}

?>

“Success is not final, failure is not fatal: it is the courage to continue that counts.” ~ Winston Churchill

Link naar reactie
Delen op andere sites

Je gaat verkeerd te werk.

 

Je moet eerst je php controle doen als er iets is verstuurd via $_POST

 

Indien ja, verwerk dat en stuur door naar de index pagina.

Indien nee, doe niets en toon het formulier.

 

In bovenstaande code staat geen controle als de email wel degelijk is verstuurd.

Ook moeten bezoekers telkens alle gegevens opnieuw invullen als ze er één vergeten zijn.

 

Ik heb het script wat aangepast en deze dingen ingevoegd.

Opvangen van fout met behoud van invulde zaken

controle als email is verstuurd

Indien ja, unset de ingevulde informatie en ga naar index.html

Indien nee, geef een foutmelding weer.

 

Succes

 

Php Code:

<?php session_start();if (isset($_POST['Submit'])){$naam = htmlspecialchars($_POST['naam']);$email = htmlspecialchars($_POST['email']) ;$bericht = htmlspecialchars($_POST['bericht']);$_SESSION['naam'] =  $naam;$_SESSION['email'] =  $email;$_SESSION['bericht'] =  $bericht;if (!$naam) {$fout .= "u heeft geen naam ingevuld! <br>"; }if (!$email) {$fout .= "u heeft geen e-mailadres ingevuld! <br>";}if (!$bericht) {$fout .= "u heeft geen bericht ingevuld! <br>"; }else {if (!$fout){$tijd = time();$datum = strftime("%d/%m/%y %H:%M", $tijd);$ip = getenv("REMOTE_ADDR");$message = "" . $naam . " met het e-mailadres " . $email . " en het IP $ip stuurde op $datum het volgende bericht: ____________________________________" . $bericht . "------------------------------------";$mailadres = "info@xxxxxxxxxxxxxxx.nl";$message = str_replace ("<br>","\n", $message);$VerstuurEmail = (mail("$mailadres", "Bericht van www.xxxxxxxxxxxxxxx.nl",$message, "From: " . $email . "")) ? true : false;if ($VerstuurEmail){	unset($_SESSION['naam'], $_SESSION['email'], $_SESSION['bericht']);	header("location: index.php");	}	else {		$fout .= "Email werd niet verstuurd";		}}}}if (isset($fout)) {	echo "<p>".$fout."</p>";	}?><form name="form1" method="post" action="<?php $_SERVER['PHP_SELF']; ?>"> <p align="center">Uw Naam: <br><input name="naam" type="text" value="<?php echo  $_SESSION['naam']; ?>"><br> Uw E-mail: <br><input name="email" type="text" value="<?php echo  $_SESSION['email']; ?>"></p><p align="center">Uw Bericht:<br> <textarea name="bericht" rows="7" cols="45"><?php echo  $_SESSION['bericht']; ?></textarea><br> <input type="submit" name="Submit" value="Verzenden">

 

iMac 27" macOS Sierra
iPhone 5s iOS 10

Link naar reactie
Delen op andere sites

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
  • Wie is er online   0 leden

    • Er zijn geen geregistreerde gebruikers deze pagina aan het bekijken
×
×
  • Nieuwe aanmaken...