Webprofis is een Forum waarin je vragen kunt stellen die webgerelateerd zijn. Heb je vragen over of problemen met je Webpagina, HTML, CSS, Javascript, PHP of andere client of serverside scriptingtalen? Stel ze dan gerust op dit forum. Op dit forum zijn een aantal vrijwilligers actief die u graag met uw vragen willen helpen en u waar mogelijk een passend antwoord aanbieden. Hebt u zelf veel ervaring en kennis met betrekking tot het bovenstaande? U bent van harte welkom om uw kennis met anderen te delen!

We hopen dat eenieder op dit Forum een leerzame ervaring mag opdoen.

Team Webprofis

aanpassing in een contact box

bewerkt zo 15 nov 2015 in PHP, MySQL Posts: 2
Ik zoek naar de mogelijkheid dat als ik het bericht krijg (Het bericht is succesvol verzonden)

Dat ik daarin of na 5 seconden doorgelinkt wordt naar een pagina. Of een link erin dat ze terug kunnen naar de vorige pagina/ of een url van een andere site


$naar = 'test@gmail.com'; // Waar moet het naartoe
$onderwerp = test; // tesst

// Header instellen, zodat nl2br() werkt
$headers = "MIME-version: 1.0\r\n";
$headers .= "content-type: text/html;charset=utf-8\r\n";

if(isset($_POST['versturen'])) // Als het formulier verzonden is door op de verzend knop te klikken
{
$voornaam = trim($_POST['voornaam']); // Alle overbodige spaties uit het voornaam veld verwijderen
$achternaam = trim($_POST['achternaam']); // Alle overbodige spaties uit het achternaam veld verwijderen
$email = trim($_POST['email']); // Alle overbodige spaties uit het email veld verwijderen
$bericht = trim($_POST['bericht']); // Alle overbodige spaties uit het bericht veld verwijderen
$fout = false; // Om te kijken straks of er wat fout is

if(empty($voornaam)) // Als het voornaam veld niet is ingevuld
{
print '<p>Helaas, het voornaam veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true; // Zorgen dat het script zometeen weet dat er wat fout is
}
if(empty($achternaam)) // Als het achternaam veld niet is ingevuld
{
print '<p>Helaas, het achternaam veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true;
}
if(empty($email)) // Als het email veld niet is ingevuld
{
print '<p>Helaas, het email veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true;
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
{
print '<p>Helaas, het email adres is niet correct!</p>';
$fout = true;
}
if(empty($bericht)) // Als het bericht veld niet is ingevuld
{
print '<p>Helaas, het bericht veld is verplicht maar is nu niet ingvuld!</p>';
$fout = true;
}

if($fout == false) // Als er niks fout is (alles is dus netjes ingevuld)
{
$headers .= 'From: ' . $voornaam . ' ' . $achternaam . '<' . $email . '>'; // Een afzender instellen zodat je kan reageren.

if(mail($naar, $onderwerp, nl2br($bericht), $headers))
{
print '<p>Het bericht is succesvol verzonden!</p>';
}
else
{
print '<p>Helaas, er is wat fout gegaan tijdens het verzenden van het formulier.</p>';
}
}
}

Reacties

  • PMPosts: 879
    Automatische redirect:
    Uitgaande van bovenstaand script plaasts je deze regel tussen regel 48 en 49 hierboven:

    header( "refresh:5;url=pad/naar/pagina.html" ); // 5 = 5 seconden
    Optie 2: linkje dat ze zelf kunnen klikken naar pagina waar je naar toe wilt: (ook tussen regel 48 en 49)

    echo '<p><a href="pad/naar/pagina.html">Linkje</a></p>';

  • bewerkt zo 15 nov 2015
    PMPosts: 415
    Aanvulling op nuet, met volgend javascriptje ga je een 'pagina' terug, als het in hetzelfde venster geopend is:

    window.history.back();
    Aanroepen kan met bv onclick
    nuet

  • Ik krijg de melding bij optie 1 header( "refresh:5;url=pad/naar/pagina.html" ); // 5 = 5 seconden


    Warning: Cannot modify header information - headers already sent by (output started at /srv/disk5/1989777/www/pagina/verzend/formulierverzenden.php:1) in /srv/disk5/1989777/www/pagina/verzend/formulierverzenden.php on line 49

    + de email komt niet aan.
  • Als je dit script HELEMAAL bovenin je pagina plaatst, zelfs een lege regel is al teveel, en je plaatst die redirect net boven de succes print, dan zou het moeten kunnen.
    Mocht je dit script includen ergens midden in bv de index, dan gaat het niet lukken zonder omwegen zoals de andere aangedragen oplossingen.

    Er is nog een vieze oplossing die ik eigenlijk niet mag rondstrooien, maar ik zelf gewoon bij de vleet gebruik, en dat is ob_start(); HELEMAAL bovenin de index plaatsen. dit is enkel nodig als je dit script include.
    nuet
  • bewerkt wo 18 nov 2015
    PMPosts: 879
    klopt, die header mag niet na een output plaatsvinden.
    Zijn nog meerdere opties om na enkele seconden een andere pagina aan te roepen auotmatisch:
    Direct na de print op regel 48 zet je deze echo erbij:

    echo '<script type="text/JavaScript">
    redirectTime = "5000";
    redirectURL = "http://www.google.com";
    function timedRedirect() {
    setTimeout("location.href = redirectURL;",redirectTime);
    }
    timedRedirect();
    </script>';

    Ik weet niet of deze php code los van de form staat, anders zou je ook een redirect met de meta tag kunnen uitvoeren:

    <meta http-equiv="refresh" content="5;URL='http://www.google.com'"; />
    Maar dan moet niet de form onder de php afhandeling staan, anders ben je na 5 seconden al bij google tijdens het invullen ;)


  • bewerkt wo 18 nov 2015
    PMPosts: 879
    nog beetje verfraaid; afteller erbij gemaakt die aangeeft dat er na x seconden automatisch doorverwezen wordt;
    Je script ziet er dan als volgt uit vanaf regel 46:


    .................
    if(mail($naar, $onderwerp, nl2br($bericht), $headers))
    {
    print '<p>Het bericht is succesvol verzonden!</p>';
    ?>
    <script type="text/javascript">
    /* aftellen */
    window.onload = function() {
    var countdownElement = document.getElementById('countdown'),

    seconds = 5, // aftellen vanaf 5 sec
    second = 0,
    interval;

    interval = setInterval(function() {
    countdownElement.firstChild.data = 'Uw wordt automatisch doorgestuurd na ' + (seconds - second) + ' seconden...';
    if (second >= seconds) {
    clearInterval(interval);

    }

    second++;
    }, 1000);
    }

    /* de redirect */
    redirectTime = "5000";
    redirectURL = "http://www.google.com";
    function timedRedirect() {
    setTimeout("location.href = redirectURL;",redirectTime);
    }
    timedRedirect();

    </script>

    <!-- in deze div vindt het aftellen plaats -->
    <div id="countdown"> </div><br /><br />
    <?php
    }
    else
    {
    print '<p>Helaas, er is wat fout gegaan tijdens het verzenden van het formulier.</p>';
    }
    ..........

Login of Registreer om te reageren.