2010-02-28 6 views
1

Je reçois une erreur étrange après avoir soumis une forme l'erreur est celle-ci:problème de forme après l'envoi (problème cookie)

 Warning: Cannot modify header information - headers already sent by 
     (output started at 
     /var/www/g35003/coldcharlie.nl/subdomains/test/mailer.php:6) in 
     /var/www/g35003 
     /coldcharlie.nl/subdomains/test/mailer.php on line 96 

Ligne 96 contient ce

// delete the cookie so it cannot sent again by refreshing this page 
    setcookie('tntcon',''); 

Ceci est le logiciel de messagerie complète. php

// ----------------------------------------- 
// The Web Help .com 
// ----------------------------------------- 
// remember to replace [email protected] with your own email address lower in this code. 

// load the variables form address bar 
$subject = $_POST["subject"]; 
$message = $_POST["message"]; 
$from = $_POST["from"]; 
$verif_box = $_POST["verif_box"]; 

// remove the backslashes that normally appears when entering " or ' 
$message = stripslashes($message); 
$subject = stripslashes($subject); 
$from = stripslashes($from); 

// check to see if verificaton code was correct 
if(md5($verif_box).'a4xn' == $_COOKIE['tntcon']){ 
    // if verification code was correct send the message and show this page 
    mail("[email protected]", 'Online Formulier: '.$subject, $_SERVER['REMOTE_ADDR']."\n\n".$message, "From: $from"); 
    // delete the cookie so it cannot sent again by refreshing this page 
    setcookie('tntcon',''); 
} else if(isset($message) and $message!=""){ 
    // if verification code was incorrect then return to contact page and show error 
    header("Location:".$_SERVER['HTTP_REFERER']."?subject=$subject&from=$from&message=$message&wrong_code=true"); 
    exit; 
} else { 
    echo "no variables received, this page cannot be accessed directly"; 
    exit; 
    } 
?> 

Ceci est la partie de la tête de mon mailer.php

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <meta name="description" content="Computerhulp voor Particulieren en MKB in Leeuwarden en de rest van Friesland" /> 
    <meta name="keywords" content="computerhulp in friesland, pc service, Leeuwarden, Sneek, Drachten, Heerenveen, Bolsward, Buitenpost, Franeker, Gorredijk, Dokkum, Joure, Oosterwolde, Koudum, Harlingen " /> 
    <title>Computer stuk? Computerhulp nodig? Friese Computer Service - Leeuwarden, Sneek, Drachten, Heerenveen, Bolsward, Buitenpost, Franeker, Gorredijk, Dokkum, Joure, Oosterwolde, Koudum, Harlingen, Computerhulp Friesland</title> 
    <link rel="bookmark" href="/favicon.ico" /> 
    <link rel="shortcut icon" href="/favicon.ico" /> 

    <link href="http://www.coldcharlie.nl/test/css/style.css" rel="stylesheet" type="text/css" /> 
    </head> 
+0

Si la ligne setcookie est le 96ème, vous ne nous avez probablement pas montré le fichier entier: il y a moins de 95 lignes avant celle-ci, dans ce que vous avez posté ;;; Quelle est la ligne 6? * (le message d'erreur indique que certaines sorties ont été envoyées sur la ligne 6) * –

+0

vous pourriez aussi essayer de mettre la fonction 'ob_start()' au début de votre script. – Sarfraz

+1

La mise en mémoire tampon des sorties doit être évitée - il est recommandé de s'assurer qu'il n'y a pas de contenu avant d'effectuer les opérations d'en-tête/cookie. – casraf

Répondre

1

La modification de l'en-tête HTTP n'est possible que si elle n'a pas encore été envoyée au client. Et cela a lieu lorsque vous imprimez quelque chose.

Et dans votre cas, la sortie commence à la ligne 6 de votre fichier mailer.php. Vous pouvez utiliser le output buffer functions et mettre en tampon la sortie pour éviter cela.

+0

Je suis désolé, mais c'est trop sur ma tête. Je déteste ça, mais j'ai posté (édité) tout l'en-tête de mon mailer.php dans ma question – Chris

+0

@Chris: Lancez simplement 'ob_start' avant que toute sortie ait été faite et cela devrait fonctionner. – Gumbo

+0

Super, je l'ai eu, j'ai dû appliquer le code php avant tout le html en effet. – Chris