Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

stukje php code wijzigen

gerben
13 antwoorden
  • Heb in mijn mailform het volgende stukje php code staan:
    het stukje code moet de pagina BedanktURL gedurende 5 seconden laten zien en dan overspringen naar BedanktURL1

    Hier volgt de code:

    [code:1:b223217992]
    else
    {
    ob_clean();
    header("location: $sBedanktURL");
    print('<meta http-equiv=refresh content="5; url='.$sBedanktURL1.'">');
    [/code:1:b223217992]

    Wat hij nu doet is het volgende:
    In plaats van BedanktURL als eerste te laten zien, laat hij een foutmelding zien gedurende vijf seconden en springt dan goed door naar BedanktURL1

    Foutmelding:
    [code:1:b223217992]
    Warning: Cannot modify header information - headers already sent by (output started at /home/5ofba/public_html/contact2.php:2) in /home/5ofba/public_html/contact2.php on line 156
    [/code:1:b223217992]

    regel 156 is:
    [code:1:b223217992]
    header
    ("location:$sBedanktURL");
    [/code:1:b223217992]

    Hoe moet ik deze code wijzigen?
    jan
  • Je kunt dit:
    print('<meta http-equiv=refresh content="5; url='.$sBedanktURL1.'">');
    eens veranderen in dit:
    header("refresh : 5;url=$sBedanktURL1";);

    Maar ik heb het vermoeden dat de fout eerder komt. Je foutmelding geeft aan, dat er al voor die location header, headers verzonden zijn. De headers moeten sowieso altijd het allereerste zijn, wat je verstuurt.
  • heb nu de volgende code:

    [code:1:fa686eb1e3]
    ob_clean();
    header("location:" .$sBedanktURL);
    header("refresh : 5;url=$sBedanktURL1");
    [/code:1:fa686eb1e3]

    Het resultaat is dat hij nu dat hij alleen BedanktURL weergeeft. En daar blijft het bij.

    Voor de volledigheid even de hele code:

    [code:1:fa686eb1e3]

    if (count($_POST) > 0)
    {
    //controleer of de $bHTML wel fatsoenlijk is ingesteld
    if(!is_bool($bHTML))
    {
    print("De configuratie is onjuist. Zorg dat je bij <font color=blue><i>$bHTML</i></font> een booleaanse waarde (TRUE of FALSE) hebt ingevuld. Letop: Hier moeten geen quotes ( \" of ') omheen!");
    exit;
    }
    $errors = array();//definieer arrray voor de errormeldingen
    $aKeys = array_keys($_POST); //pak alle arraykeys in een arraytje
    foreach($_POST as $key=>$value)
    {
    $_POST[$key] = trim($value); //maak alle waarden netjes
    }
    foreach($aKeys as $key=>$value)
    {
    $aKeys[$key]=strtolower($value);//maak alle waarden in kleine letters
    }

    $aMail = explode(",",$sMail);
    $aDomein = explode("@",$sMail[0]);
    $sDomein = $aMail[1];

    //mail detectie
    if (in_array("mail",$aKeys)) { $sFrom = $_POST['mail']; }
    elseif (in_array("email",$aKeys)) { $sFrom = $_POST['email']; }
    elseif (in_array("e-mail",$aKeys)) { $sFrom = $_POST['e-mail']; }
    elseif (in_array("1mail",$aKeys)) { $sFrom = $_POST['1mail']; }
    elseif (in_array("1email",$aKeys)) { $sFrom = $_POST['1email']; }
    elseif (in_array("1e-mail",$aKeys)) { $sFrom = $_POST['1e-mail']; }
    else
    {
    $sFrom = "postmaster@".$sDomein;
    $bBedanktmail = FALSE;
    }

    if ($bOnderwerp)
    {
    $sSubject = $sOnderwerp;
    }
    else
    {
    if (in_array("onderwerp",$aKeys)) { $sSubject = $_POST['onderwerp']; }
    elseif (in_array("subject",$aKeys)) { $sSubject = $_POST['subject']; }
    elseif (in_array("1onderwerp",$aKeys)) { $sSubject = $_POST['1onderwerp']; }
    elseif (in_array("1subject",$aKeys)) { $sSubject = $_POST['1subject']; }
    else { $sSubject = $sOnderwerp; }
    }



    //controle emailadres
    if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$",$sFrom))
    {
    $error[] = "U heeft een ongeldig emailadres opgegeven.";
    }
    //check alle verplichte velden
    foreach($_POST AS $key => $value)
    {
    if(substr($key,0,1) == 1)
    {
    if (empty($_POST[$key]))
    {
    $name = substr($key,1);
    $error[] = "Het is gewenst dat u het veld <i>'".$name."'</i> invult.";
    }
    }
    }

    //als er een error was
    if (isset($error) && count($error) > 0)
    { echo "<br /><br /><a href=\"javascript:history.back(1)\">Terug</a>
    ";
    //poep alle errors uit
    print("<ul style=\"list-style: none; color: red;\">
    ");

    foreach($error as $value)
    {
    print("\t<li>".$value."</li>
    ");
    }
    print("</ul>");
    }
    else
    {
    $headers = "MIME-Version: 1.0
    ";
    $headers .= "From: ".$sWebsitenaam." <".$sFrom.">
    ";
    $headers .= "Reply-to: ".$sWebsitenaam." <noreply@".$sDomein.">
    ";
    $headers .= ($bHTML) ? "Content-Type: text/html; charset=iso-8859-1
    " : "Content-Type: text/plain; charset=iso-8859-1
    ";

    $sContent = "Dit is een automatisch gegenereerd e-mailbericht die vanaf je site is verstuurd.

    ";
    foreach($_POST as $key => $value)
    {
    if (substr($key,0,1) == 1) { $key = substr($key,1); }
    $sContent .= ucfirst(strtolower($key)).": ".$value."

    ";
    }
    $sContent .= "IP: ".$_SERVER['REMOTE_ADDR']."

    ";
    $sContent .= "Tijdstip: ".date("D j M, Y G:i")."

    ";

    $enter = "
    ";
    $sContent = ($bHTML) ? nl2br(htmlspecialchars($sContent)) : str_replace("
    ",$enter,$sContent) ;

    foreach ($aMail as $sMailAdress)
    {
    mail(trim($sMailAdress),$sSubject,$sContent,$headers);
    }

    if ($bBedanktmail)
    {
    $sBedanktmail = ($bHTML) ? nl2br(htmlspecialchars($sBedanktmail)) : str_replace("
    ",$enter,$sBedanktmail) ;
    mail($sFrom,$sBedanktsubj,$sBedanktmail,$headers);
    }



    if (isset($bBedanktTxt) && $bBedanktTxt == TRUE)
    {
    print($sBedanktTxt);
    }
    else
    {
    ob_clean();
    header("location:$sBedanktURL");
    print('<meta http-equiv=refresh content="5; url='.$sBedanktURL1.'">'); }
    }
    }
    else
    {
    print("<form action=\"".$_SERVER['REQUEST_URI']."\" METHOD=\"POST\">
    "); ?>
    <!– Zet hieronder je formulier neer –>

    [/code:1:fa686eb1e3]

    Heb nog wel ergens deze link vandaan gehaald maar kan er zelf niets mee: http://www.sitemasters.be/FAQ/2/Foutmeldingen#faq2
    heb al boven het script geplaatst:

    [code:1:fa686eb1e3]
    <?php
    ob_start();
    ?>
    [/code:1:fa686eb1e3]

    Maar dan geeft hij dezelfde foutmelding verwijzend naar:
    [code:1:fa686eb1e3]
    header("location:$sBedanktURL")
    [/code:1:fa686eb1e3]

    Wie help me verder, het schijnt wel een vaker voorkomend probleem te zijn


















  • Ik bedenk me nu, dat het helemaal niet kan! Deze twee headers zijn strijdig. De eerste linkt meteen door naar een andere url, waardoor de tweede niet meer aan bod komt. Ze doen ook min of meer hetzelfde. De ene meteen, en de ander na 5 seconden. Er moet dus gewoon een van beide vervallen.

    header("location:" .$sBedanktURL);
    header("refresh: 5;url=$sBedanktURL1";);
  • bedankt voor jouw reactie. Maar hoe kan ik de een na de ander dan wel laten zien?
  • Als deze code in de pagina zit, die je het eerst wilt laten zien, gebruik je alleen de refresh header. Wil je doorlinken naar een andere pagina, en die 5 seconden laten zien, dan zet je in díe pagina een refresh header, en in deze de location header.
  • Wil allereerst linken naar een pagina (BedanktURL) die ik vijf sec wil laten zien en daarna automatisch linken naar een andere pagina (BedanktURL1).
    Maar ben een leek op het gebied van pHp dus zou je me de code kunnen geven van wat het nu wel moet worden? Wat moet in de plaats komen van de bestaande code?
    Bedankt,
    Jan
  • Die refresh header moet er hier dus uit. Alleen de location header laten staan.

    header("location: $sBedanktURL";);

    In de 5-seconden-pagina moet deze code worden opgenomen.

    header("refresh : 5;url=$sBedanktURL1";);

    Is dat platte html, dan dus ook platte html in die pagina gebruiken, in de head sectie:

    <meta http-equiv=refresh content="5; url=htt://www.jouwsite.nl/tweedepagina.html">
  • Heb nu het volgende staan:

    [code:1:4f018ad547]
    ob_clean();
    header("location: $sBedanktURL");
    <meta http-equiv=refresh content="5; url=http://www.mijnsite.nl/index.html">
    [/code:1:4f018ad547]

    Uitproberen geeft de volgend foutmelding
    [code:1:4f018ad547]Parse error: syntax error, unexpected '<' in /home/5ofba/public_html/contact2.php on line 158
    [/code:1:4f018ad547]
    En daar blijft het bij. Regel 158 is de ..meta http..regel
  • Waarom doe je dan ook niet wat ik voorstel?
  • Sorry Gerben, begrijp je dan niet goed. Heb geprobeerd te doen wat je voorstelt maar heb het kennelijk niet goed begrepen. Nogmaals ben een leek. Zet dan hoeronder de code die ik wel moet gebruiken als je wil.
  • In deze php pagina: uitsluitend de location header.

    In de gelinkte 5-seconden-pagina: de refresh header in html.
  • Hij doet het Gerben, bedankt voor jouw hulp

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.