Bonnes pratiques php

Bonnes pratiques php - PHP - Programmation

Marsh Posté le 07-06-2015 à 09:05:39    

:hello:  
 
Je fais pas mal de Java, et je me suis mis au PHP pour un mini site perso, ou il est possible de voter pour une liste de chansons (oui je sais c'est bidon, mais je voulais me mettre au PHP :) )
 
J'ai mis mon code sur github ( https://github.com/dinow/musicdoodle )
 
Est-ce que quelqu'un aurait 5' pour me dire si c'est correct ce que je fais, voir si je n'ai pas de grosses conneries de noob :o ?
 
surtout la partie "backend":
 
https://github.com/dinow/musicdoodle
 
Les connexions à la bdd me semblent pas top, c'est mieux de connecter au début directement
 

Code :
  1. <?php
  2. if (is_ajax()) {
  3.        //connecter ici ?
  4.     if ($_POST['action']=='voteForSong') {
  5.         voteForSong($_POST['songId']);
  6.     }else if ($_POST['action']=='actualize') {
  7.         actualizeDB();
  8.     }else if ($_POST['action']=='getArtistList') {
  9.         getArtistList();
  10.     }else if ($_POST['action']=='fillSongList') {
  11.         fillSongList($_POST['artistId']);
  12.     }
  13.        //Déconnecter ici ?
  14. }


 
ou de laisser dans chaque fonction comme j'ai fait ?
 
Merci d'avance :jap:


---------------
.
Reply

Marsh Posté le 07-06-2015 à 09:05:39   

Reply

Marsh Posté le 07-06-2015 à 17:25:08    

Il vaut mieux connecter "réellement" lorsque l'on a vraiment besoin de la base de données. Par exemple si 50% des rendus de pages ne nécessitent pas de bdd, on économise 50% de connexion à la base.
Dans tous les cas, il vaut mieux ne faire la connexion qu'à la demande.  
 
Par-contre, c'est un poil plus compliqué : il faut le faire bien, et ne connecter qu'une seule fois dans l’exécution du script. En programmation non-objet, je conseillerais de de manipuler carrément la connexion en global plutôt que de la trimbaler en argument de fonction. Mais le plus propre est de programmer en objet, et de réunir les manipulations de bdd au sein d'un même objet qui contient une dépendance à la bdd géré par un objet correctement écrit pour faire ce que l'on veut avec.
 
Et sinon, sauf cas spécifique il n'est pas nécessaire de fermer les connexions à la bdd, php s'en charge lui-même si la connexion n'est pas persistante.

Reply

Marsh Posté le 07-06-2015 à 18:31:58    

Merci :)

 

Je vais voir comment marche le php objet alors :jap:


---------------
.
Reply

Marsh Posté le 08-06-2015 à 11:13:14    

Petite remarque sur ton if/else : un switch aurait été plus approprié ;)
 
Par ailleurs, va falloir apprendre à nettoyer/protéger tout ce qui vient d'un formulaire sous peine de failles XSS ou SQL injection :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 08-06-2015 à 11:16:46    

rufo a écrit :

Petite remarque sur ton if/else : un switch aurait été plus approprié ;)
 
Par ailleurs, va falloir apprendre à nettoyer/protéger tout ce qui vient d'un formulaire sous peine de failles XSS ou SQL injection :o


 
Tu m’intéresse, je pensais qu'avec le prepared statement ca se faisait tout seul :o
 
Si c'est pas le cas, je fais comment ? :)
 
Pour les failles xss je vais me renseigner pour voir ce que c'est :D


---------------
.
Reply

Marsh Posté le 08-06-2015 à 13:35:38    

Le prepared statement est une bonne chose contre le sql injection. Mais en général, on fait aussi du nettoyage de html avec strip_tags() + trim() pour les espaces en début/fin inutiles... + combinaison d'autres fonctions pour se protéger de failles en base64.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed