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
|
<?php
/* Mini-forum en PHP */
// === 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);
// Variables
if(isset($_POST['pseudo'])) $pseudo=$_POST['pseudo'];
else $pseudo="";
if(isset($_POST['email'])) $email=$_POST['email'];
else $email="";
if(isset($_POST['message'])) $message=$_POST['message'];
else $message="";
if(isset($_POST['reponse'])) $reponse=$_POST['reponse'];
else $reponse="";
$login=addslashes($pseudo); // addslashes gere les caratères spéciaux dans le champ spécifié
$email=addslashes($email);
$message=addslashes($message);
/* === AJOUT D'UN MESSAGE EVENTUEL === */
if(@$_POST["message"]) {
$SQL="INSERT INTO forum_messages (quand,pseudo,email,message,reponse) VALUES (".time().",'".$pseudo."','".$email."','".$message."','".$reponse."')";
$res=mysql_db_query($bdd,$SQL,$link) or die ('Insertion dans la base de données du site impossible '.$SQL.' '.mysql_error());
/* Réponse = n° auto si message initial */
if(!$_POST["reponse"]) {
// juste apres l'insertion, on peut récuperer l'id généré
$id = mysql_insert_id();
mysql_query("UPDATE forum_messages SET reponse=".$id." WHERE ID=".$id);
}
/* Envoi de la réponse par email */
if(!$isLocal&&($reponse!="0")) {
// Gestionnaire ou répondeur du forum
//A quoi sert cette adresse , je crée juste une boite mail ?????
$from = "From: forum@gmail.fr";
// Sujet du mail
$sujet = "Reponse a votre message posté sur le forum";
// Sélection des destinataires
$SQL = "SELECT * FROM forum_messages WHERE email<>'".$email."' AND (reponse=".$reponse." OR ID=".$reponse.") ORDER BY ID DESC";
$res = mysql_query($SQL) or die(mysql_error());
$temp=",";
// Pour chaque adresse
while($val=mysql_fetch_array($res)) {
// Déjà envoyé
if(!strpos(" ".$temp,",".$val["email"].",")) {
// Corps du message
$body = "Bonjour ".$val["login"].",\n\n"
. "Un visiteur a repondu a votre message sur le forum :"
. "\n".str_repeat("_",40)."\n"
. $_POST["login"]." >> ".$_POST["message"]
. "\n".str_repeat("_",40)."\n"
. "\n en 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 à l'adresse\n"
. "http://".$_SERVER["SERVER_NAME"].$_SERVER["SCRIPT_NAME"]
. "?post=".$_POST["reponse"]
."\n\nA bientot\n";
// Envoi du mail
mail($val["email"],$sujet,$body,$from);
// mémorise l'adresse
$temp .= $val["email"] . ",";
}
}
}
}
// === AFFICHAGE DE LA PAGE ===
?>
<HTML><HEAD>
<TITLE>Mini-forum DunDal: </TITLE>
</HEAD><BODY bgcolor="#FFFFFF"><center>
<SCRIPT language="Javascript">
<!--
function repond(num) {
test=true
with(document.form1) {
// vérification du champ message
if(message.value=="") {
alert("Le champ message est vide!")
message.focus()
test=false
}
// vérification du champ email
var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,3}$/
if(reg.exec(email.value)==null) {
alert("Votre email est invalide !")
email.focus()
test=false
}
// vérification du champ login
reg = /^[A-Za-z0-9_-]{3,}$/
if(reg.exec(pseudo.value)==null) {
alert("Votre pseudo est invalide !")
pseudo.focus()
test=false
}
reponse.value=num
if(test) submit()
}
}
-->
</SCRIPT>
<!-- Formulaire de saisie -->
<table>
<form method="post" action="index2.php" name="form1">
<tr>
<td align=right>Pseudo</td><td>
<input name="pseudo" maxlength=15>
</td><td rowspan=3>
<textarea name="message" cols=60 rows=5
></textarea>
</td>
</tr><tr>
<td align=right>Email</td><td>
<input name="email" maxlength=50>
</td>
</tr><tr>
<td colspan=2 align=center>
<input type="submit" value="Nouveau sujet">
<input type="hidden" name="reponse">
</td>
</tr>
</form>
</table>
<!-- Affichage des messages -->
<table border=1 cellspacing=0 cellpadding=5 width=100%>
<?php
// Requête de sélection des messages
$SQL = "SELECT * FROM forum_messages ORDER BY reponse DESC,ID";
$res = mysql_query($SQL) or die(mysql_error());
$i=0;
// Tant qu'il y a des messages
while($val=mysql_fetch_array($res)) { $i++;
// Nouveau sujet
if(($val["reponse"]==$val["ID"])) {
if($i>1) echo "</td></tr>";
echo "<tr><td>";
// Bouton "Répondre"
echo "<button onclick='repond(".$val["ID"].")'>"
. "Répondre</button> ";
} else {
echo "<hr size=1>";
}
echo "<br>";
// Ecrit la date du message
echo date("d/m/Y H:i:s",$val["quand"]);
// Ecrit le login de l'auteur
echo " - ".$val["pseudo"];
echo "<br>";
// Ecrit le message, n'autorise pas les code html ;)
echo htmlentities($val["message"]);
}
?>
</table>
</center></BODY></HTML>
<?php
// === DECONNEXION ===
mysql_close();
?> |
Partager