Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

372 commentaire(s) de webdeb sur des sources sur tout CodeS-SourceS

Le : 31/03/2009 22:58:55
Source : LISTING DU CONTENU D'UN DOSSIER
Je fais la même chose avec beaucoup moins de lignes de code en utilisant glob()...


Le : 13/03/2009 13:18:39
Source : TÉLÉCHARGER LES VIDEOS DE YOUTUBE AVEC PERMALIEN DEPUIS YOUTUBE
@Amteur : ah bon tu penses que c'est légal de voler le contenu d'un site Internet sans en avoir les autorisations ? Cool dans ce cas, je vais pomper le contenu du tien pour faire un site :)


Le : 13/03/2009 13:16:45
Source : UN CALENDRIER SOUS LA FORME D'UN TABLEAU
Je vais être un peu critique bien que globalement le code est pas mal mais il y'a quelques petites choses qui me titillent.

1/ Concevoir ton calendrier dans une classe aurait été beaucoup plus pertinent car actuellement ton code n'est pas véritablement réutilisable... L'idéal serait de faire une classe Calendar et de l'appeler de cette manière :

$calendar = new Calendar($_GET['m'], $_GET['y']);

echo $calendar->render(); // Génère le tableau

// ou

echo $calendar; // si ta classe implémente la méthode __toString()

2/ Pour gérer les dates, préfère les fonctions natives de PHP comme strtotime... Tu t'embêtes à tester quel jour, quel mois et quel année on est pour pouvoir en déduire les suivants et précédents. Pour avoir le mois suivant, je fais simplement :

$timestamp = mktime(0,0,0,date('m'), 1, date('Y')); // premier jour du mois courant
$suivant = date('m', strtotime('+1 month', $timestamp));    // numéro du mois suivant

Encapsule tout ça dans une classe en sortant les $_GET à l'extérieur de la classe bien sûr. Au final ce sera beaucoup plus réutilisable que maintenant mais aussi testable unitairement avec PHPUnit ou Lime ;)

++



Le : 13/03/2009 12:51:20
Source : TÉLÉCHARGER LES VIDEOS DE YOUTUBE AVEC PERMALIEN DEPUIS YOUTUBE
@CodeFalse : la source en elle même. Elle permet de réaliser une opération illégale.


Le : 13/03/2009 09:37:11
Source : TÉLÉCHARGER LES VIDEOS DE YOUTUBE AVEC PERMALIEN DEPUIS YOUTUBE
Ce n'est pas très légal tout ça...


Le : 27/02/2009 16:25:36
Source : SERSESSIONS > CLASS PHP5 POUR GERER LES SESSIONS SIMPLEMENT
Je n'ai pas envie de partir dans un troll mais je vais revenir sur quelques points pour clôturer mes remarques. Je n'ai rien contre le fait qu'il partage ses sources mais le problème de Codes Sources c'est que la plupart des codes déposés ici sont très mauvais. Sur 10 codes déposés, il doit à peine y'en avoir un qui tient la route. Donc, à force de voir des codes médiocres, on ne peut s'empêcher de critiquer et parfois de descendre les sources (et leurs auteurs) pour leur montrer la mauvaise qualité de leur code. Je ne critique pas pour le plaisir de critiquer. J'essaie un tant soit peu d'être constructif et de justifier mes remarques, parfois pas toujours...

