FORUM STYLE PHPBB ET AGENDA PERSONNALISÉ

Messages postés
140
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
20 mars 2006
- - Dernière réponse : Panda8821
Messages postés
2
Date d'inscription
dimanche 3 juin 2012
Statut
Membre
Dernière intervention
9 juillet 2012
- 4 juin 2012 à 16:52
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22740-forum-style-phpbb-et-agenda-personnalise

Afficher la suite 
Panda8821
Messages postés
2
Date d'inscription
dimanche 3 juin 2012
Statut
Membre
Dernière intervention
9 juillet 2012
-
Bonjour... je suis interresser par ce "Forum"
j'ai crée les table MyphpAdmin
j'ai ajouté mes Code Host ect... sur CONNEC.php
Mon probleme :
un fois que j'applique l'addresse Install
il m'affiche les donnée a rentrée...
mais il m'affiche un messages d'erreur suivant...
---------------------------------------------------------------------------
Warning: mysql_connect() [function.mysql-connect]: [2002] Connection timed out (trying to connect via tcp://( mon code Host ):3306) in /htdocs/forum/install.php on line 17
ainsi
Warning: mysql_connect() [function.mysql-connect]: Connection timed out in /htdocs/forum/install.php on line 17
---------------------------------------------------------------------------
il m'indique que ma base est "introuvable"
que doit je faire Merci pour votre "Aide"..
monoceros01
Messages postés
432
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006
-
Il est pas très long XP
scoder
Messages postés
140
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
20 mars 2006
-
comme je le précise plus haut ce code a été fait alors que je ne pratiquais php que depuis 2 mois environ, et c'était il y 1 an 1/2 maintenant.
la mise a jour a de meme été faite il y a plusieurs mois, et je n'avais pas particulièrement envie de me retapper tout le code, même si je suis conscient qu'il y a énormément à améliorer.
perso je ne mettrai probablement plus la source à jour, ça prendrait trop de temps pour finalement pas grand chose puisqu'aujourd'hui si je devais m'y remettre je recommencerais tout simplement un nouveau forum.
merci de t'être attardé sur le code et les erreurs, et de les avoir en partie énumérées. ça aidera certainement les débutants qui passeront par là et auront je l'espère le courage de lire ton commentaire jusqu'au bout.
monoceros01
Messages postés
432
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006
-
Bon... Je me suis "amusé" à lire ta source. Et j'avoue avoir eu quelques surprises...
Je vais te dire ce que j'en pense :

En général, je commence par lire une source par sa base de données que j'ai aisément trouvée (forum_BDD.txt). Puis, je commence les choses dans l'ordre logique, c'est-à-dire, en théorie, index.php.
Et là, malheure de malheure! Pas de index.php... C'est déplorable, mais passons.
Je me rabat alors sur le beau install.php.
J'ai alors parcouru tout ton script en comprenant assez vite ma foie, que le gros ACCUEIL.php était ce qui, à mon sens, aurait dû s'appeler index.php.

J'ai alors relevé plusieurs mauvais points.

Tout d'abord, commençons soft par le HTML. Le tiens est particulièrement moche :
- Tu ne mets pas de Doctype
- Tu mets des balises en majuscule (chose inutile et même déconseillée pour des raison de compression de données et parce que ce n'est après tout pas très beau)
- Tu utilises des balises (,...) et des attributs (bgcolor, align,...) obsolètes. Maintenant on a les CSS ;)
- Tu ne ferme pas tes balises
, <hr />, et
- dans admin_fac.php tu vas même jusqu'à mettre des attributs entre ' et non entre "

Ensuite, ton système de fichiers :
- je te déconseille personnellement de t'amuser a mettre certains fichiers ou dossiers en majuscules et d'autre en minuscules. Je pense qu'il est plus aisé de ne travailler qu'avec des fichiers écrits en minuscules. Ça évite les erreurs.
- voir un Thumbs.db dans un dossier (IMAGES) je trouve ça pas terrible.
- les images bmp sont d'un format non compressé. Ça serait bien sur internet de diminuer ne serait-ce qu'un peu le poid d'une page.

Maintenant entrons dans le vif du sujet avec le PHP :
- Globalement je te reprocherais de méler traitement php et affichage html. Ça rend le code particulièrement difficile à lire et à entretenir. Je préconise d'utiliser des variables et de tout afficher avec un seul echo.
- Tu utilises des stripslashes et addslashes sans d'abord vérifier si le paramètre de configuration magic_quotes_gpc est à 1 (ce qui voudrait dire que les variables renvoyé par des formulaire sont échappées)
- Tu ouvres tes tags php avec <? au lieu de <?php qui est préférable.
- Tu utilises à plusieurs reprise une boucle while pour afficher les résultats d'une requête qui n'en retournera jamais plus d'un. (accueil.php ligne 97, forum.php ligne 37, post.php ligne 28, profilem.php ligne 13, titre.php ligne 69)
- Tu utilises souvent dans ton admin un javascript de redirection. Mais si l'utilisateur désactive son javascript, il aura accès à toutes les fonctionnalités de l'admin!!! Il est donc préférable d'utiliser header('Location: url ');
- Tu es souvent inconstant sur la récupération des données envoyées par méthode POST ou GET. En effet, tu ne vérifie pas toujours si elles sont définis (isset()).
- Tu as mis un saut de ligne avant les tags d'ouverture dans le fichier connec.php et temp.php
- Tu ne limite pas le nombre total de caractères des champs de tes formulaires, alors que tu le fait dans la base de données... Il faudrait empêcher les dépassements.
- Ton code n'est pas beaucoup commenté.

Regardons certains fichiers plus en détail :
install.php
- Il serait bon d'utiliser les insertions mutiples au lieu de faire plein de requête d'insertions.
- les mots de passe des membres ne sont pas cryptés!!!! C'est très mauvais, ça veut dire que tu peux connaître le mot de passe de tout tes membres. C'est limite de l'atteinte à la vie privée pour moi (bon ok je pousse un peu, mais tu vois l'esprit)
- je verrais plutôt un DATETIME au lieu d'un DATE pour les post (l'horaire du post peut être utile = ) )

accueil.php
- tu mets des if($mid 0) et if($mid 1) un peu de partout. Il serait mieux de tous les regrouper selon moi.

calend.php
- à quoi sert de vérifier la valeur de $jeu, puisque tu lui donne 1 quelques lignes plus tôt?

calendrier.php
- ligne 94 à 99 : il suffit d'utiliser date("t"); pour avoir le nombre de jours du mois.
- je trouve que tu te prend beaucoup la tête pour pas grand chose. Personnellement j'aurais fait :
<?php
include('connec.php');
# Récupération du numéro du premier jour du mois
$first_day = date("N", mktime(0,0,0,$nmois,1,$an));
# Récupération du nombre total de jour dans le mois
$nb_day = date("t");

# Création de la matrice du calendrier
# Un calendrier peut avoir au maxium 42 cases
# (Si le premier jour commence à la dernière case de la première ligne et que le mois à plus de 30 jours,
# ça fait un total de 6 lignes. Donc 6×7... )
for($i=1; $i<=42 $i++)
{
$day_of_month = $i+1-$first_day;
$matrix = ($day_of_month < 1 || $day_of_month > $nb_day) ? $day_of_month : " ";
}

# Récupération de la liste des événements et création d'un tableau (Array) de la forme :
# $event['2005-11-07'] = '
Anniversaire de Paulette
Je me suis gratté la têteC\'est la fête' ;
$query = 'SELECT ev1, ev2, ev3, date FROM calendrier WHERE num_membre=".$mid." ORDER BY date ";
$result = mysql_query($query);
while($data = mysql_fetch_array($result))
{
$event[$data['date']] = ($data['ev1'] !== '') ? '
'.$data['ev1'] : '' ;
$event[$data['date']].= ($data['ev2'] !== '') ? '
'.$data['ev1'] : '' ;
$event[$data['date']].= ($data['ev3'] !== '') ? '
'.$data['ev1'] : '' ;
}

# Création du calendrier
$calendrier = ' Lundi |Mardi |Mercredi |Jeudi |Vendredi |Samedi |Dimanche |';
while(list($key,$val) = each($matrix) )
{
# Début d'une nouvelle ligne si $key = 1,8,15,22 ou 29$calendrier.($key%7 1) ? '----
' : '' ;
# Affichage du numéro du jour, et de(s) événement(s)
$calendrier.= ''.$val.$event[$an.'-'.$mois.'-'.$val].', ';
# Fin d'une ligne si $key = 7, 14, 21 ou 28$calendrier.($key%7 0) ? '' : '' ;
}
$calendrier = '
';

# Affichage du Calendrier
echo($calendrier);
?>

exec.php
- ou est l'intérêt
- tu ne l'a même pas protégé contre les non-admins

modif.php
- tu peux faire toutes tes updates en une seule requête.

posted.php
- ligne 31 et 32 : pour enregistrer la date du jour dans un base de données MySQL, il y a la fonciton NOW() ce qui donne :
$query2="insert into post (Msg, Nb_membre, Nb_titre, Date) VALUES ('".$msg."','".$mid."','".$titre."',NOW());";

Enfin, parlons un peu de la structure de ta base de données
Tout d'abord ton système d'agenda :
Je pense qu'il aurait été plus judicieux de faire une table de ce type :
table calendrier :
- num (PRIMARY KEY)
- num_membre
- evenement
- date
De cette sorte, un membre peut avoir autant d'événements par jours qu'il le souhaite. Et ça évite d'avoir des champs qui ne servent à rien lorsque les membres n'ont pas trois évenements pile à enregistrer.

Sinon je t'avoue être légèrement perplexe sur ta table titre. Mais vu l'heure qu'il est, mes neuronnes n'ont plus le courage d'analyser les requêtes dans lesquelles elle intervient. Mais je pense qu'elle est justifiable :)

En espérant n'avoir pas dit trop de bêtises à cette heure tardive =_=
Bonne nuit!
cs_jadot
Messages postés
21
Date d'inscription
mardi 31 août 2004
Statut
Membre
Dernière intervention
10 septembre 2007
-
Salut,

Tres bonne source.
Je commence a apprendre le php et cette source me sera certainement utile.
Seul petite remarque, quand on ecrit un texte le passage a la ligne ne se fait que si on entre des
.
N'y a t il pas moyen de faire comme sur ce site ? c-a-dire que les utilisateurs du forum ne savent pas necessairement qu'il faut ajouter le caractere de passage a la ligne.
J'explore les codes qui utilisent MySql mais je n'en ai encore trouvé aucun qui le faisait.
Peut-etre que ce n'est pas possible ?
Sinon ca fonctionne super bien chez moi.

Bravo.
scoder
Messages postés
140
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
20 mars 2006
-
salut stephgphy,

merci ça fait plaisir si ça plaît :D
en ce qui concerne le calendrier, à la base il doit s'afficher dès la connexion d'un membre, et s'ouvrir en popup. mais c'est un peu lourd et j'ai apporté quelques modifications à mon code de sorte à ouvrir le calendrier via un lien, ce qui est plus comode.
j'uploaderai le code mis à jour avant la fin de la semaine, dès que j'en aurai le temps ;=)
stephgphy
Messages postés
3
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
2 mai 2005
-
hello,

félicitations pour ce code. le forum fonctionne très bien mais je ne vois nulle part de calendrier. Ou est-il censé apparaitre?
J'ai essayé la solution de astrolab sans plus de succès.
Avez-vous une idée?
scoder
Messages postés
140
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
20 mars 2006
-
ouep merci :)

d'ailleurs je vais d'ici peu mettre la source à jour, j'ai pas eu bcp de temps mais je vais vite attaquer ça
linkin4247
Messages postés
50
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
28 mars 2005
-
Salut, en fait il y a une petite faille pour les profil, si on mets "profile.php?id=3" ben on peut modifier le profil de la personne ayant l'id 3, donc fait une petite correction a ce niveau la :)
scoder
Messages postés
140
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
20 mars 2006
-
Merci astrolab ;)

bizarre que le calendrier ne marchait pas chez toi... :S
enfin si t'as pu le faire fonctionner c cool :)

merci pour la note ça fait plaisir
cs_astrolab
Messages postés
7
Date d'inscription
samedi 27 mars 2004
Statut
Membre
Dernière intervention
30 mai 2004
1 -
Chez moi le calendrier ne marchait pas, j'ai trouvé la solution à la ligne 137 de calendrier.php. Voilà ce que j'ai changé :

........ for ($i=1; $i<=$nbjours; $i++) {


if($i<=9){

$dess="{$an}-{$nmois}-0{$i}";

$result mysql_query("select ev1, ev2, ev3 from calendrier where date'$dess' and num_membre='leloginquevousvoulez");

}else{

$result mysql_query("select ev1, ev2, ev3 from calendrier where date'$dess' and num_membre='$leloginquevousvoulez'");
}

while ($row = mysql_fetch_array($result,MYSQL_NUM)) {...........

Il faut faire pareil pour le mois d'après.
Le problème était que pour $i de 1 à 9 , il n'y a pas de zéro devant.


Merci pour cette source merveilleuse.
je met 8 pour la qualité.

astro
http://roquebergue.free.fr
scoder
Messages postés
140
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
20 mars 2006
-
Merci ;)

Skwal-> effectivement je n'ai pas fait de test sur la page admin mais je vais rapidement corriger ça

expresso630-> j'ai vu que certains fichier avaient été renommés en majuscule et je ne sais pas pourquoi... j'ai utilisé scriptedit pour coder ça mais étant donné que je l'ai fait sur plusieurs ordi dont les configs sont totalement différentes (c'est un projet pour mon bts info gestion), les noms de certains fichiers ont été changés...

Je devrai prochainement faire des mises à jour pour ajouter des modérateurs, des thèmes et si je suis vraiment motivé du BBCode :S
expresso630
Messages postés
2
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
18 mai 2004
-
J'ai remarquer quelle petit problème en testant ton scripts sur une plate-forme Linux, les noms de caractère en majuscule et minuscule ne sont pas pareille sur cette plate-forme. J'ai du renommer chaque fichier en minuscule pour que sa fonctionne. Sinon, ton fichier connec.php a une erreur à la ligne 8, "mysql_connect($host,$user, $pass) or die("impossible de se connecter");//connection à mysql" au lieu de "mysql_connect($host,$user) or die("impossible de se connecter");//connection à mysql" sinon le mot de passe n'est pas pris en compte. Mais bon, a part c'est quelle que petit problème qui mon pris 5 min a coriger, ton scripts est super. Félicitation et continue ;-)
cs_Skwal
Messages postés
17
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
3 juin 2004
-
Joli boulot pour un début de forum ;)
Seul problème c'est qu'il n'y a aucune identification pour l'admin. N'importe qui peut donc aller sur admin.php et modifier ce qu'il veut :/

Bon courage pour la suite :)
scoder
Messages postés
140
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
20 mars 2006
-
j'ai oublié d'ajouter que pour se connecter en tant qu'administrateur le login et le pass sont admin