Archive for the ‘PHP’ Category
PHP : Identification avec MySQL
Un nouveau screencast pour les débutants, sur l’identification et la restriction d’accès à certaines pages avec PHP et MySQL.
Les fichiers sources sont disponibles : Source : Identification PHP MySQL
A noter que j’ai changé une petite chose, l’enregistrement en session se fait dans la classe et non dans identification.php. Je vous laisser regarder les sources ;)
ERRATUM
J’ai parlé tout au long du tuto de MEDIUMINT, mais j’avais en tête SMALLINT. Du coup je rectifie ce que j’ai dit, le MEDIUMINT (5) non signé va nous permettre d’enregistrer jusqu’à 99 999 utilisateurs. Largement suffisant pour nous. Le SMALLINT (5) non signé lui nous permettrait d’enregistrer 65 535 utilisateurs, clairement suffisant aussi pour la plus grande partie des cas. Merci Olivier d’avoir mis le doigt sur cette erreur de ma part ;)
Freelance : le bon tarif journalier
Pour les freelance il est des fois délicat de se situer dans un marché où les prix peuvent fluctuer très rapidement en fonction de l’offre et de la demande. Suite à l’effet de crise le tarif des prestations à baisser au sein des SSII et il n’est pas forcément aisé de se vendre au juste prix. Pour vous aider le site freelance-info.fr vous propose une grille de tarif que je trouve à titre personnel très bien conçue. Vous pouvez y accéder via ce lien : tarifs jour de facturation des freelance. Vous y trouverez non seulement le tarif, mais également la répartition des missions par année d’expérience, et par intermédiaires. De plus pour ceux qui cherche une description précise et concise du poste qu’ils cherchent à pourvoir il y a une description pour chaque métier. Une très bonne chose pour les freelance et en plus c’est gratuit donc c’est encore mieux.
Y a site web et site web voire PHP et PHP
Depuis toujours le métier de développeur web a été plus ou moins méprisé. Ce qui revient souvent dans les conversations c’est les phrases comme « Ah mais donc en fait je peux moi aussi faire mon site web » ou « Ah vous faites pas le contenu, vous faites quoi alors ? ». Je vais donc aujourd’hui un peu éclaircir le sujet et répondre à ces questions qui ne rendent pas hommage à ceux qui travaillent durement pour vous servir.
La première chose à savoir c’est à mon sens que c’est le contenu qui fera le succès d’un site. Et les équipes qui rédigent le contenu des sites sont clairement la clé de cette réussite. Toutefois pour y parvenir il leur faut ce fameux site web, site internet, blog peu importe la forme en fin de compte. Ce qu’il faut comprendre c’est qu’un site web ce n’est pas seulement l’affichage de ces textes et images. C’est aussi tout un système qui permet de gérer ce contenu, mais qui gère également les auteurs, la mise en page, la mise en avant de certains éléments, la possibilité de changer certains éléments, de gérer des sondages, la publication du contenu en fonction des auteurs, encoder de la vidéo en flash et j’en passe. C’est une véritable suite bureautique en ligne.
Comme je viens de vous le montrer un site web ne se limite pas à l’affichage du contenu, outre la gestion des contenus on trouve également des fonctionnalités propre à chaque site, comme comparer des produits, calculer des couts de revient, souscrire à un contrat, répondre à un sondage, donner son avis sur le contenu, imprimer le contenu, publier son propre contenu un tas de fonctionnalités qui ne sont pas simplement de l’affichage de contenu mais qui demande des calculs et de la gestion de droit en fonction des utilisateurs par exemple. C’est toutes ces fonctionnalités qui permettent de faire un site internet.
Ou est ce que je veux en venir ?
C’est assez simple en fait, le métier de développeur web pourrait s’apparenter à celui de pilote de rally ou de chirurgien. En effet, si le web est accessible à tout le monde et qu’il existe des solutions clés en main pour créer son site internet nous sommes loin de ce qu’est notre métier, ou en tout cas ce qu’est le mien. Dans toute profession ou discipline il existe des niveaux. Ainsi ce n’est pas parce qu’on a le permis et qu’on sait conduire qu’on est Sebastien Loeb, de même ce n’est pas parce que l’on sais soigner une plaie ou même que qu’on a son brevet de secouriste qu’on est chirurgien. Et c’est encore plus complexe que ça il y a comptable et expert comptable, médecin et chirurgien, de même on a des intégrateurs, des développeurs et des ingénieurs au sein de notre métier. Et comme vous le savez à poste égal on a encore des différences de niveau entre les individus.
Vous devez commencer à comprendre que finalement faire des sites web ce n’est pas forcément si simple.
Je vais prendre un exemple plus concret, dans ma société (Opal CMS). Nos clients disposent d’un outils de gestion de contenu plus ou moins complet en fonction de leur besoin ça comprend la gestion de leurs documents comme des actualités à des dossiers multipages, la gestion de tous les types de médias, comme les images – avec la possibilité dans la partie administration de rechercher une image directement sur le net et de l’importer de façon transparente -, les fichiers audio, les fichiers vidéos. Pour certains ils ont la possibilité de tout simplement filmer ce qu’ils ont envie et d’envoyer le fichier sur le serveur. Notre outil transforme la vidéo en flash comme sur youtube ou dailymotion. Ils ont un système complet de workflow, c’est à dire de gestion du processus de publication, chaque utilisateur a des droits qui lui permet de signaler si son article est prêt à paraitre, alors qu’un autre utilisateur se chargera de le mettre en ligne. Certains clients ont des demandes particulières comme gérer l’import de flux RSS ou AFP de façon automatisée ou la possibilité de gérer des formules de calcul pour des applications particulières et d’autres la possibilité de gérer leurs commandes et leur stock. Je fais un peu de pub pour illustrer mon propos mais ça vous montre qu’un site internet ne se limite pas à afficher des actualités.On peut désormais utiliser le web pour gérer énormément de chose. Exemple très concret les opérateurs de téléphonie mobile gère la vente des téléphones et la souscription des contrats directement via des applications web.
Autres point important entre ce que monsieur tout le monde peut faire et ce que nous sommes amenées à faire, c’est travailler sur des applications scalable à haute performance. C’est à dire que l’application web est optimisée pour gérer beaucoup de demande, en effet entre un site personnel qui fait 10 visites par jour et des sites comme lemonde qui tourne plutôt autour du million de visites il y a une grosse différence. C’est pour ça que nous mettons en place des solutions performante et scalable, c’est à dire des solutions capable d’évoluer avec la demande qui seront capable d’être réparti sur des dizaines de serveurs de façon transparente pour le client et pour l’utilisateur sans que cela engendre des coûts pharaoniques.
Voila, vous en savez un peu plus sur ce que nous faisons ;) Rendons à César ce qui appartient à César et vive les développeurs et ingénieurs du web qui nous permettent à tous de profiter du contenu de chacun.
Oui une question ?
Pourquoi j’ai pas parlé de Google dans les applications web complexes ?
Je sais pas … :D
Bon surf ;)
Certification PHP5 : les avantages
Voila déjà quelques temps que j’ai obtenu ma certification PHP5 auprès de Zend. Il est temps de faire un petit debriefing de ce que cela m’a apporté et ce que cela peut vous apporter à titre professionnel.
Le premier des avantages est celui vis à vis des recruteurs, et des employeurs qui connaissent vraiment PHP. Vous obtenez une certaine crédibilité quant à vos connaissances sur PHP. Attention cela s’arrêtera là à mon sens, la certification PHP5 est dénuée de toute forme d’analyse ou de modélisation, et c’est bien ces points là qui font la véritable valeur d’un développeur digne de ce nom. Pour faire simple de mon point de vue d’employeur, quand je fais passer des entretiens que ce soit pour un stage ou pour un emploi je fais passer un test qui est un mix de PHP, de MySQL, et d’analyse/conception. Peut importe la forme que ce soit du merise ou de l’UML ça m’est relativement égal la méthode de modélisation qui sera utilisée. Ce qui m’intéresse lors de ces entretiens c’est de voir si la personne est logique dans son raisonnement. Je rajoute d’ailleurs que je me demande si je vais pas mettre un exercice sur le refactoring car j’ai trop souvent vu des fonctions dupliquées ou plus ou moins modifiées ce qui m’agace et qui plus est engendre une baisse de performance des applications, sans parler de la maintenabilité de celui ci.
Ensuite un autre point positif, sauf si vous êtes vraiment un très très grand mordu de PHP et que vous avez développé des applications de toute sorte, vous devriez apprendre quelques trucs dans la doc si vous travaillez correctement. Je pense notamment aux sockets ou aux streams plus ou moins tordu. Vous pourrez aussi découvrir des fonctions de chaines et de tableaux totalement incroyable dont certaines dont je n’ai toujours pas trouvé l’utilité, mais bon ça doit servir.
Dernier point positif, vous êtes régulièrement contacté par différentes compagnie ou chasseur de tête via les pages jaunes de Zend. Il faut faire le tri dans les annonces reçu car certaines ne vont pas du tout correspondre à votre profil, par exemple on m’a proposé un poste de chef de projet en Espagne mais je ne parle pas un mot d’espagnol, il reste l’anglais mais bon c’est encore un autre débat. En revanche je n’ai pas reçu ou très peu d’offres destiné à des profils junior, c’est plutôt agréable car très clairement en ce qui me concerne ce type d’annonce ne m’intéresse pas. Amis recruteurs vous le saurez comme ça.
Ce que l’on peut dire sur la certification PHP5 c’est qu’elle manque de reconnaissance. C’est à Zend de travailler sur ce point si ils veulent valoriser leurs outils, il n’y a pas si longtemps Zend démarchait les grands comptes pour leur faire adopter PHP et les outils qui vont avec en prônant une professionnalisation du métier notamment via la mise en place de cette certification. C’était il y a un peu plus d’un an et pour l’instant j’ai l’impression que le chemin est encore long.
En revanche dans les points positifs, vous aurez plus de crédibilité quant à vos connaissances sur PHP et vous aurez également la possibilité de recevoir des offres d’emplois réguliérement en fonction de votre profil. Allez un petit effort messieurs de chez Zend pour faire en sorte que nous soyons vos atouts pour le futur.
Fluent interface : oui mais y’a un mais
Une des grandes “modes” du moment c’est la programmation en fluent interfaces. kézako ?
Les fluent interface sont des classes qui sont programmés de façon à ce que chaque fonction retourne $this. Oui bon on va pas chipoter mais c’est grosso modo ça y’a certes un peu plus de subtilité que ça mais si vous ne connaissez pas les fluent interface vous avez grosso modo une idée de ce que c’est.
Le but est d’obtenir un code plus lisible pour nous autres codeurs, car grâce à cette pirouette que nous permet la programmation orientée objet on peut transformer ceci:
<?php $foo = new Bar(); $foo->setParamA(0); $foo->setParamB(‘my_string’); $foo->execute(); ?>
en quelque chose de nettement plus sexy :
<?php
$foo = new Bar();
$foo->setsetParamA(0)
->setParamB(‘myString’);
->execute();
?>
C’est vachement plus simple à lire surtout quand on commence à appeler une dizaine de fonctions sur un objet.
Alors pourquoi ce billet. Pour vous mettre en garde, si cette méthode et très pratique pour nous elle l’est moins pour vos serveurs. Car sans fluent interface vous pouvez tester chaque retour de fonctions et donc vous arrêtez dès que quelque chose cloche. Avec les fluent interface vous serez obligé de passer dans tous vos tests. Alors vous me direz que je chipote et je suis entièrement d’accord.
Mais comme je pense à vous, je vous donne ma solution pour faire les choses bien comme il faut. Passez à PHP5 et utilisez les exceptions. Dès qu’une erreur bloquante pour la suite se produit vous levez une nouvelle exception. Il ne vous restera plus qu’à encadrer votre code d’un bloc “try/catch” pour faire ça tout proprement.
Comment craquer du MD5 en PHP
Et oui c’est possible avec une méthode en plus toute simple et optimisée que je viens de découvrir dans les commentaires de la doc PHP en ligne. Merci à cet utilisateur au génie incommensurable. Je ne vous fais pas languir plus longtemps.
<?php
/**
* i made a php script that can guess a hashed string’s value,
* but it takes forever with more than 2 characters in the password
*/
set_time_limit(0);
$randpass = chr(rand()).chr(rand());
print “RANDOM PASSWORD: $randpass”;
print “\n”;
$password = md5(“$randpass”);
$guesswrd = “”;
$tries = 0;
$start = microtime(true);
while($password != md5($guesswrd)){
$guesswrd = chr(rand()).chr(rand());
$tries+=1;
}
$end = microtime(true);
$time = $end-$start;
print “GUESSED PASSWORD: $guesswrd”;
print “\n”;
print “It took $tries tries and $time seconds”;
?>
Je crois que l’expression appropriée est : ROFL !
Google valide t’il son code HTML avec le w3c ?
Depuis bientôt de nombreuses années j’essaie de respcter les normes du w3c – World Wide Web Consortium – ce qui n’est pas toujours évident et des fois même un peu casse pied. Mais en développant un projet j’ai été très surpris de faire la découverte suivante. Google, le leader mondial de la recherche, qui comme page d’accueil quelques liens et un champs de recherche ne respecte même pas les standards du web en vigueur !
La preuve : http://validator.w3.org/check?uri=http://www.google.fr
Incroyable du HTML 4 même pas valide, mais où va t’on ? Surtout quand on sait que Google à une forte tendance à ne pas bien indexer les sites qui ne sont pas conformes aux standards.
Certification PHP5 : D Day
Ce matin à 9h30 rendez vous à SUPINFO à Paris pour passer la certification PHP5. Pas mal de stress, mais bon fallait le faire. J’arrive au centre d’examen je rempli quelques formalités administratives qui se résument à : Est ce que vous êtes d’accord avec les conditions d’examen ? A savoir, droit à rien, pas le droit de sortir, et vous êtes filmé, enfin vidéo surveillé. Bref, l’examinateur me fait patienter le temps de mettre en route la machine, mais vingt minutes plus tard il vient m’annoncer que il a un problème avec le serveur qu’il faut que je patiente. 15 minutes plus tard c’est bon. J’entre dans la pièce, 10m² à tout péter, 5 PC avec des 15″ LCD, des claviers dégueulasses et une véritable souris à boule.
Puis c’est parti pour 90 minutes pour les 70 questions.
Bon c’est là que j’ai vraiment déchanté. C’était nettement plus dur que les tests blancs de php|arch. Bon surement il y a le stress et que les questions de php|arch je commençais à en avoir fait le tour, mais quand même c’était plus dur.
Beaucoup plus de questions sur XML, pas mal sur les strings, beaucoup sur des conditions de error_reporting, pleiiiiiiiiiiiiiiins sur le PHP.ini. Bref, j’ai vraiment dû réflechir, relire et ne pas me précipiter. Mais globalement on retrouve le même genre de questions. de l’algo, des calculs en héxa, de l’OOP, du design et de la BDD.
Il est donc nécesseire de bien réviser et d’avoir un minimum d’expérience en PHP5. Vous rencontrerez des questions sur des bout de code qui ne vous aurez jamais travérsé l’esprit. Comme par exemple mettre le default dans un switch en plein milieu et des case ensuite.
J’ai pris un peu plus d’une quarantaine de minutes et après avoir cliqué avec un peu d’angoisse sur « End Exam » j’ai vu apparaitre avec joie le : « you pass the zend PHP5 certification ».
Sorti de la salle petit debrief avec l’examinateur qui me confirme que plus d’une personne l’ont trouvé plus dur que les questions de php|arch. Mais je suis soulagé. Si vous avez dès questions n’hésitez pas à me laisser des commentaires je répondrais du mieux possibles.