Quant à symfony (note que ça s'écrit avec un F et non PH !!!), je rigole de ta remarque pas véritablement justifiée. La chasse aux millisecondes ça ne sert strictement à rien, sauf si tu t'appelles Yahoo, Google ou Amazon. Et encore, ces derniers sites ont d'excellents temps de réponse car ils ont d'une part l'argent pour se payer les serveurs qui vont bien mais surtout car les optimisations sont réalisées côté client (optimisation du temps de chargement des pages côté navigateur). Donc on se moque de gagner 5 ou 10 ms sur un serveur lorsque l'on travaille avec un framework orienté objet. Le but d'un framework OO comme symfony ou Zend Framework, c'est d'apporter une structure cohérente et solide pour simplifier, industrialiser et professionnaliser les développements dans le but de les rendre plus pérennes et plus maintenables. D'autant plus que lorsque tu utilises ce genre d'outils, tu as généralement le serveur qui va bien derrière avec au minimum un cache d'opcodes. Si tu veux des ultra hautes performances, alors dans ce cas, tu commences par installer ton serveur web (Apache ou LightHTTPD par exemple) configuré uniquement pour tes besoins (cad que tu lui dégages toutes les lib dont ton projet n'a pas besoin), tu fais de même pour PHP. Tu codes ensuite entièrement en procédural, tu mets du cache de partout, tu optimises côté client (réduction des js et css, optimisation du html, compression gzip...), tu fais de jolis indexes dans ta BDD, tu crées des vues. Ok tu seras plus performant (ou pas !) mais ton projet deviendra très certainement laborieux à faire maintenir et à pérenniser. Sans parler du budget conséquent que ça nécessite !!! C'est bien pour cette raison que Google, Yahoo ou Amazon peuvent se le permettre. A titre d'information, Amazon perd 1% de chiffre d'affaire par jour si les temps de réponse de ses pages augmentent de quelques pouillèmes de millisecondes. Mais mis à part eux, je pense pas qu'il soit véritablement nécessaire de se casser le cul pour 5 ms, sauf si le client est prêt à sortir quelques gros billets. Mais ça, ça se négocie. L'approche pragmatique est bien souvent la meilleure ;)

++

PS : symfony 1.3 et symfony 2.0 seront bien plus performants que les versions actuelles. Mais sache que ZF, Jelix, CakePHP ou n'importe quel autre framework ne sont guère plus performants.


Le : 27/02/2009 00:27:20
Source : SERSESSIONS > CLASS PHP5 POUR GERER LES SESSIONS SIMPLEMENT
@Akhénathon : je ne dis pas que l'exemple que je donne est celui qu'il faut suivre, je donne ni plus ni moins qu'une piste de réflexion. Et pour ta gouverne, je sais très bien ce qu'est une CSRF.

Concernant l'indentation et l'anglais, ça a beau être du chipottage pour toi, mais ça ne l'est pas pour moi pour des raisons évidentes. Savoir indenter son code et respecter des conventions de codage reconnues est selon moi la première chose à avoir en tête lorsque l'on développe. En effet, on développe rarement que pour soi-même. Quand on développe en milieu professionnel dans une équipe ou bien lorsque l'on décide de mettre sa source à disposition du public, c'est la moindre des choses de rendre cette dernière lisible et compréhensible. Et bien sûr, cela passe par l'indentation, le choix des noms des méthodes et des classes mais aussi des commentaires (PHPDoc si possible). Quand on lit une source bâtie sur ces quelques règles élémentaires, ça donne déjà une bonne impression sur le travail du développeur et sur son niveau de compétence. Je travaille chez Sensio, la société qui édite le framework professionel open-source symfony. Clairement, on ne verra jamais passer ce genre de code dans nos projets !

Concernant les namespaces, je ne vois pas en quoi ce n'est pas optimisé. Je serai curieux de connaître l'argument qui te faire dire ça... Un tableau à 2 dimensions n'est pas moins performant qu'un tableau à une dimension. Bien que PHP permette de stocker des objets en session, ce n'est pas du tout une bonne pratique pour des raisons de performances et de place. Il vaut mieux s'arranger pour stocker une représentation de l'objet sous forme d'un tableau sérialisé.

Ensuite, ta remarque sur les performances du calcul de la salt et d'un jeton anti CSRF est totalement invalide. Calculer un hash et une valeur aléatoire, c'est peanut comme temps de traitement. Il faut arrêter avec la performance. Quand on veut travailler avec des objets et de la sécurité, on sait pertinemment que ça va coûter quelques pouillièmes de micro secondes supplémentaires de temps CPU. Je travaille quotidiennement avec symfony, framework entièrement OO et intégrant toute une panoplie de traitement pour sécuriser l'application développée contre les XSS et CSRF. Oui, clairement les performances ne sont pas les mêmes qu'avec une appli procédurale. Mais c'est normal, on fait de l'objet et de la sécurité. Et au final, les serveurs tiennent très bien la charge et délivrent leurs pages très bien. Il n'y a qu'à voir Dailymotion ou Yahoo pour s'en convaincre qui utilise symfony. Donc la notion de performance ça ne veut rien dire en développement web. Et sachant qu'acheter un serveur coûtera toujours moins cher qu'embaucher un développeur pour optimiser l'application, on se moque de gagner 5 ms dans un programme PHP.

Je reviens sur ta remarque concernant le hacker et la viabilité du jeton de protection. Certes les fichiers de session sont présents sur le serveur. Et ? En quoi le hacker pourra-t-il les lire ? La seule manière pour lui d'avoir accès à ces fichiers est de s'introduire physiquement sur la machine ou bien d'y introduire un script malveillant (par le biais un d'un upload non sécurisé par exemple). Sauf que s'il arrive à s'introduire sur le serveur, c'est que la sécurité de l'application est vraiment merdique ! Pour ta gouverne, configurer le répertoire de stockage des sessions fait également partie de la sécurité des sessions. Ca commence par reconfigurer manuellement le répertoire de stockage des sessions qui est /tmp par défaut. Dans le cas d'un serveur mutualisé, on prend aussi garde à ne pas écrire les fichiers de session de tous les sites hébergés dans le même répertoire. Chaque site doit avoir son dossier de sessions, hermétiquement clos et inaccessible par les autres.

