J'ai du mal à déchiffrer ce code qui me permet de faire des inclusions dans mon index.php
je voudrais un peu d'explication s'il vous plait. car je suis débutant en php


<?php

$contenu = "accueil";

if((isset($_GET['menu'])) && (file_exists($_GET['menu'].".php")))
$contenu = $_GET['menu'];
else if(isset($_GET['menu'])) {
echo "<div id='information'>Page indisponible !</div>";
}

?>
Modifié par saikou (26 Feb 2013 - 18:11)
Hello,
Difficile de t'expliquer sans savoir à quel point tu es débutant, mais je vais essayer de débroussailler un peu le truc. Pour commencer on va réécrire ça un peu plus correctement :

<?php
$contenu = "accueil";

if (isset($_GET['menu']) && file_exists($_GET['menu'].".php")) {
    $contenu = $_GET['menu'];
} elseif (isset($_GET['menu'])) {
    echo "<div id='information'>Page indisponible !</div>";
}


C'est exactement le même code, mais avec une mise en forme plus standard (et à mon avis plus lisible).

Donc première ligne : on met dans la variable $contenu une chaine de caractère qui correspondra à la page qu'on veut afficher, en l'occurrence "accueil".

Ensuite on a un if et un elseif. Le script va donc exécuter le contenu du if si les conditions en sont respectées, et sinon le elseif si ses conditions sont respectées (Si ni les conditions du if, ni celles du elseif ne sont vérifiées, il ne se passera rien).

le if a deux conditions :
- que $_GET['menu'] soit défini, c'est à dire qu'il y ait dans l'url un paramètre menu, du genre http://monsite.com/index.php?menu=pouet .
- Qu'il existe un fichier qui a pour nom le contenu de $_GET['menu'] suivi de ".php". Dans mon exemple au dessus ce serait "pouet.php".

Si ces deux conditions sont remplies, alors on met dans $accueil le contenu de $_GET['menu'] (dans mon exemple "pouet"). Sinon on essaye le elseif.

Le elseif n'a qu'une condition : Que $_GET['menu'] soit défini (dans l'url toujours). Si c'est le cas, ça veut dire que l'utilisateur a bien demandé une page, mais le fichier n'existe pas, donc on affiche un message d'erreur.

Si cette unique condition n'est pas définie, ça veut dire que l'utilisateur n'a pas demandé de page en particulier via l'url, donc on a rien fait du contenu des if et elseif, et $contenu vaut toujours "accueil", comme au début du script.


On aurait pu l'écrire de manière plus lourde mais peut-être plus explicite comme ceci :
if (isset($_GET['menu'])) {
    if (file_exists($_GET['menu'].".php")){
        $contenu = $_GET['menu'];
    } else {
        echo "<div id='information'>Page indisponible !</div>";
    }
} else {
    $contenu = "accueil";
}


Pense à aller faire un tour sur la documentation de PHP pour bien comprendre les différents éléments :
if : http://www.php.net/manual/fr/control-structures.if.php
elseif : http://www.php.net/manual/fr/control-structures.elseif.php
$_GET : http://php.net/manual/fr/reserved.variables.get.php
isset() : http://www.php.net/manual/fr/function.isset.php
file_exists() : http://www.php.net/manual/fr/function.file-exists.php


Voilà, en espérant avoir pu éclairer un peu ta lanterne Smiley smile
Modifié par BlueScreenJunky (26 Feb 2013 - 19:50)