IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Cannot modify header information - headers already sent by


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 45
    Points : 24
    Points
    24
    Par défaut Cannot modify header information - headers already sent by
    Bonjour à tous

    je suis chez 1&1 pour l"hébergement de mes sites, suite a un upgrade de services chez eux, j'ai un message d'erreur sur tous mes formulaires de contact.

    http://www.gite-la-tronchere.fr/cont...e-puy-dome.php
    http://www.planete-sports.fr/inscrip...ultisports.php
    http://www.bergheaud.fr/contact.php

    et il y en a d'autres...

    avez vous une idée pour régler ce PB qui semble être identique sur chacun de mes site car j'ai une bonne dizaine de formulaires dans ce cas!

    merci de votre aide

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Oui, c'est assez simple : il faut corriger le code.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je dirais même plus : le code, corriger il faut.

    Nous le montrer, bien serait.

    Une idée ? Oui.
    Vérifier dans TOUS tes fichiers (en particuliers ceux inclus dans d'autres), qu'il n'y a pas de code HTML (même un simple espace) avant l'instruction session_start().

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    reconnaissant, je suis

    Bien sur il y a plein de truc avant session_start(), mais ça fonctionnait bien avant.
    Vous êtes en train de me dire qu'il faut que je modifie tous les formulaires? même ceux qui fonctionnent depuis des années?

    voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $cryptogramme = TRUE;
    $format = 'html';
    $foncmail = 'mail';
    $hostsmtp = '';
    $portsmtp = '25';
    $authsmtp = true; 
    $usersmtp = ''; 
    $passmtp = '';
    session_start();
    $included_files = get_included_files();
    require(dirname(__FILE__).'/include/fonctions.php');
    if(VerifUrl($_SERVER['REQUEST_URI'], $included_files, dirname(__FILE__))){
    ?>
    le simple fait de remonter cette instruction solutionnerait le pb?

    comme ceci?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    session_start();
    $cryptogramme = TRUE;
    $format = 'html';
    $foncmail = 'mail';
    $hostsmtp = '';
    $portsmtp = '25';
    $authsmtp = true; 
    $usersmtp = ''; 
    $passmtp = '';
    $included_files = get_included_files();
    require(dirname(__FILE__).'/include/fonctions.php');
    if(VerifUrl($_SERVER['REQUEST_URI'], $included_files, dirname(__FILE__))){
    ?>
    http://www.bergheaud.fr/contact.php
    marche po

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut lire l'erreur : ton affichage commence dans index.php donc c'est au début de ce fichier que doit être ton session_start().

    A la remarque "ça marchait avant" : ça peut marcher mais être plein d'erreurs, tu t'en rends compte maintenant que ton hebergeur t'affiche les erreurs. PHP est arrangeant avec nombre de situations anormales.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Ok je comprend mieux.
    Le code qui se trouve juste au dessus est justement le début de mon index.php
    J'ai eu beau le modifier en mettant le session_start() tout en haut mais j'ai toujours le même message d'erreur.
    J'ai encodé mon fichier en UTF-8 sans BOM mais pas mieux...

  7. #7
    Invité
    Invité(e)
    Par défaut
    Il ne suffit pas de "remonter" l'instruction dans le fichier lui-même, mais c'est déjà une bonne chose.
    Il fautr vérifier les includes de fichiers :
    - passages à la ligne ou espace avant <?php en début de fichier ?
    - passages à la ligne après ?> en fin de fichier ? (astuce pour éviter ça : supprimer simplement le ?> de fin dans le fichier)
    - echo ? avant session_start() ?
    - plusieurs session_start() (dans plusieurs fichiers inclus les uns dans les autres) ?
    - ...

    Et, sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php if(session_id()=='') { session_start(); }
    // ........
    ?>

  8. #8
    Invité
    Invité(e)
    Par défaut
    Petite correction concernant l'interprétation du message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /homepages/37/d141117866/htdocs/BER/contact.php:5) in /homepages/37/d141117866/htdocs/BER/for/index.php on line 2
    "...headers already sent..."
    Le session_start() est DEJA à la ligne 2 du fichier index.php
    MAIS il y en a sûrement d'AUTRES ailleurs, et c'est ce qui provoque l'erreur !

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    effectivement, dans un autre fichier j'ai ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    session_start();
    include_once dirname( __FILE__ ).'/captcha.class.php';
    $captcha = new captcha();
    $captcha->setStringLenght(4);
    $captcha->setTextColor( 0, 0, 51 );
    $captcha->setFont( dirname( __FILE__ ) .'/tahomabd.ttf', 12 );
    $captcha->setShadow();
    $captcha->setShadowColor( 235, 240, 248 );
    $captcha->setTextAngle( 3 );
    $captcha->getImage();
    $_SESSION['captcha-control'] = $captcha->getRandString();
    ?>
    il s'agit en fait du script exmail 1.2
    que faire pour arranger cela?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if(session_id()=='') { session_start(); } ?>

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php if(session_id()=='') { session_start(); } ?>
    <?php
    /////session_start();
    //////////////////////////////////////
    // Configuration de l'envoi du mail //
    //////////////////////////////////////
    $cryptogramme = TRUE; //Cryptogramme pour éviter le spam TRUE = activé, FALSE = désactivé
    $format = 'html';  // Mettez ici le format de l'email, pour html mettez 'html', pour le format texte mettez 'texte'
    $foncmail = 'mail'; // Si votre hébergeur permet la fonction mail mettez 'mail', sinon vous pouvez utiliser smtp en mettant 'smtp'
    dans le index.php

    et j'ai toujours

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homepages/37/d141117866/htdocs/BER/contact.php:5) in /homepages/37/d141117866/htdocs/BER/for/index.php on line 1

  12. #12
    Invité
    Invité(e)
    Par défaut
    Il me semble qu'on t'a donné toute les infos nécessaires.
    Tu as parlé d'un "un autre fichier"...

    A toi de faire ce qu'il faut.
    On ne peut pas faire le travail à ta place.

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    merci encore pour toutes ces infos.
    je n'en ai pas parlé mais j'ai bien fait les modifs dans les deuxfichiers

    avec
    session_start();
    ou
    if(session_id()=='') { session_start(); }
    dans les 2 fichiers, le message d'erreur reste le même.

    J'ai aussi bien vérifié passages à la ligne ou espace avant <?php en début des 2 fichiers.

  14. #14
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    voici l'intégralité du fichier index

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    <?php if(session_id()=='') { session_start(); }
    //<?php
    //session_start();
    //////////////////////////////////////
    // Configuration de l'envoi du mail //
    //////////////////////////////////////
    $cryptogramme = TRUE; //Cryptogramme pour éviter le spam TRUE = activé, FALSE = désactivé
    $format = 'html';  // Mettez ici le format de l'email, pour html mettez 'html', pour le format texte mettez 'texte'
    $foncmail = 'mail'; // Si votre hébergeur permet la fonction mail mettez 'mail', sinon vous pouvez utiliser smtp en mettant 'smtp'
     
    /////////////////////////////////////////////////////////////////////////////////////
    // Configuration SMTP ( Si vous n'utilisez pas SMTP ne pas configurer ces champs ) //
    /////////////////////////////////////////////////////////////////////////////////////
     
     
    $hostsmtp = ''; // Mettez ici l'hôte SMTP par exemple 'smtp.free.fr'
    $portsmtp = '25'; // S'il faut utiliser un autre port que le port 25 spécifiez le ici
    $authsmtp = true; // Si le serveur demande une authentification laissez true, s'il n'y a pas besoin d'authentification mettez false et
    				  // ignorez les champs suivant
    $usersmtp = ''; // Mettez ici le login d'accés au serveur SMTP. Par exemple :  'toto'
    $passmtp = ''; // Mettez ici votre mot de passe d'accés au serveur SMTP. Par exemple : 'Mon_mot_de_pass'
     
    ///////////////////////
    // FIN CONFIGURATION //
    ///////////////////////
    $included_files = get_included_files();
    require(dirname(__FILE__).'/include/fonctions.php');
    if(VerifUrl($_SERVER['REQUEST_URI'], $included_files, dirname(__FILE__))){
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    	<title>Formulaire de contact</title>
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    	<meta name="revisit-after" content="1">
    	<meta name="description" content="EXmail 1.2">
    	<meta name="keywords" content="exmail">
    	<meta name="robots" content="ALL">
    	<meta name="distribution" content="Global">
    	<meta name="rating" content="General">
    	<meta name="copyright" content="Steuf">
    	<meta name="author" content="Steuf">
    	<link rel="stylesheet" type="text/css" href="contact.css">
    </head>
    <body>
    <?php
    }
    if (isset($_POST['submit'])){
    	///////////////////
    	// CONFIGURATION //
    	///////////////////
    	$to = 'xxxxxxxxxx@wanadoo.fr' ; // Mettez ici, là ou les adresses emails ( Séparées d'une virgule ) auquels le mail doit être envoyé.
    	$subject = 'Recontacter cette personne' ;	 // Mettez ici le sujet de votre mail
    	// Dans body vous avez le corps du mail, ici nous mettons les variables du champs commentaire $comment, 
    	// vous pouvez mettre bien entendu plusieurs variables avec du texte au format html ou texte selon votre choix.
    	// Attention ! Comme vous le voyez dans l'exemple, le texte doit être entre des Appostrophes , alors que les Variable 
    	// venant du formulaire doivent être en dehors et de la forme .$_POST['nom']. ( Ne pas oublier les points )
    	// Attention ! Si vous mettez une appostrophe dans le texte elle doit être précédée de \ Exemple :
    	// Si je veus écrire : J'y vais , il faut mettre : J\'y vais.
     
    	$body = '<html>
    				<head>
    					<title>Recontacter cette personne</title>
    				</head>
    				<body>
    					 <br>Commentaire : '.$_POST['comment'].'
    					 <br>Téléphone : '.$_POST['tel'].'
    					 <br><br><br>Cliquer sur "répondre" pour donner une réponse par mail
    					 </body>
    			</html>';	
    	// Si l'adresse email n'est pas valide, on met un message d'erreur (CheckEmail() ===> Fonction de vérification de la validité de l'adresse email)
    	if(!CheckEmail($_POST['email'])){
    		$error[] = '<p class="erreur">Votre adresse Email n\'est pas valide !</p>';
    	}
     
    	// On vérifie que les champs obligatoires sont remplis, s'il n'est pas rempli on dirige vers un message d'erreur, pour vérifier d'autres champs
    	// Du formulaire que vous allez créer vous n'avez qu'à recopier les deux lignes si dessous et de remplacer la variable $_POST['nom'] par celle
    	// de la partie du formulaire que vous voulez rendre obligatoire. Ainsi que le message en html que vous voulez mettre en cas d'erreur.
     
     
     
    	// Vérification Cryptogramme
    	if((empty($_POST['cryptogramme']) or $_POST['cryptogramme'] !== $_SESSION['captcha-control']) and $cryptogramme === TRUE){
    		$error[] = '<p class="erreur">Cryptogramme invalide !</p>';
    	}
     
    	// Vérification telephone
    	if(empty($_POST['tel'])){
    $error[] = '<p class="erreur">Vous n\'avez pas mis votre num&eacute;ro de t&eacute;l&eacute;phone !</p>';
    }
    	///////////////////////
    	// FIN CONFIGURATION //
    	///////////////////////
     
    	if(isset( $_FILES['upload_localfile']['tmp_name']) and is_uploaded_file($_FILES['upload_localfile']['tmp_name'])){
    		$destination = dirname(__FILE__).'/upload/'.$_FILES['upload_localfile']['name'];
    		if(move_uploaded_file($_FILES['upload_localfile']['tmp_name'], $destination)){
    			$uploadinfo = '<p class="erreur">Upload R&eacute;ussi</p>';
    		}
    	}
    	else {
    		$uploadinfo = '<p class="erreur"><p>';
    	}
    	if(!isset($error) or empty ($error)) {
    		$reqclass = dirname(__FILE__).'/include/class.phpmailer.php';
    		require_once ( $reqclass );
    		$mail = new PHPmailer();		
    		if($foncmail === 'mail'){
    			$mail->IsMail();
    		}
    		elseif($foncmail === 'smtp'){
    			$mail->IsSMTP(); 												
    			$mail->Host = $hostsmtp;					
    			$mail->Port = $portsmtp;
    			$mail->SMTPAuth = $authsmtp;											
    			$mail->Username = $usersmtp;			
    			$mail->Password = $passmtp;
    		}	
    		if($format === 'html'){
    			$mail->IsHTML(true);
    		}
    		elseif($format === 'texte'){
    			$mail->IsHTML(false);
    		}
    		$mail->From = $_POST['email'];
    		$mail->FromName = $_POST['nom'];
    		$mail->AddAddress( $to );
    		$mail->Subject = $subject ;
    		$mail->Body = stripslashes( $body );
    		if(isset($destination)){
    			$mail->AddAttachment( $destination );
    		}
    		if(!$mail->Send()){
    			echo '<p class="erreur">Erreur fonction mail() :</p>'; 
    			echo $mail->ErrorInfo;
    		}
    		else{	
    			echo $uploadinfo;
    			echo '<p class="erreur">Formulaire envoy&eacute; !</br></br>Merci de votre message!</br></br>Vous allez recevoir une r&eacute;ponse tr&egrave;s prochainement.</br></br><a href="http://www.gite-la-tronchere.fr"><img border="0" src="http://www.ca63.fr/contact/bt_fermer.gif" width="57" height="15"></a></p>';
    		}
    		unset($mail);
    	}
    	else {
    		foreach($error as $errormsg){
    		   echo $errormsg;
    		}
    		echo '<p class="erreur">Le Formulaire n\'a pas &eacute;t&eacute; envoy&eacute;</p>
    			<p class="erreur">Veuillez recommencer !</p>';
    	}
    	if (isset($destination)){
    		unlink($destination);
    	}
    }
    if (((isset($error) or !empty ($error)) and isset($_POST['submit'])) or  !isset($_POST['submit'])){
    	include(dirname(__FILE__).'/formulaire.php');
    } 
    if(VerifUrl($_SERVER['REQUEST_URI'], $included_files, dirname(__FILE__))){
    ?>
    </body>
    </html>
    <?php } ?>
    et du fichier image.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php if(session_id()=='') { session_start(); }
    //<?php 
    //session_start();
    include_once dirname( __FILE__ ).'/captcha.class.php';
    $captcha = new captcha();
    $captcha->setStringLenght(4);
    $captcha->setTextColor( 0, 0, 51 );
    $captcha->setFont( dirname( __FILE__ ) .'/tahomabd.ttf', 12 );
    $captcha->setShadow();
    $captcha->setShadowColor( 235, 240, 248 );
    $captcha->setTextAngle( 3 );
    $captcha->getImage();
    $_SESSION['captcha-control'] = $captcha->getRandString();
    ?>

  15. #15
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    - passages à la ligne après ?> en fin de fichier ? (astuce pour éviter ça : supprimer simplement le ?> de fin dans le fichier)
    Ca aussi je viens d'essayer (dans les deux fichiers) mais sans résultat.
    Je pense avoir fait tout ce qui est indiqué ici, si vous avez d'autres pistes je suis preneur.

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    il n y a pas besoin de pistes : l erreur t indique précédemment le fichier et la ligne posant problème.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Invité
    Invité(e)
    Par défaut
    Pour faire simple :
    - session_start(); en tout début de fichier
    - supprimer tous les autres dans les fichiers includes, ou remplacer par if(...)... si le fichier (inculde) est utilisé ailleurs, autrement, voire seul.
    - supprimer les ?> en toute fin des fichiers (fichiers includes principalement)
    - vérifier qu'AUCUN header n'est envoyé APRES affichage HTML (echo..., passage à la ligne,...)

    Tout ça, on ne peut pas le faire à ta place, alors... UN PEU D'INITIATIVE !

  18. #18
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    J'oublie surement quelque chose mais quoi?

    Résumons :
    - mon script de formulaire de contact comprend 6 fichiers PHP
    - on y trouve 2 fichiers PHP avec l'instruction session_start()
    - J'ai donc remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    session_start();
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php if(session_id()=='') { session_start(); }
    - J'ai supprimé les ?> de bas de page de mes 6 fichiers PHP
    - vérifier qu'AUCUN header n'est envoyé APRES affichage HTML (echo..., passage à la ligne,...) : Ca je crois avoir compris : j'ai mis le HTML du fichier index tout en bas juste avant ?>

    mon fichier index
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    <?php if(session_id()=='') { session_start(); }
    $cryptogramme = TRUE;
    $format = 'html';
    $foncmail = 'mail';
    $hostsmtp = '';
    $portsmtp = '25';
    $authsmtp = true;
    $usersmtp = '';
    $passmtp = '';
    $included_files = get_included_files();
    require(dirname(__FILE__).'/include/fonctions.php');
    if(VerifUrl($_SERVER['REQUEST_URI'], $included_files, dirname(__FILE__))){
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    	<title>Formulaire de contact</title>
    	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    	<meta name="revisit-after" content="1">
    	<meta name="description" content="EXmail 1.2">
    	<meta name="keywords" content="exmail">
    	<meta name="robots" content="ALL">
    	<meta name="distribution" content="Global">
    	<meta name="rating" content="General">
    	<meta name="copyright" content="Steuf">
    	<meta name="author" content="Steuf">
    	<link rel="stylesheet" type="text/css" href="contact.css">
    </head>
    <body>
    <?php
    }
    if (isset($_POST['submit'])){
    $to = 'xxxxx@free.fr' ;
    $subject = 'Demande depuis www.bergheaud.fr' ;
     
    	if(!CheckEmail($_POST['email'])){
    		$error[] = '<p class="erreur">Votre adresse Email n\'est pas valide !</p>';
    	}
    	if((empty($_POST['cryptogramme']) or $_POST['cryptogramme'] !== $_SESSION['captcha-control']) and $cryptogramme === TRUE){
    		$error[] = '<p class="erreur">Cryptogramme invalide !</p>';
    	}
    	if(empty($_POST['tel'])){
    $error[] = '<p class="erreur">Vous n\'avez pas mis votre num&eacute;ro de t&eacute;l&eacute;phone !</p>';
    }
    	if(isset( $_FILES['upload_localfile']['tmp_name']) and is_uploaded_file($_FILES['upload_localfile']['tmp_name'])){
    		$destination = dirname(__FILE__).'/upload/'.$_FILES['upload_localfile']['name'];
    		if(move_uploaded_file($_FILES['upload_localfile']['tmp_name'], $destination)){
    			$uploadinfo = '<p class="erreur">Upload R&eacute;ussi</p>';
    		}
    	}
    	else {
    		$uploadinfo = '<p class="erreur"><p>';
    	}
    	if(!isset($error) or empty ($error)) {
    		$reqclass = dirname(__FILE__).'/include/class.phpmailer.php';
    		require_once ( $reqclass );
    		$mail = new PHPmailer();
    		if($foncmail === 'mail'){
    			$mail->IsMail();
    		}
    		elseif($foncmail === 'smtp'){
    			$mail->IsSMTP();
    			$mail->Host = $hostsmtp;
    			$mail->Port = $portsmtp;
    			$mail->SMTPAuth = $authsmtp;
    			$mail->Username = $usersmtp;
    			$mail->Password = $passmtp;
    		}
    		if($format === 'html'){
    			$mail->IsHTML(true);
    		}
    		elseif($format === 'texte'){
    			$mail->IsHTML(false);
    		}
    		$mail->From = $_POST['email'];
    		$mail->FromName = $_POST['nom'];
    		$mail->AddAddress( $to );
    		$mail->Subject = $subject ;
    		$mail->Body = stripslashes( $body );
    		if(isset($destination)){
    			$mail->AddAttachment( $destination );
    		}
    		if(!$mail->Send()){
    			echo '<p class="erreur">Erreur fonction mail() :</p>';
    			echo $mail->ErrorInfo;
    		}
    		else{
    			echo $uploadinfo;
    			echo '<p class="erreur">&nbsp;</p><p class="erreur">Formulaire envoy&eacute; !</p><p class="erreur">Merci de votre message!</p><p class="erreur">Vous allez recevoir une r&eacute;ponse tr&egrave;s prochainement.</p></p>';
    		}
    		unset($mail);
    	}
    	else {
    		foreach($error as $errormsg){
    		echo $errormsg;
    		}
    		echo '<p class="erreur">Le Formulaire n\'a pas &eacute;t&eacute; envoy&eacute;</p>
    			<p class="erreur">Veuillez recommencer !</p>';
    	}
    	if (isset($destination)){
    		unlink($destination);
    	}
    }
    if (((isset($error) or !empty ($error)) and isset($_POST['submit'])) or  !isset($_POST['submit'])){
    	include(dirname(__FILE__).'/formulaire.php');
    }
     
    if(VerifUrl($_SERVER['REQUEST_URI'], $included_files, dirname(__FILE__))){
    $body = '<html>
    <head>
    <title>Recontacter cette personne</title>
    				</head>
    				<body>
    					 <br>Texte :'.$_POST['comment'].'
    					 <br>téléphone :'.$_POST['tel'].'
    					 <br><br><br>Cliquer sur "répondre" pour donner une réponse par mail
    					 </body>
    			</html>';
    			?>
    </body>
    </html>
    <?php }
    mon fichier image.php (j'y ai même supprimé l'instruction session_start pour faire un essai)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    //if(session_id()=='') { session_start(); }
    //session_start();
    include_once dirname( __FILE__ ).'/captcha.class.php';
    $captcha = new captcha();
    $captcha->setStringLenght(4);
    $captcha->setTextColor( 0, 0, 51 );
    $captcha->setFont( dirname( __FILE__ ) .'/tahomabd.ttf', 12 );
    $captcha->setShadow();
    $captcha->setShadowColor( 235, 240, 248 );
    $captcha->setTextAngle( 3 );
    $captcha->getImage();
    $_SESSION['captcha-control'] = $captcha->getRandString();
    Qu'ai-je pu oublier?

  19. #19
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Quelle est l'erreur maintenant ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  20. #20
    Membre à l'essai
    Inscrit en
    Avril 2003
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 45
    Points : 24
    Points
    24
    Par défaut
    http://www.bergheaud.fr/contact.php

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /homepages/37/d141117866/htdocs/BER/contact.php:7) in /homepages/37/d141117866/htdocs/BER/for/index.php on line 1

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/10/2009, 14h15
  2. Réponses: 2
    Dernier message: 20/08/2009, 22h27
  3. Réponses: 1
    Dernier message: 17/07/2007, 11h49
  4. Réponses: 4
    Dernier message: 16/07/2007, 13h42
  5. Réponses: 5
    Dernier message: 04/09/2006, 15h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo