FORUM PERSO EN PHP

Utilisateur anonyme - 11 juil. 2011 à 11:52
David78390 Messages postés 197 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 10 juillet 2011 - 14 févr. 2013 à 21:47
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/53370-forum-perso-en-php

David78390 Messages postés 197 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 10 juillet 2011
14 févr. 2013 à 21:47
il te dit tout simplement que la fonction est déprécié depuis php5.3,
un tour sur google ... il vaut mieux utiliser $_SESSION['xxx']
Deprecated: Function session_register() is deprecated in C:\wamp\www\forum\php\forumPerso\index.php on line 24

line 24 = session_register("SESSION"); //et les droits de chacun
David78390 Messages postés 197 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 10 juillet 2011
21 juil. 2011 à 23:41
Pas de soucis stekendak01 .
Si tu bosse en local avec easy php, y'a aucun soucis, ca doit fonctionner.
0- tu decompacte le fichier zip dans le repertoire WWW de easyphp (le repertoire avec tout les source s'appele forumPerso, si tu le modifie change la ligne 25)
1- tu crés une base de donné avec easyphp (tant qu'à faire nome la forumPerso) et tu y importes le fichier BaseDeDonnee.txt ( si tu n'as pas appelé la BDD forumPerso, tu modifies la ligne 21 du fichier index.php)
3- si dans easyphp tu as modifié la config (adresse, compte admin ou le mot de passe) , tu adapte alors la ligne 20 de index.php

Voila @+
stekendak01 Messages postés 9 Date d'inscription mercredi 1 juin 2011 Statut Membre Dernière intervention 31 mars 2013
21 juil. 2011 à 17:06
Bonsoir. Veuillez ne pas vous emportez à la lecture de ceci ms c'est que je suis plus que bleu dans tout ceci.
J'essai d'utiliser votre forum sans succès. je me perds un peu dans les directives à suivre. jusque ici je n'arrive pas à voir le forum tel que présenté sur l'image que vous en avez faite
vous disiez:
Dans le fichier index.php modifier,
- ligne 20/21 les variables de connection,
- ligne 25/26 la variable $wwwroot en fonction de votre config

J'aimerais savoir quelles devrais être les variables et pour ces ligne pour moi qui travaille en local sur mon pc

De plus le kit de connection qui doit s'afficher pr que je me log ne vient pas. comment dois-je faire?

MERCI d'avance
David78390 Messages postés 197 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 10 juillet 2011
18 juil. 2011 à 22:40
@ emilia123
Pour le bout de code:
index.php?m=Forum&l=forum.php&type=supp_sujet&idsuj=1
Merci de l'info. En fait je partais du principe que seul l'admin pouvait voir ce bout de code, mais en effet, ca peut etre bien risqué.
Il faut que je valide ce petit bout par une vérification des droits au prélable...

Pour le
$tmp=$_REQUEST['id_sujet'];
$int_sujet = mysql_query("SELECT * FROM forumperso_sujet WHERE id_sujet='$tmp' ORDER BY id_sujet ");
Le probléme, c'est que je ne savais pas comment faire pour placer le resultat d'une requete préalable dans une nouvelle requete (suis-je assez clair??)

@ bj33
<< (une foi de plus ils avaient le monopole et se sont assi sur pas mal de principe basique du code)
Malheureusement oui, j'ai fait comme eux, car certainnes choses ne passent pas sinon sous IE ;)
Les global sont plutot pratique, et en effet il faudrait que je vois pour les virrer.
pour les icones en js, le tout est en externe, mais pour les créations de sujets/post il est en double afin de permettre le choix des ico à inserer.
Pour les echo '...' ou echo "...", pour moi ca revient au même. Après je prends l'un ou l'autre en fonction de ce que je met dans la chaine. Par contre je reconnais que certains sont sans doute inutile.

<<Quant à l'utilité d'un forum de ce type, je ne juge pas mais je pense quand même que c'est plutôt sans intêret quand on voit l'offre actuelle
Je te l'accorde tout à fait, mon but comme tu l'as deviné était plus de mettre en application du php.
bj33 Messages postés 145 Date d'inscription vendredi 13 juin 2003 Statut Membre Dernière intervention 1 mai 2012
18 juil. 2011 à 13:55
Salut,

<< (une foi de plus ils avaient le monopole et se sont assi sur pas mal de principe basique du code)

J'adore ce type de phrase! J'ai quand même l'impression que tu as fait la même chose...

Pas de constante pour le root. Evite ces vilains global. On peut faire sans. Code sql delete/update sans limit. Pas de mysql_real_escape_string. Pas de htmlentitie sur le php_self. Balises moitié en majuscule, moitié en minuscule. js tantôt en fichier externe tantôt en direct dans le html. Code js des icones en double. dans un fichier externe tu l'inclus une fois et c'est bon. Et repense tes hidden...

<< echo "<td width="25%">";

manque de maitrise

echo '<td width="25%">';

C'est mieux. Non? Et puis si tu revois tout tes codes echo, tu gagneras quelques ms. Pour la concatenation, c'est une question de goût, certes, mais je préfére les points. Moins de risques d'erreurs à long terme.

Côté html, du transitionel. Vraiment là, c'est pas possible. Ce choix n'est pas/plus justifié. Mais bon, admettons. Je ne peux que te conseiller de voir du côté des design patterns et pas seulement le MVC. Bref, encore du boulôt pour être acceptable. Quant à l'utilité d'un forum de ce type, je ne juge pas mais je pense quand même que c'est plutôt sans intêret quand on voit l'offre actuelle. Maintenant si ce biais te permets de te former au codage php, pourquoi pas. Mais ce n'est pas utilisable tel que et à fortiori pour un débutant. De plus il est dangeureux. Et en passant, aujourd'hui, php en est à sa version 5.4. Profites, c'est gratuit.

<< on ce retrouve avec des gars qui prétende détécter des pixels mort de façon "logicielle"

Hé oui! C'est parfaitement juste. +1. Et sur phpcs c'est pire.
Utilisateur anonyme
18 juil. 2011 à 09:39
@David: Ouaip, le site est fonctionne bien. C'est plutot pas mal. Après, faut voir le php qui est derrière tous ça :) Mais ça ne me regarde pas :p
cs_emilia123 Messages postés 122 Date d'inscription mercredi 19 décembre 2001 Statut Membre Dernière intervention 5 janvier 2009
18 juil. 2011 à 08:51
il y a une coquille dans ce que j'ai marqué (erreur de " ):
mysql_query('SELECT * FROM forumperso_sujet WHERE id_sujet='.$tmp.' ORDER BY id_sujet ')
cs_emilia123 Messages postés 122 Date d'inscription mercredi 19 décembre 2001 Statut Membre Dernière intervention 5 janvier 2009
18 juil. 2011 à 08:46
Bonjour,

Je vais la faire courte, car je n'ai pas beaucoup de temps :

Il ne faut JAMAIS faire ca :
---------------------------------------
$tmp=$_REQUEST['id_sujet'];
$int_sujet = mysql_query("SELECT * FROM forumperso_sujet WHERE id_sujet='$tmp' ORDER BY id_sujet ");
---------------------------------------
On ne doit JAMAIS utiliser une variable utilisateur directement dans une requete SQL. En faisant cela, tu donnes la possibilité à un attaquant de récupérer toutes les informations qu'il veut dans ta base.
- Si le champ est un numérique, TOUJOURS utiliser intval(...)
- Si le champ est du texte utiliser (en fonction de la situation):
> à minima htmlspecialchars(...)
> addslashes(...)
> mysql_real_escape_string(...) (en cas d'utilisation de mysql)

idem :
---------------------------------------
$num_post=$post['id_post'];$post_a_virer mysql_query("DELETE FROM forumperso_post WHERE id_post'$num_post'");
---------------------------------------
si dans id_post je passe : "1' or '1'='1" je peux vider la table en question.


Du pareil au meme:
Il ne faut JAMAIS faire ca :
---------------------------------------
echo $_REQUEST['sujet'];
---------------------------------------
Cela permet à un attaquant d'afficher ce qu'il veut dans la page comme par exemple ajouter du javascript qui va rediriger sur un site malveillant, ou récupérer des informations de l'internaute.
Il faut, à minima, utiliser la fonction "htmlspecialchars(...)" pour qu'aucun caractère ne soit interprétable par le navigateur de l'internaute..

Conseil : il vaut mieux, pour une question de relecture du code, faire cela
mysql_query('SELECT * FROM forumperso_sujet WHERE id_sujet=".$tmp.' ORDER BY id_sujet ')
1) ca devrait etre plus rapide en execution
2) tu repères rapidement qu'il y a une variable au milieu de ta chaine de caractère.

ca c'était pour du générique sur le code PHP.

Apres une lecture rapidement en diagonale, je me demande ce qui m'empecherait, techniquement, de supprimer tous les posts du forum?
si j'appelle manuellement l'url suivante je vide le sujet 1, sans aucune vérification pour savoir si j'ai les droits.
---------------------------------------
index.php?m=Forum&l=forum.php&type=supp_sujet&idsuj=1
---------------------------------------
Au niveau sécurité, il faut imaginer que l'attaquant possède le code source et qu'il essaye de faire tout ce qui est possible. Ici il est possible de tout supprimer, sans meme utiliser de faille SQL/PHP, car le script ne vérifie pas si l'utilisateur est un admin avant de supprimer.

Je pense que ces corrections vont te donner de quoi t'occuper pendant quelques jours :)

Bonne continuation.

EM.
David78390 Messages postés 197 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 10 juillet 2011
17 juil. 2011 à 20:59
Désolé de ne pas avoir réagit plus tot, mais je n'avais pas de ternet pdt le pont.

Merci pour vos conseils les gars, mais ne vous faites pas une guerre via ma source ;).
Au contraire, je suis prêt a prendre tout les conseils d'améliorations possibles.


Pour en revenir à la source, en fait j'ai fait le site de mon taff; car tout le monde critiquais le site réaliser par une boite externe, mais personne ne voulait s'y coller sérieusement.
Certes je suis parti d'une base existante, et c'est a ce moment que j'ai du me mettre au php.
Je viens de rentrer donc je regarderais vous conseils d'evolutions via les normes cités dés demain.
P.S: je suis à la base de formation electronique +1 an de formation en info indus, (donc c'est clair que coté "webmastoring" ;D ce n'est pas mon domaine originel)

Coté sécurité, c'est clair que la source mise ici est trés limite.
Mais ce que j'ais mis ici est le plus simple pour pouvoir fonctionner directement via un easyPHP.
En général, j'adapte ce script a la demande des mecs, et je masque bcp plus les liasons à la BDD. Par contre je pense (enfin j'espere) que coté taff, j'ai pas trop mal assuré ( @ Romano58 merci de me le confirmer: www.didalab.fr )


Merci les gars ;)
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
15 juil. 2011 à 11:25
@David78390 dit : En effet j'ai commencé l'html y'a une dizaine d'année et enfin le PHP depuis 2/3 ans.

@Romano58,

Donc, si aujourd'hui, il code encore, j'ai supposé qu'il travaille comme intégrateur.
Je suis parti sur le principe de respecté sont travail fait, il y a plusieurs années.
Et bien sur l'influencé à changer.
Le dernier post de David78390 montre bien qu'il en est conscient et que les termes qu'il à utilisé sont forcément d'une personne initié en HTML.
-----------

@Romano58 : Je ne réagirais plus a ce thread.

Si tu veux.
Utilisateur anonyme
15 juil. 2011 à 10:45
@STAY: je te cite: "Comme le code en procédural est très bien maitrisé et que par rapport à la DTD, l'HTML est respecté."

Ne lui dis pas que son code procédural est bien, et encore moins qu'il bosse peut être en milieu pro alors! Excuse moi, mais tu met ce code en prod et le jour ou quelqu'un le lis bah tu te prend une soufflante. Je vois pas en quoi mon commentaire du 13/07 n'étais pas constructif. Je vais pas lui dire que c'est un super bon code juste pour lui faire plaisir. Je lui ai expliqué le pourquoi du comment, j'ai pas violé un membre de ça famille, et je ne l'ai pas sauvagement insulté à ce que je sache?

A force de sortir votre science et de faire les super savants, de pas dire au gens quand leurs codent sont pas térrible (je ne vois pas en quoi c'est dégradent), on ce retrouve avec des gars qui prétende détécter des pixels mort de façon "logicielle", comme je l'ai déjà vu sur vbfrance, non mais merci quoi.

Je ne réagirais plus a ce thread.
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
15 juil. 2011 à 10:24
Je vais me répéter mais,
Les conseils donnés, doivent être à prendre ou à laisser.
Sans obligation direct, de plus, d'autres personnes peuvent être intéresser et prendre tes conseils.
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
15 juil. 2011 à 10:18
@Romano58, Ouai, MDR, lol.
C'est trop de la bal ce forum.
--------------------

Je te signal, par rapport à ton premier post, j'ai dit :
Très bon conseil @Romano58.

Et de plus, j'ai même donnée un exemple PHPBB.

Donc, je ne comprend pas cette phrase : "Si vous voulez coder de la merde, c'est votre probléme après tout".
Tu peux expliquer ?
Utilisateur anonyme
15 juil. 2011 à 10:08
De plus, si je rend un source comme ça en milieu pro, je crois que je me fais jeter de ma boîte sans sommation.
Utilisateur anonyme
15 juil. 2011 à 10:05
LOL. C'étais pas méchant ce que je disais. Ca me fais marrer ce forum. Si vous voulez coder de la merde, c'est votre probléme après tout.

Là, c'étais pas gentil. bye
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
14 juil. 2011 à 10:16
@Romano58, c'est dommage, tu es parti avec un bon fond et par la suite, tu pètes un câble.
On ne dit pas, tu dois mais, tu devrais :)
"Et bonjour le bordel", moi avec une phrase pareil, j'ai même plus envie de voir le coté positif de ton post.

