Forum style phpbb et agenda personnalisé

Soyez le premier à donner votre avis sur cette source.

Vue 24 893 fois - Téléchargée 5 128 fois

Description

Voilà un petit forum inspiré de phpBB avec certaines fonctionnalités qui lui sont communes. Il y a en plus un agenda personnalisé pour chaque membre, lui permettant d'enregistrer 3 évènements max par jour et affichant le mois en cours et le mois suivant.

Source / Exemple :


/*
tout est dans le zip

  • /

Conclusion :


Il y a bien sûr encore des modifs à faire mais je pense qu'à ce stade la source est présentable.
les requêtes de création de la base de données sont ds le fichier forum_BDD.txt
il faut modifier le fichier connec.php pour configurer la connexion à la base mysql.

ps : j'attends vos réactions mais ne soyez pas trop trash svp je ne pratique que depuis 2 mois 1/2 ;-)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

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.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.