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 :

[Mail] Déclaration d'une fonction


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut [Mail] Déclaration d'une fonction
    Bonjour,

    Je poste ce sujet ici, même si je ne sais pas que c'est l'endroit le plus approprié mais je ne vois pas meilleur emplacement

    Donc, je suis entrain de créer un forum ( et mon travail est bien avancé ), quand je teste ma page index.php il me met l'erreur suivante


    Fatal error: Cannot redeclare sendmail() (previously declared in C:\Program Files\EasyPHP 3.0\www\forum\etape8\_conn.php:37) in C:\Program Files\EasyPHP 3.0\www\forum\etape8\_conn.php on line 42

    le problème la fonction sendmail n'est déclarée qu'une seule fois dans le ficheir _conn.php et je fais appel a cette fonction dans d'autre fichier

    Donc pourquoi il m'annoce cette erreur?? c'est peut-etre absurde mais est ce que ca peut venir des requêtes Sql que je fais parce que des fois je ne mets les or die par exple ( je suis désolée pour les pro ca peut leur paraitre absurde mais je ne suis que débutante )

    voila merci d'avance pour votre aide

    PS: je n'ai pas vu la nécéssité de mettre le code mais je reste a disposition au cas ou il y en a besoin

  2. #2
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Salut,

    Peux tu montrer le code correspondant à la ligne 42 ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Par défaut
    Et la ligne 37 aussi, car il semblerait qu'il y ai un conflit avec cette ligne.

  4. #4
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    Bonjour,

    les lignes de codes de 37 ( debut de déclaration )a 42 ( l'accolade de la fin de déclaration )
    la fonction sendmail est la suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    function sendMail($from,$to,$sujet,$body) {
    	global $isLocal;
    	if(!$isLocal)
    		return mail($to,$sujet,$body,"From: ".$from);
    	else return false;
    }
    PS: le $isLocal c'est le paramètre de test en local définit comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     
    // On teste si on est en local 
    $isLocal=($_SERVER["SERVER_NAME"]=="localhost");
     
    $isLocal = TRUE;
    // Paramètres de connexion en local ou sur site
     
    $host = ($isLocal) ? "localhost" : "localhost"; 
    $user = ($isLocal) ? "root" : "root"; 
    $pass = ($isLocal) ? "mdp" : "mdp"; 
    $bdd = ($isLocal) ? "forum" : "forum";
    voila donc

  5. #5
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    voila je mets tout le coe de la page connexion
    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
     
    <?php
     
    /*   Mini-forum DunDal   */
     
    // === CONNEXION A LA BD ===
     
    // On teste si on est en local 
    $isLocal=($_SERVER["SERVER_NAME"]=="localhost");
     
    $isLocal = TRUE;
    // Paramètres de connexion en local ou sur site
     
    $host = ($isLocal) ? "localhost" : "localhost"; 
    $user = ($isLocal) ? "root" : "root"; 
    $pass = ($isLocal) ? "mdp" : "mdp"; 
    $bdd = ($isLocal) ? "forum" : "forum";
     
    // connexion a la base de donnees
     
    $link = mysql_connect($host,$user,$pass);
    mysql_select_db($bdd);
     
    // Nom des tables
    $tb1 = "forum_mesages";
    $tb2 = "forum_users"; 
     
    // Nom des cookies
    $cook1 = "id8";
    $cook2 = "login8";
     
    //mail du forum 
    $mailForum = "forum.dundal@gmail.com";
     
     
    // === ENVOI DES MAILS ===
    function sendMail($from,$to,$sujet,$body) {
    	global $isLocal;
    	if(!$isLocal)
    		return mail($to,$sujet,$body,"From: ".$from);
    	else return false;
    }
     
     
    // === IDENTIFICATION DU VISITEUR ===
     
    $isUser = false; $isAdmin=false; $isModo=false;
    if(@$_COOKIE[$cook1]) {
    	$SQL = "SELECT * FROM $tb2 WHERE ID=".$_COOKIE[$cook1];
    	$res = mysql_query($SQL) or die(mysql_error());
    	if($user=mysql_fetch_array($res)) {
    		$isUser = true;
    		$isAdmin = ($user["ID"]==1);
    		$isModo = ($isAdmin||($user["ismodo"]=="1"));
     
    	}
    }
     
     
     
    // === IMAGES ===
    $img_poub = "<img src='etape8/img/minipoub.gif' border='0' width='14' height='15' align='absmiddle' alt='del'>";
    ?>
    et celui de la page index.php qui quand je teste me sort l'erreur d'avant ,
    vraiment j'ai besoin de votre aide ca fait deux jours je bloque dessus, et je ne vois absoluement d'ou ca peut venir , j'ai verifié mon code etape par etape , je n'arrive a rien, la fonction n'est redéclaré nulle part !!!!!!!!!

    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
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
     
    <?php
    /*   Mini-forum DunDal   */
     
    include("_conn.php");
     
    // Destruction de messages
    if($isModo && (@$_GET["del"]!="")) {
    	mysql_query("DELETE FROM $tb1 WHERE ID=".$_GET["del"]." OR reponse=".$_GET["del"]);
    }
     
     
    // Requête générique
    $SQL1 = "SELECT $tb1.ID,reponse,$tb1.quand,pseudo,email,titre,message,ismodo,IDuser"
    . " FROM $tb1 LEFT JOIN $tb2 ON $tb1.IDuser=$tb2.ID";
     
     
    // === AJOUT DU MESSAGE EVENTUEL ===
     
    if(@$_POST["message"]) {
     
    	// Requête d'insertion (ID sera mis à jour automatiquement)
    	$SQL = "INSERT into $tb1(quand,IDuser,message"
    		. ",reponse,titre) VALUES(" . time()
    		. ",".$user["ID"]
    		. ",'".addslashes($_POST["message"])."'"
    		. ",'".$_POST["reponse"]."'"
    		. ",'".addslashes(@$_POST["titre"])."'"
    		. ")";
    	mysql_query($SQL);
    	// Réponse = n° auto si message initial
    	$id = mysql_insert_id();
    	if(!$_POST["reponse"]) {
    		mysql_query("UPDATE $tb1"
    			. " SET reponse=".$id.",dernier=".$id." WHERE ID=".$id);
    	// Mise à jour de l'ID du dernier post du sujet pour tri
    	} else {
    		mysql_query("UPDATE $tb1"
    			. " SET dernier=".$id." WHERE reponse=".$_POST["reponse"]);
    	}
     
    	// Envoi de la réponse par email
    	if($_POST["reponse"]!="0") {
    		// Sujet du mail
    		$SQL = "SELECT titre FROM $tb1 WHERE ID="
    			. $_POST["reponse"];
    		$res = mysql_query($SQL);
    		$sujet = "Re: ".mysql_result($res,0,0);
    		// Sélection des destinataires
    		$SQL = $SQL1 . " WHERE reponse="
    			. $_POST["reponse"]." ORDER BY ID DESC";
    		$res = mysql_query($SQL) or die(mysql_error());
    		// Ne pas envoyer à l'auteur de la réponse
    		$temp=",".$user["email"].",";
    		// Pour chaque adresse
    		while($val=mysql_fetch_array($res)) {
    			// Déjà envoyé ?
    			if(!strpos(" ".$temp,",".$val["email"].",")) {
    				// Corps du message
    $body = "Bonjour ".$val["pseudo"].",\n\n"
    	. "Un visiteur a repondu a votre message sur le forum :"
    	. "\n".str_repeat("-",40)."\n"
    	. $user["pseudo"]." >> ".$_POST["message"]
    	. "\n".str_repeat("-",40)."\n"
    	. "\nen reponse a votre message du ".date("d/m/Y",$val["quand"])." :"
    	. "\n".str_repeat("-",40)."\n"
    	. $val["message"]
    	. "\n".str_repeat("-",40)."\n"
    	. "\nPour poursuivre la discussion, veuillez vous rendre a l'adresse\n"
    	. "http://".$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"]
    	. "?post=".$_POST["reponse"]
    	."\n\nA bientot\n";
    				// Envoi du mail
    				sendMail($mailForum,$val["email"],$sujet,$body);
    				// mémorise l'adresse
    				$temp .= $val["email"] . ",";
    			}
    		}
    	}
    	// Redirection
    	mysql_close();
    	Header("Location: ".$_SERVER["REQUEST_URI"]);
    }
     
    // === AFFICHAGE DE LA PAGE ===
     
    // N° de la page
    $page = @$_GET["page"]; if(!$page) $page="1";
     
    include("_top.php"); ?>
     
    	<table cellspacing=10 cellpadding=5 width=100%><tr>
     
    <?php // === Affichage des messages ===
     
    // Affichage de la liste
    if(!@$_GET["post"]) {
     
    	function crunch($tx,$lg) {
    		$tmp = 0;
    		if(strlen($tx)>$lg) $tmp = strpos($tx," ",$lg);
    		if($tmp) $tx2 = substr($tx,0,$tmp);
    		else $tx2 = substr($tx,0,$lg);
    		if($tx2!=$tx) $tx2.=" ...";
    		return $tx2;
    	}
     
    	$maxPosts = 15; // Nbre max de msg/page
     
    	// Comptage des messages
    	$SQL = "SELECT count(*) FROM $tb1";
    	$nbMsg = mysql_result(mysql_query($SQL),0,0);
    	$nbPage = ceil($nbMsg/$maxPosts);
    	if($page>$nbPage) $page=$nbPage;
     
    	// Requête de sélection des messages
    	$SQL = $SQL1 . " ORDER BY dernier DESC,ID"
    		. " LIMIT ".($page-1)*$maxPosts.",".$maxPosts;
    	$res = mysql_query($SQL); $i=0;
    	echo "<dl><td class=msg>";
    	// Tant qu'il y a des messages
    	while($val=mysql_fetch_array($res)) { $i++;
    		$temp = "";
    		// Cas où on démarre d'une réponse > on réaffiche le sujet
    		if(($i==1)&&($val["reponse"]!=$val["ID"])) {
    			$SQL = $SQL1 . " WHERE $tb1.ID=".$val["reponse"];
    			$val=mysql_fetch_array(mysql_query($SQL));
    			mysql_data_seek($res,0);
    		}
    		// Poubelle ?
    		if($isModo && ($isAdmin||($user["ID"]==$val["IDuser"])||(($val["ismodo"]!="1")&&($val["IDuser"]!="1"))))
    			$temp.="<A href='index.php?del=".$val["ID"]."'>".$img_poub."</A> ";
    		// Nouveau sujet ?
    		if($val["reponse"]==$val["ID"]) {
    			if($i>1) echo "</td></dl></tr><tr><dl><td class=msg>";
    			$temp.="<A class=msg href='index.php?post=".$val["ID"]."'>";
    		}
    		// Ecrit la date du message
    		$temp.="<span class=msgdate>"
    			.date("d/m/Y H:i:s",$val["quand"])." </span>";
    		// Ecrit le pseudo de l'auteur
    		$temp.= $val["pseudo"] . " : ";
    		// Ecrit le titre ou le début du message
    		if($val["reponse"]==$val["ID"]) 
    			echo "<dt class=msg>".$temp.htmlentities($val["titre"]) . "</A></dt>";
    		else
    			echo "<dd class=msg>"
    				.$temp.htmlentities(crunch($val["message"],70))."</dd>";
    	}
    	echo "</td></dl>";
    	$url = "index.php";
     
    // Affichage détaillé du sujet
    } else {
     
    	$maxPosts = 10; // Nbre max de msg/page
     
    	// Comptage des messages
    	$SQL = "SELECT count(*) FROM $tb1 WHERE reponse="
    		. $_GET["post"];
    	$nbMsg = mysql_result(mysql_query($SQL),0,0);
    	$nbPage = ceil($nbMsg/$maxPosts);
    	if($page>$nbPage) $page=$nbPage;
     
    	// Requête de sélection des messages
    	$SQL = $SQL1 . " WHERE reponse="
    		. $_GET["post"] . " ORDER BY reponse DESC,ID"
    		. " LIMIT ".($page-1)*$maxPosts.",".$maxPosts;
    	$res = mysql_query($SQL);
    	echo "<td>"; $i=0;
    	// Tant qu'il y a des messages
    	while($val=mysql_fetch_array($res)) { $i++;
    		if($i>1) echo "<br><div class=msg2>";
    		else echo "<div class=msg1>";
    		// Poubelle si Moderateur 
    		if($isModo && ($isAdmin||($user["ID"]==$val["IDuser"])||(($val["ismodo"]!="1")&&($val["IDuser"]!="1"))))
    			echo "<A href='index.php?post=".$val["reponse"]."&del=".$val["ID"]."'>".$img_poub."</A> ";
    		// Ecrit la date du message
    		echo "<span class=msgdate>"
    			.date("d/m/Y H:i:s",$val["quand"])." </span>";
    		// Ecrit le pseudo de l'auteur + email si Moderateur
    		if($isModo)
    			echo "<A href='mailto:".$val["email"]."'>".$val["pseudo"]."</A>";
    		else
    			echo $val["pseudo"];
    		// Ecrit le titre éventuel puis le message
    		if($val["reponse"]==$val["ID"])
    			echo " : " . htmlentities($val["titre"]);
    		echo "<br>" . nl2br(htmlentities($val["message"]));
    		echo "</div>";
    	}
    	echo "</td>";
    	$url = "index.php?post=".$_GET["post"];
    } 
     
    // Barre de navigation
    if($nbMsg>$maxPosts) {
    	$temp= "</tr><tr class=navig><td align=center><table><tr><td width=60 nowrap>";
    	if($page>1) {
    		$temp.= "<A href='".$url."'>|<</A>&nbsp;&nbsp;&nbsp;&nbsp;";
    		if($page>2) $temp.= "<A href='".$url."&page=".($page-1)."'><<</A>";
    		else $temp.= "<A href='".$url."'><<</A>";
    	}
    	$temp.= "</td><td align=center nowrap>&nbsp;&nbsp;Page ";
    	for($i=max(1,$page-5);$i<=min($nbPage,$page+5);$i++) {
    		if($i==$page) $temp.= $i." ";
    		else {
    			$temp.= "<A href='".$url;
    			if($i>1) $temp.= "&page=".$i;
    			$temp.= "'>".$i."</A> ";
    		}
    	}
    	$temp.= "&nbsp;&nbsp;</td><td align=right width=60 nowrap>";
    	if($nbMsg>$page*$maxPosts)
    		$temp.= "<A href='".$url."&page=".($page+1)."'>>></A>&nbsp;&nbsp;"
    		. "&nbsp;&nbsp;<A href='".$url."&page=".$nbPage."'>>|</A>";
    	$temp.= "</td></tr></table></td>";
    	echo str_replace("index.php&","index.php?",$temp);
    }
    ?>
     
    	</tr></table>
    <br>
     
    <?php // Formulaire de saisie
     
    if(!$isUser) { // identifié ? ?>
     
    	<A href="log.php">Pour participer à ce forum vous devez être identifié !</A><br>
     
     
    <?php } else {
     
    	if(!@$_GET["post"]||(mysql_num_rows($res)>0)) { ?>
     
    	<SCRIPT language="JavaScript"><!--
    		function repond(num) {
    			test=true
    			with(document.form1) {
    				// vérification du champ message
    				if(message.value=="") {
    					alert("Le message est vide !")
    					message.focus()
    					test=false
    				}
    			<?php if(!@$_GET["post"]) { ?>
    				// vérification du champ titre
    				if(titre.value=="") {
    					alert("Le titre est vide !")
    					titre.focus()
    					test=false
    				}
    			<?php } ?>
    				reponse.value=num
    				if(test) submit()
    			}
    		}
    	--></SCRIPT>
     
    	<table>
    		<form method="post" action="index.php<?php
    			if(@$_GET["post"]) {
    				// on retransmet le n° du sujet
    				echo "?post=".$_GET["post"];
    				// et éventuellement le n° de dernière page
    				if($nbMsg>=$maxPosts) echo "&page=".ceil(($nbMsg+1)/$maxPosts);
    			} ?>" name="form1">
    			<?php if(!@$_GET["post"]) { ?>
    				<tr>
    					<td align=right>Titre</td><td>
    						<input name="titre" size=60 maxlength=80>
    				</tr>
    			<?php } ?>
    			<tr>
    				<td align=right valign=top>Message</td><td>
    					<textarea name="message" cols=60 rows=10></textarea>
    				</td>
    			</tr><tr>
    				<td>&nbsp;</td>
    				<td align=center>
    					<?php // Bouton "Nouveau" ou "Répondre" ?
    					if(@$_GET["post"]) { ?>
    						<input type="button" value="Répondre"
    							onclick="repond(<?php echo $_GET["post"]?>)">
    					<?php } else { ?>
    						<input type="button" value="Nouveau sujet" onclick="repond(0)">
    					<?php } ?>
    					<input type="hidden" name="reponse" value="0">
    				</td>
    			</tr>
    		</form>
    	</table>
    <?php }
    }
     
    if(@$_GET["post"]) { ?>
     
    	<br><A href="index.php">Retour à la liste des sujets</A>
     
    <?php }
     
    include("_btm.php"); ?>
    Merci d'avance

  6. #6
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Hmm

    Peux tu utiliser include_once au lieu de include ?

    dis ce que ça donne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#]Déclaration d'une fonction globale
    Par Raton dans le forum C#
    Réponses: 7
    Dernier message: 21/09/2013, 12h27
  2. déclaration d'une fonction static
    Par salseropom dans le forum C
    Réponses: 4
    Dernier message: 09/03/2007, 16h59
  3. Réponses: 2
    Dernier message: 10/01/2007, 23h28
  4. [Mail] bouton appelle une fonction
    Par man123 dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2005, 19h35
  5. Réponses: 4
    Dernier message: 26/07/2005, 13h38

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