La motivation que tu as à bien coder est bonne.
Mais pour la partager. Je crois que tu dois changer quelque chose.

Tu ne dois pas oublier que @David78390 à 30 ans et qu'il est possible qu'il travaille dans le domaine du web.
De plus cette explication à son dernier post est cohérente et montre bien qu'il maitrise une conversation pro.
Pour moi, il est intégrateur et il touche au PHP. Mais je peux me tromper.
Utilisateur anonyme
13 juil. 2011 à 18:01
Edit: Ok, tu n'utilise pas qu'un seul script, autant pour moi :) (Mais ça ne change en rien ce que je dis ci-dessus)
Utilisateur anonyme
13 juil. 2011 à 17:59
Je n'ose même pas imaginer les failles de sécurités qu'il y a dans ce code. Et bonjour le bordel pour changer ne serai-ce qu'un seul élément de la page par la suite... Je pense VRAIMENT que l'essentiel, c'est de passer par un modèle MVC (ou autre) pour écrire une application en PHP (J'ai bien dis une application, pas un script bidon qui affiche l'heure). On ne va pas être pointilleux sur le doctype du document (ça date..), et la programmation procédurale... ouai, pourquoi pas, mais surement pas dans ces conditions (UN seul script pour gérer un application de gestion d'un forum... faut pas déconner!). En php on peux séparer les fichiers, faire des includes, etc.

@David78390:
Tu a certainement passer beaucoup de temps à écrire ce script, mais je ne me cacherais pas pour dire que c'est vraiment pas un beau code (Et je suis moi même loin d'être un codeur talentueux). Va chercher des tutos sur la POO en php et sur le modèle MVC, tu a tout à y gagner. Rien ne t'oblige à te servir de ces méthodes par la suite, mais au moins, tu évoluera, et tu gagnera en compétences... tu verra d'autres façon de faire avec le même langage.
En faite, ce que je souhaite exprimer, c'est qu'un code qui fonctionne, n'est pas forcément "beau" ni "propre" ni "fonctionnel".

Bon courage, et ne t'indigne pas a cause de mes propos ;) Bonne continuation.
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
13 juil. 2011 à 10:37
Oui, je ne m'étais pas trompé.
Comme le code en procédural est très bien maitrisé et que par rapport à la DTD, l'HTML est respecté.
C'est pour cela que j'ai été directement à l'essentiel pour te critiqué.

Mais tu connais déjà les réponses.
David78390 Messages postés 197 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 10 juillet 2011
12 juil. 2011 à 23:39
Hola, la tu commene à me perdre ;)

En effet j'ai commencé l'html y'a une dizaine d'année,
puis assez rapidement au JS pour faire qques anim,
et enfin le PHP depuis 2/3 ans.
Deja avec l'arrivé de FirFox, à l'époque j'ai compris qu'il y avait plein de choses qui marchaient mais qui en réalité étaient de la bidouille made in microsoft (une foi de plus ils avaient le monopole et se sont assi sur pas mal de principe basique du code)
Avec les WC3, ca a été la remise en cause de pas mal de mes codes (remise en forme des balises), mais malheureusement, j'avoue etre resté un auto didacte et en me demerdant à faire fonctionner mes codes par mes propres moyen, du coup y'a effectivement pas mal de choses qui ne sont pas top optimisées
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
12 juil. 2011 à 22:20
Ce que tu as créé, c'est bien, mais l'informatique évolue.

Dépasser ses limites dans ses connaissances en informatique.
La difficulté chez un autodidacte, c'est d’ouvrir sont esprit sur quelque chose de différents et de recommencer à zéro.
Quand tu l'as fait une première fois, recommencer pour une nouveau langage ou une application est un plaisir.
Il faut avoir le temps.
C'est pourquoi, aujourd'hui, j'ai aucune grande préférences dans les méthodes de travailles pour évoluer sans grande difficulté car tout m’intéresse.

Coder avec un Framework Zend ou PHPBB.
J'ai même combiné Smarty à Zend Framework.
C'est cool.

Si tu as des questions n'hésites pas :)
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
12 juil. 2011 à 11:09
@David78390:

Sinon, sur ton application, le code HTML n'est pas top.
Ta DOCTYPE, HTML 4.0 Transitional//EN">
Tu devrais passer en : XHTML 1.0 Transitional//EN", ...
Bientôt, tout les navigateurs supporteront l'HTML5, qui sera une évolution pour le CSS3, les tag HTML auront une nomenclature logique et le flash disparu.
Utilisateur anonyme
12 juil. 2011 à 09:51
@David78390:

Concrétement, l'utilisation d'un moteur de template et du modele MVC te permet:

1- D'avoir un (ou plusieurs) "templates" de page, ce que l'on appelle la vue, que tu écris comme n'importe quel page html, avec juste une petite syntaxe à rajouter pour remplacer des mots clef par des données.

2- D'avoir plusieurs fichier PHP, car une application php ne devrais pas ce résumer à un seul et unique script. Dans chacun de ces fichiers php tu fais le traitement voulu (ce sont des controleurs), qui à la fin des traitement irons chercher le modele de page (petit 1-) et afficherons le resultats sur la page de ton navigateur.

3- Un sous ensemble d'objet (le modele), qui s'occupe des données à enregistrer/récupérer dans la base. Souvent ce sont un sous ensemble de classe reflétant l'architecture de ta base de données (tables, relations, etc.). C'est ici en quelques sortes que tu a des sous fonctions qui traiterons les entrée/sortie de ta base.

Je te conseil vraiment d'aller chercher quelques tutoriaux sur internet. A propos du modele MVC, ainsi que sur la programmation orienté objets en PHP.

Bonne continuation.
David78390 Messages postés 197 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 10 juillet 2011
11 juil. 2011 à 23:54
Si je comprend bien,
l'idée est d'avoir 1 fichier de code purement html,
qui appelle des fonctions php qui sont dans 1 autre fichier
(voir plusieurs autres fichiers)

Si c'est bien ca, le soucis c'est que l'on se retrouve des sous programmes qui font tous des requetes, mais dans des bases differentes et avec des reours differents, donc une multitude de sous prog php?

Ou j'ai pas bien suivit qque choses ???
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
11 juil. 2011 à 23:01
Très bon conseil @Romano58.

@David78390, (initié, il y a 6 ans voir plus) PHPBB fonctionne en MVC, il y a un moteur de Template pour séparer le modèle de la vue.

Exemple :
---------

Le controller :
---------------
/**
* Assigne les différentes URL
*
* @author Stay
* @access private
* @param array $data
* @return void
*/
private function assignDataRows($data)
{
for($i=0;$i<count($data);$i++) {
$this->o_template->assign_block_vars('optionsRows', array(
"id" => $data[$i]["page_id"],
"url" => utf8_encode($data[$i]["page_url"])
));
}
}

La view :
---------
<select id="translation-pages" name="translation[pages]">
<option value="null">aucun</option>
<!-- BEGIN optionsRows-->
<option value="{optionsRows.id}">{optionsRows.url}</option>
<!-- END optionsRows-->
</select>

En paramètre dans la fonction assignDataRows du controller, (array) $data est un retour d'une requête dans un modèle.
Tu pourras constater que dans la view, optionsRows est générique.
C'est très puissant.

Autre exemple : http://wiki.phpbb.com/Template.assign_block_vars
David78390 Messages postés 197 Date d'inscription jeudi 27 avril 2006 Statut Membre Dernière intervention 10 juillet 2011
11 juil. 2011 à 20:18
Pour le initié, autant pour moi, il y a eu un miss-clic,
c'est vrai que c'est plus débutant/confirmé.

Romano58 qu'entends-tu par des template?
Je pensais avoir codé ca assez proprement via des sous fonction, non?
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
11 juil. 2011 à 14:04
Bonjour à tous,

@David78390, pourquoi tu as mis "Niveau : Initié" ?
Utilisateur anonyme
11 juil. 2011 à 11:52
Bonjour! Je vois que vous avez beaucoup travaillé la dessus, et je ne veux pas troller pour vous décourager. Seulement, pourquoi ne pas utiliser des templates pour séparer le code HTML du code PHP? Il s'agit d'un script qui va devenir de plus en plus complet (frontend, backend, gestion des utilisateurs), le maintenir va devenir une vrai galére.

Le moteur de template PHPBB est vraiment très simple d'utilisation, et en plus, c'est étudié pour faire des forums ^^ (Mais bon, je l'utilise également pour construire de petits site).

Bon courage pour la suite.
Rejoignez-nous