7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)
  • Q:
    Bijdrager
    kimkellyoosten

    Foutmelding in php-formulier

    Ik heb een probleem met een contactformulier welke wordt aangestuurd met php. Het formulier wordt wel verzonden, want ik ontvang m gewoon in mn mailbox, alleen krijg ik bij het verzenden vanaf de website niet de bedanktpagina te zien, maar een pagina met allemaal ‘warning: … on line 21’-gedoe, alleen ik zie niet wat ik dan verkeerd doe.

    Het php-script wordt als volgt opgeroepen in de html:

    <FORM name=”formulier” action=”mailform.php” method=”post” onSubmit=”return check(this)”>

    En dit is het php-script

    <?php
    // Het emailadres waar de resultaten van het formulier naar toe gemailed dienen te worden
    define(“AANEMAILADRES”, “[email protected]”);
    // Het emailadres waar de mail van afkomstig is
    define(“VANEMAILADRES”, “[email protected]”);
    // Het onderwerp van het email-bericht
    define(“ONDERWERP”, “Informatieaanvraag vanaf de website”);
    // Geeft aan naar welke pagina doorverwezen wordt na het mailen van de formulierresultaten
    define(“BEDANKTPAGINA”, “bedankt.html”);

    /* VANAF HIER NIETS MEER AANPASSEN */
    $externalVars = array_merge($_GET, $_POST);
    $keys = array_keys($externalVars);
    $aantal = count($keys);
    $html = “<table>”;

    for ($teller = 0; $teller < $aantal; $teller++)
    {
    $veldnaam = $keys[$teller];
    $waarde = $externalVars[$veldnaam];
    if (!in_array($veldnaam, $skipArray))
    {
    $html .= “<tr><td>“.htmlspecialchars($veldnaam, ENT_QUOTES).”</td><td>”.htmlspecialchars($waarde, ENT_QUOTES).”</td></tr>”;
    }
    }

    $html .= “</table>”;

    $headers = “MIME-Version: 1.0n”;
    $headers .= “Content-type: text/html; charset=utf-8n”;
    $headers .= “From: “.VANEMAILADRES.”n”;

    mail(AANEMAILADRES, ONDERWERP, $html, $headers);

    header(“location: “.BEDANKTPAGINA);
    ?>

    Link: www2.janlieuwmavastgoedpromotie.nl/contact.html

    Als iemand een oplossing heeft, hoor ik deze heel graag! Bvd!

    Bijdrager
    Thomvis

    Zou je de gehele foutmelding kunnen posten? Ik neem aan dat je o.a. een “headers allready sent..” melding krijgt.. misschien is het ook handig om even regelnummers in je stuk code te zetten, of begint het bestand bij de <?php ?

    Bijdrager
    kimkellyoosten

    De foutmelding

    Warning: in_array(): Wrong datatype for second argument in /home/unixbasic/w/w/www2-janli/www/mailform.php on line 21

    Warning: in_array(): Wrong datatype for second argument in /home/unixbasic/w/w/www2-janli/www/mailform.php on line 21

    Warning: in_array(): Wrong datatype for second argument in /home/unixbasic/w/w/www2-janli/www/mailform.php on line 21

    Warning: in_array(): Wrong datatype for second argument in /home/unixbasic/w/w/www2-janli/www/mailform.php on line 21

    Warning: in_array(): Wrong datatype for second argument in /home/unixbasic/w/w/www2-janli/www/mailform.php on line 21

    Warning: in_array(): Wrong datatype for second argument in /home/unixbasic/w/w/www2-janli/www/mailform.php on line 21

    Warning: in_array(): Wrong datatype for second argument in /home/unixbasic/w/w/www2-janli/www/mailform.php on line 21

    Warning: in_array(): Wrong datatype for second argument in /home/unixbasic/w/w/www2-janli/www/mailform.php on line 21

    Warning: Cannot modify header information – headers already sent by (output started at /home/unixbasic/w/w/www2-janli/www/mailform.php:21) in /home/unixbasic/w/w/www2-janli/www/mailform.php on line 35

    php script met regelnummers:

    1 <?php
    2 // Het emailadres waar de resultaten van het formulier naar toe gemailed dienen te worden
    3 define(“AANEMAILADRES”, “[email protected]”);
    4 // Het emailadres waar de mail van afkomstig is
    5 define(“VANEMAILADRES”, “[email protected]”);
    6 // Het onderwerp van het email-bericht
    7 define(“ONDERWERP”, “Informatieaanvraag vanaf de website”);
    8 // Geeft aan naar welke pagina doorverwezen wordt na het mailen van de formulierresultaten
    9 define(“BEDANKTPAGINA”, “bedankt.html”);
    10
    11 /* VANAF HIER NIETS MEER AANPASSEN */
    12 $externalVars = array_merge($_GET, $_POST);
    13 $keys = array_keys($externalVars);
    14 $aantal = count($keys);
    15 $html = “<table>”;
    16
    17 for ($teller = 0; $teller < $aantal; $teller++)
    18 {
    19 $veldnaam = $keys[$teller];
    20 $waarde = $externalVars[$veldnaam];
    21 if (!in_array($veldnaam, $skipArray))
    22 {
    23 $html .= “<tr><td>“.htmlspecialchars($veldnaam, ENT_QUOTES).”</td><td>”.htmlspecialchars($waarde, ENT_QUOTES).”</td></tr>”;
    24 }
    25 }
    26
    27 $html .= “</table>”;
    28
    29 $headers = “MIME-Version: 1.0n”;
    30 $headers .= “Content-type: text/html; charset=utf-8n”;
    31 $headers .= “From: “.VANEMAILADRES.”n”;
    32
    33 mail(AANEMAILADRES, ONDERWERP, $html, $headers);
    34
    35 header(“location: “.BEDANKTPAGINA);
    36 ?>

    Bijdrager
    Lifelogger

    Heeft te maken dat je al output verstuurd voor je de header uitvoert.

    Je moet er voor zorgen dat er geen html etc verstuurd wordt, voor de header.

    Bijdrager
    Lifelogger

    Wat is $skipArray??? Je kijkt of in je array iets zit dat in de variabele $skipArray zit. Maar die variabele bestaat niet, voor zover ik zo snel kan zien.

    Waarschijnlijk als je het probleem op regel 21 oplost, gaat de melding van de header send ook wel weg. PHP output namelijk warning regels voor de header location.

    Bijdrager
    Thomvis

    Op regel 21 controleer je of een bepaalde veldnaam in een array voorkomt. Echter, die array ($skipArray) bestaat helemaal niet.. Als die array wel zou bestaan zou je dus enkele velden kunnen overslaan zodat ze niet in de mail worden meegestuurd. Het lijkt er echter op dat je dit niet gebruikt.

    Het zal wel werken als je regel 21 t/m 24 vervangt door:

    [code:1:e009eb1d08]$html .= "<tr><td>".htmlspecialchars($veldnaam, ENT_QUOTES)."</td><td>".htmlspecialchars($waarde, ENT_QUOTES)."</td></tr>"; [/code:1:e009eb1d08]

    dan zal het werken, voor zover ik nu kan zien.

    Nu kom je niet op de bedankpagina omdat je alleen kan doorverwijzen met een header(“location: ..”) als er nog geen tekst naar het scherm is geschreven. In dit geval zorgen die warnings er voor dat je script de bezoeker niet netjes doorstuurt.

    Bijdrager
    kimkellyoosten

    ’t werkt! Thanx!

7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.