Son système de session est très loin d'être performant et d'être évolutif. En effet, il ne permet que de "gérer" (c'est un bien grand mot) les sessions natives de PHP. Mais si j'ai envie de gérer mes sessions dans une base de données par exemple sans avoir à toucher l'implémentation de mon code métier. Comment je fais avec son code ? Bah on ne fait rien, on est grillé. On ne peut pas changer ou faire évoluer efficacement le gestionnaire de sessions.

Bref, ma note n'est pas injustifiée et je la maintiens. Cette classe est clairement "inutilisable" dans un environnement professionnel.

++

Hugo.


Le : 26/02/2009 21:23:48
Source : SERSESSIONS > CLASS PHP5 POUR GERER LES SESSIONS SIMPLEMENT
Et je note 4/10 au passage.


Le : 26/02/2009 21:23:07
Source : SERSESSIONS > CLASS PHP5 POUR GERER LES SESSIONS SIMPLEMENT
Dans mon exemple $salt c'est $_SESSION['salt'] ;)


Le : 26/02/2009 21:22:26
Source : SERSESSIONS > CLASS PHP5 POUR GERER LES SESSIONS SIMPLEMENT
Mwai ta source est loin d'être au top...

1/ Les constantes de configuration n'ont rien à faire à l'extérieur de ta classe. A la rigueur tu peux utiliser des variables statiques ou bien simplement des propriétés de la classe. Tu peux aussi fournir un tableau au constructeur de la classe qui va initialiser ta session.

2/ L'indentation est complètement déguinglée... C'est illisible !

3/ Tu fais un self::Securise() alors que ta méthode Securise() n'est pas déclarée statique. Tu dois faire un $this->Securise() dans ce cas.

4/ Les noms de classes et de méthodes en français, c'est loin d'être super. Ca limite grandement la diffusion et l'utilisation de ton code au plus grand nombre.

5/ Il serait bien de pouvoir setter les valeurs dans des namespaces comme le font certains framework. Par exemple :

public function setAttribute($name, $value, $ns = '/user/session')
{
  $_SESSION[$ns][$name] = $value;
}

6/ Il manque des méthodes utiles du type hasAttribute()

7/ En PHP 5, le destructeur c'est __destruct()

8/ Ta sécurité anti CSRF n'est pas terrible. Il faudrait plutôt sauver dans la session le hash md5 ou sha1 d'une chaîne. Par exemple :

$_SESSION['salt'] = md5(session_id().rand(0,9999999);
$_SESSION['_csrf_token'] = sha1($_SERVER['HTTP_USER_AGENT'].$salt.$_SESSION['REMOTE_ADDR']);

A chaque nouvelle session tu contrôles le _csrf_token grâce à la salt connue. Si ce n'est pas bon tu jettes une EXCEPTION et si elle est juste, tu régénères un nouveau token pour la page courante.

++





Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,560 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.