Initiez-vous à la programmation PHP en 7 jours !

Linux Pratique HS n°33Le nouveau hors-série de Linux Pratique se présente comme un guide complet qui vous permettra d’apprendre à programmer en PHP. Le programme concocté s’étend sur une semaine avec pour fil conducteur la réalisation d’un projet de blog. De nouveaux éléments seront présentés chaque jour afin de perfectionner votre apprentissage. Un index ainsi que plusieurs pistes à suivre pour aller plus loin avec PHP vous attendent à la fin de ce numéro spécial. Rendez-vous en kiosque pour le découvrir ou sur la boutique, bonne lecture !

Au sommaire

Introduction

p. 06 Pour commencer

Jour 1

p. 14 À quoi ressemblera notre site ?

Jour 2

p. 32 Authentifiez-vous pour accéder à l’administration

Jour 3

p. 50 Écrire et modifier des articles

Jour 4

p. 64 Gérez vos articles !

Jour 5

p. 80 Publiez vos articles

Jour 6

p. 96 Autorisez un contenu riche

Jour 7

p. 104 Ajoutez des images

Annexes

p. 120 Pour aller plus loin…

p. 124 Index

10 commentaires sur “Initiez-vous à la programmation PHP en 7 jours !

  1. Bonjour, je tente de comprendre le fonctionnement du php à l’aide du HS33, mais je suis ramené à une erreur dès le début:
    Notice: Undefined index: username in D:\xampp\htdocs\projet1\admin\index.php on line 3.
    Je donne le début de mon code au cas où…

    <?php
    session_start();
    if ( $_SESSION['username']=='admin'){
    header('Location: main.php');
    exit;
    }
    if ($_POST){
    if ($_POST['username']=='admin' && $_POST['password']=='monpass'){
    $_SESSION['username']=$_POST['username'];
    header('Location: main.php');
    exit;
    }else{
    $errMsg = 'Nom dutilisateur ou mot de passe invalide.’;
    }
    }
    ?>


    Pas moyen de trouver le problème.
    Merci d’avance

    • Bonjour,
      Il s’agit juste d’un avertissement indiquant que l’index username dans le tableau $_SESSION n’est pas défini.
      Pour l’éviter, cette ligne pourrait s’écrire ainsi :
      if ( isset($_SESSION[‘username’]) && ($_SESSION[‘username’]==’admin’) ){

      … d’abord on teste l’existence de l’index username ET s’il existe on vérifie qu’il vaille ‘admin’

      Courage pour la suite.

    • Bonjour,

      Je suis l’auteur de ce Hors-Série.

      Les erreurs renvoyées par PHP peuvent être de plusieurs niveaux. Une « notice » est le niveau d’erreur le plus bas, et ne constitue pas une erreur à proprement parler, mais plutôt une information qui peut être utile lors d’un débogage. Ici, PHP indique simplement qu’au moment où on essaie d’accéder à l’index « username » du tableau $_SESSION, celui-ci n’est pas défini, ce qui est normal puisque l’utilisateur n’est pas encore authentifié. Cet index est alimenté à la ligne 9 de votre code, lorsque l’identification testée à la ligne 8 a réussie : la notice n’est plus affichée ensuite, lorsque l’utilisateur est identifié.

      Cette question des niveaux d’erreurs est expliquée à la page 59.

      En espérant avoir pu vous éclairer, cordialement,

      Stéphane Mourey

  2. Bonjour,

    pour eviter ce genre notice, il suffit de fait ceci :

    if (isset($_SESSION[‘username’]) && $_SESSION[‘username’]==’admin’) ….
    tester l’existence de la variable avec isset peut aider à eviter les warning

    Malabar

  3. Merci pour vos aides,
    donc si je comprends bien, je ne peux pas lancer le script avant la fin des leçons. J’avance donc dans le livre.

    • Je ne comprend pas votre conclusion. Si vous ne pouvez vous attendre à ce que tout fonctionne avant d’avoir terminé, le processus suit plusieurs étapes qu’il est capital de valider chacune à leur tour avant de passer à la suite, sans quoi il sera inévitable que des erreurs difficiles à démêler se produisent (et même comme ça, on est jamais à l’abri d’une surprise!).

  4. Bonjour,

    Est il possible d’avoir les listing des programmes ?

    Je suis bloqué au début du jour 3, on demande de modifier la balise form de edit.php ors je n’ai pas de balise form dans ce programme !!!

    Cordialement

    • La balise form relève du HTML et est introduite au jour 1, consacré justement à cette technologie. La balise y est expliquée à la page 28, avec le listing du fichier admin/index.html. Elle apparaît également dans le listing partiel du fichier admin/edit.html à la page 30.
      Il existe un listing public du projet, mais dans un état un peu plus avancé que ce que présente le mook – je n’ai malheureusement pas pensé à versionner par journée. Mais cela peut toujours être utile. Vous pouvez le consulter ici : https://github.com/taophp/Reilly

      Bon courage !

  5. Bonjour,

    Il est dommage qu’il n’y est pas le code complet de chaque fichier car il est très facile de faire des erreurs lorsque l’on crée un fichier partie par partie.
    Si une personne a réussie à faire tourner le programme , je suis preneur car j’ai une liste d’erreurs longue comme le bras .

    Hervé

    • Bonjour,

      Il y a de fortes chances que beaucoup d’erreurs soient de simples notices qui peuvent être simplement ignorées (voir à ce sujet la page 59).
      Comme dit plus haut, il existe un listing public complet du projet, mais dans un état plus avancé que ce que présente le mook. Il est consultable ici :https://github.com/taophp/Reilly

      Par ailleurs, étant autodidacte, il m’est arrivé très souvent de ne pas arriver à faire fonctionner des codes, même très bien documentés, que j’avais trouvé ici ou là. C’est ainsi que j’ai remarqué une propriété étrange des langages informatiques : ils refusent presque toujours de faire ce qu’on leur demande avant qu’on ait parfaitement bien compris comment ils fonctionnent… Accéder aux listings finis et fonctionnels n’est donc pas la meilleure façon d’apprendre, même si cela peut éviter de se décourager.

      Bon courage !

Les commentaires sont fermés.