Bonjour, je travail actuellement sur un projet à rendre et j'aurai voulu avoir votre avis sur la façon dont mon site est réalisé pour avoir quelques conseils et optimiser le tout :
Mon site est découper avec :

  • Une partie header qui contient tout ce qui code et traitement, le formulaire de connexion/ inscription se trouve sur le menu du coup le traitement se fait sur la même page.
  • Une partie contenu ou il principalement du texte ou des boucles php.
  • Une partie bottom qui contient la fin du site.

Voici le code principale, celui du header :

<?php session_start();
define('W_ROOT', 'http://localhost/projet/'); // URL SERVER
// ------------------------------>
// Gestion des titres <h1>, <h2> et <title>
$titre_site ='Mon titre';
$page_actu = str_replace('C:/wamp/www/projet/', '', $_SERVER'SCRIPT_FILENAME']); // Enleve la racine
$page_actu = str_replace('.php', '', $page_actu); // Enleve le .php
$page_actu= ucfirst($page_actu); // Met la première lettre en majuscule
switch ($page_actu) {// Met en forme le titre de la page
    case 'Index': $title = 'Mon site'; break;
    case 'Modifier_profil': $title = 'Modifier - Mon site'; break;
    case 'Admin/index': $title = 'Administration - Mon site'; break;
    default: $title = $page_actu.' - '.$titre_site; break;
}
// ------------------------------>
// Session et gestion utilisateurs
if($page_actu=="Admin/index"){ //menu admin Si connecter dans /admin
    include("../connexion/auth.php");
    include("../inclusion/config.php"); 
    $menu_horizontal = '<li><a href="'.W_ROOT.'conseil_syndical.php" title="Ajouter une news" class="lien_principale">Ajouter</a></li>
                        <li><a href="'.W_ROOT.'Syndical.php" title="Modifier une news" class="lien_principale">Modifier</a></li>
                        <li><a href="'.W_ROOT.'forum.php" title="Gèrer les commentaires" class="lien_principale">Commentaire</a></li>
                        <li><a href="'.W_ROOT.'forum.php" title="Administrer le forum" class="lien_principale">Forum</a></li>';
}else{ //menu normal 
   include("connexion/auth.php"); 
   require("inclusion/config.php"); 
   $menu_horizontal = '<li><a href="'.W_ROOT.'conseil_syndical.php" title="Conseil Syndical" class="lien_principale">Conseil</a></li>
                       <li><a href="'.W_ROOT.'Syndical.php" title="Syndical" class="lien_principale">Syndical</a></li>
                       <li><a href="'.W_ROOT.'Divers.php" title="Divers" class="lien_principale">Divers</a></li>
                       <li><a href="'.W_ROOT.'forum.php" title="Forum" class="lien_principale">Forum</a></li>';
}
// ------------------------------>
// Formulaire de connexion
if(isset($_POST) && !empty($_POST'mail']) && !empty($_POST'mdp'])) { 
    $conn=mysql_connect("localhost","root","");                                    
    mysql_select_db("test",$conn);
    //Requete si il y a dans la table un mail et un mot de passe égale à ceux saisie dans le formulaire 
    $sql = " SELECT * FROM membre WHERE email='".addslashes($_POST'mail'])."' AND pass='".addslashes($_POST'mdp'])."'";
    $req = mysql_query($sql,$conn) or die(mysql_error());
    // Si il a une réponse à la requete alors la session recupère les infos    
    if (mysql_num_rows($req)) {
        while ($data = mysql_fetch_assoc($req)) {
            $_SESSION'Auth'] = array(
                'mail' => $_POST'mail'],
                'mdp' => $_POST'mdp'],
                'nom' => $data'nom'],
                'prenom' => $data'prenom'],
                'adresse' => $data'adresse'],
                'ville' => $data'ville'],
                'codep' => $data'codep'],
                'niveau' => $data'niveau'],
                'image' => $data'image'],
                'signature' => $data'signature'],
                'tel' => $data'tel'],
                'date' => $data'date'],
                'complement' => $data'complement']
            );       
        }
    } 
    else { header('location:inscription.php?erreur=6'); } //Si il n'y a pas de réponse alors on renvois un message d'erreur 
} ?>
<!DOCTYPE HTML>
<html lang="fr" dir="ltr">
<head>
<meta charset="utf-8" />
<link href="<?php echo W_ROOT; ?>css/styles.css" rel="stylesheet" />
<link rel="icon" type="image/x-icon" href="<?php echo W_ROOT; ?>img/favicon.png" /> 
<script type="text/javascript" src="<?php echo W_ROOT; ?>script/afficher_cacher.js"></script>
<script type="text/javascript" src="<?php echo W_ROOT; ?>script/jquery.js"> </script>
<script type="text/javascript" src="<?php echo W_ROOT; ?>script/scroll.js"> </script>
<script type="text/javascript" src="<?php echo W_ROOT; ?>script/jquery.easing.js"> </script>
<?php if(isset($ajout)) {echo $ajout; } else { $ajout=" "; } //Pour ajouter un script sur une page uniquement et pas surcharger (javascript) ?> 
<title><?php echo $title; ?></title>
</head>
<body id="top">
    <!-- Conteneur du site --> 
    <div id="conteneur_global">     
        <header role="banner"><!-- Haut du site : Titre, Menu Horizontale --> 
            <?php echo '<h1><a href="'.W_ROOT.'index.php">'.$titre_site.'</a></h1>'; ?>
            <nav role="navigation">  
                <ul> <?php 
                    if(Auth::isLogged() ){ //Change la partie membre en fonction de si la personne est connecté ou non
                        echo $menu_horizontal .'<li><a href="'.W_ROOT.'profil.php" title="Membres" onclick="javascript:afficher_cacher(\'member\'); return false;" class="lien_principale">Profil</a>
                    <div id="member" style="visibility: hidden;" add animated fadeInLeft> <!-- Menu membre --> 
                        <div id="membre_login">
                        <div id="contenur_info_membre">
                              <h3>'.$_SESSION'Auth']'nom'].' '.$_SESSION'Auth']'prenom'].'</h3>
                              <a href="'.W_ROOT.'profil.php" class="lien_menu_log2">Mon Profil</a>
                              <a href="'.W_ROOT.'modifier_profil.php" class="lien_menu_log2">Modifier le profil</a>'; 
                              if($_SESSION'Auth']'niveau']==5){ echo $lien = '<a href="'.W_ROOT.'admin/index.php" class="lien_menu_log2">Administration</a>';} else { echo $lien = '';}
                        echo '</div>
                        <div id="contenur_photo_membre"><img src="'.W_ROOT.'img/login.png"></div>
                        </div>
                        <a href="'.W_ROOT.'connexion/logout.php" id="logout">Déconnexion</a>';
                    }
                    else // Non connecté
                    {
                    echo $menu_horizontal .'<li><a href="'. W_ROOT.'login.php" title="Membres" onclick="javascript:afficher_cacher(\'member\'); return false;" class="lien_principale">Membre</a>
                    <div id="member" style="visibility: hidden;" add animated fadeInLeft> <!-- Menu membre --> 
                    <form action='.$_SERVER'HTTP_REFERER'].' method="post">
                            <p class="form_login"><label for="mail">Identifiant</label><input type="email" name="mail" id="mail" required></p>
                            <p class="form_login"><label for="mdp">Mot de passe</label><input type="password" name="mdp" id="mdp" required></p>
                            <p class="form_lien">
                                <a href="'.W_ROOT.'inscription.php" class="lien_menu_log">Inscription</a><br >
                                <a class="lien_menu_log">Mot de passe oublié ?</a> 
                            </p>
                            <p class="form_lien"><button id="login" type="submit" name="connexion" >Connexion</button></p>
                          </form> ';  
                    } ?>
                    </div></li>
                </ul>      
            </nav>
            <div id="box"></div>
        </header><!-- /// FIN Haut du site : Titre, Menu Horizontale --> 
        <?php
        $findme = 'Forum';
        $pos1 = stripos($page_actu, $findme); //Change le menu carousselle si la personne se trouve sur le forum ou non

        if ($pos1 === false){ //Pas sur le forum
              echo '<aside>   
                  <div id="top_aside"></div>
                  <div id="conteneur_caroussel"></div>    
             </aside><!-- Section gauche (conteneur d article) --> ';
        }               
        else{ // Sur le forum
                echo '<aside>   
                        <div id="top_aside"><h2>Categories</h2></div>
                        <div id="conteneur_caroussel">';
                        mysql_connect("localhost","root","");
                        mysql_select_db("test");
                        mysql_query ('SET NAMES "UTF8"');
                        $sql = "SELECT * FROM categorie Limit 12";// Affiche les news pour les modifier et supprimer
                        $req = mysql_query($sql) or die('Erreur SQL !<br />' .$sql. '<br />' .mysql_error());$i=0;
                        while ($data = mysql_fetch_assoc($req)) { echo '<h3><a href="#" >'.$data'nom_categorie'].'</a></h3>';
                        $categorie_name$i]=$data'nom_categorie'];
                        $categorie_id$i]=$data'id_categorie'];
                        $i++;}
                        echo '</div>
                        <script type="text/JavaScript">var timer=setInterval("actualiser(\'conteneur_caroussel\',\'categorie.php\')", 1000); </script>  
              </aside><!-- Section gauche (conteneur d\'article) --> ';
        }?>

Voici ensuite une page type qui va appeler ce header :

<?php include("inclusion/top_inc.php");?>
<section> <!-- Partie contenu du site -->  
        <div id="top_section"><h2><?php echo $page_actu; ?></h2></div>
        <div id="conteneur_infos">
                <article>
                    <div class="bloc_img"><img src="img/img1.jpg" alt=""></div>
                    <div class="bloc_txt"><h3><a href="page.php">Premier article du site</a></h3>
                            <p>Unde rifus Unde rifus Unde rifus Unde rifus Unde rifus</p>
                    </div>
                </article>
                <article>
                    <div class="bloc_img"><img src="img/img1.jpg" alt=""></div>
                    <div class="bloc_txt"><h3><a href="page.php">Premier article du site</a></h3>
                            <p>Unde rifus Unde rifus Unde rifus Unde rifus Unde rifus</p>
                    </div>
                </article>
                <article>
                    <div class="bloc_img"><img src="img/img1.jpg" alt=""></div>
                    <div class="bloc_txt"><h3><a href="page.php">Premier article du site</a></h3>
                            <p>Unde rifus Unde rifus Unde rifus Unde rifus Unde rifus</p>
                    </div>
                </article> 
        </div>
</section><!-- /// FIN Partie contenu du site --> 
<?php include("inclusion/bottom_inc.php"); ?>

Voilà le plus important est là, je suis ouvert à la critique car la il y a de quoi x)

Cordialement.

4 réponses


wilose
Réponse acceptée

J'ai changé/ajouté quelque petits truc (je m'ennuis..),
j'ai pas testé, y a peut être quelques erreurs..

<?php session_start();
define('W_ROOT', 'http://localhost/projet/');
function js($f = array()){
    $js = '';
    foreach ($f as $j) {
        $js .= '<script type="text/javascript" src="' . W_ROOT . 'script/' . $j . '.js"></script>'
    }
    return $js;
}
// ------------------------------> Gestion des titres <h1>, <h2> et <title>
$titre_site ='Mon titre';
$page_actu = str_replace('/projet/', '', $_SERVER'SCRIPT_NAME']);
$page_actu = ucfirst(str_replace('.php', '', $page_actu));
switch ($page_actu) {
    case 'Index': $title = 'Mon site'; break;
    case 'Modifier_profil': $title = 'Modifier - Mon site'; break;
    case 'Admin/index': $title = 'Administration - Mon site'; break;
    default: $title = $page_actu.' - '.$titre_site; break;
}
// ------------------------------> Session et gestion utilisateurs
function MenuHorizontal($d = array()){
    $li = '';
    foreach($d'url'] as $key => $c'url']){
        $li .= '<li><a href="' . W_ROOT . $c;
        $li .= '.php" title="' . $d'title']$key];
        $li .= '" class="lien_principale">' . $d'attr']$key] . '</a></li>';
    }
    return $li;
}
if($page_actu == "Admin/index"){
    include("../connexion/auth.php");
    include("../inclusion/config.php"); 
    $menu_horizontal = MenuHorizontal(array(
        'url' => array('conseil_syndical', 'Syndical', 'forum', 'forum'),
        'title' => array('Ajouter une news', 'Modifier une news', 'Gèrer les commentaires', 'Administrer le forum'),
        'attr' => array( 'Ajouter', 'Modifier', 'Commentaire', 'Forum')
    ));
}else{
   include("connexion/auth.php");
   require("inclusion/config.php");
   $menu_horizontal = MenuHorizontal(array(
        'url' => array('conseil_syndical', 'Syndical', 'Divers', 'forum'),
        'title' => array('Conseil Syndical', 'Syndical', 'Divers', 'Forum'),
        'attr' => array( 'Conseil', 'Syndical', 'Divers', 'Forum')
    ));
}
// ------------------------------> Formulaire de connexion
if(isset($_POST) && !empty($_POST'mail']) && !empty($_POST'mdp'])) { 
    $conn = mysql_connect("localhost","root","");                                    
    mysql_select_db("test",$conn);
    $sql = " SELECT * FROM membre WHERE email='".addslashes($_POST'mail'])."' AND pass='".addslashes($_POST'mdp'])."'";
    $req = mysql_query($sql,$conn) or die(mysql_error());
    if (mysql_num_rows($req)) {
        while ($data = mysql_fetch_assoc($req)) {
            $_SESSION'Auth'] = array(
                'mail' => $_POST'mail'],
                'mdp' => $_POST'mdp'],
                'nom' => $data'nom'],
                'prenom' => $data'prenom'],
                'adresse' => $data'adresse'],
                'ville' => $data'ville'],
                'codep' => $data'codep'],
                'niveau' => $data'niveau'],
                'image' => $data'image'],
                'signature' => $data'signature'],
                'tel' => $data'tel'],
                'date' => $data'date'],
                'complement' => $data'complement']);       
        }
    }else{ header('location:inscription.php?erreur=6'); }
}
?>
<!DOCTYPE HTML>
<html lang="fr" dir="ltr">
<head>
    <meta charset="utf-8" />
    <link href="<?php echo W_ROOT; ?>css/styles.css" rel="stylesheet" />
    <link rel="icon" type="image/x-icon" href="<?php echo W_ROOT; ?>img/favicon.png" /> 
    <?php echo js('afficher_cacher', 'jquery', 'scroll', 'jquery.easing');
    (isset($ajout)) ? echo $ajout; ?> 
    <title>
        <?php echo $title; ?>
    </title>
</head>
<body id="top">
    <div id="conteneur_global">     
        <header role="banner">
            <?php echo '<h1><a href="' . W_ROOT . 'index.php">' . $titre_site . '</a></h1>'; ?>
            <nav role="navigation">  
                <ul>
                    <?php if (Auth::isLogged()):
                     echo $menu_horizontal; ?>
                    <li>
                        <a href="<?php echo W_ROOT; ?>profil.php" title="Membres" onclick="javascript:afficher_cacher('member'); return false;" class="lien_principale">
                            Profil
                        </a>
                        <div id="member" style="visibility: hidden;" add animated fadeInLeft>
                        <div id="membre_login">
                            <div id="contenur_info_membre">
                                <h3>
                                    <?php echo $_SESSION'Auth']'nom'].' '.$_SESSION'Auth']'prenom']; ?>
                                </h3>
                                <a href="<?php echo W_ROOT; ?>profil.php" class="lien_menu_log2">
                                    Mon Profil
                                </a>
                                <a href="<?php echo W_ROOT; ?>modifier_profil.php" class="lien_menu_log2">
                                    Modifier le profil
                                </a>
                                <?php echo ($_SESSION'Auth']'niveau'] == 5) ? 
                                '<a href="'.W_ROOT.'admin/index.php" class="lien_menu_log2">
                                    Administration
                                </a>'; ?>
                            </div>
                            <div id="contenur_photo_membre">
                                <img src="<?php echo W_ROOT; ?>img/login.png">
                            </div>
                        </div>
                        <a href="<?php echo W_ROOT; ?>connexion/logout.php" id="logout">
                            Déconnexion
                        </a>
                    <?php else: ?>
                    <?php echo $menu_horizontal; ?>
                    <li>
                        <a href="<?php echo W_ROOT; ?>login.php" title="Membres" onclick="javascript:afficher_cacher('member'); return false;" class="lien_principale">
                            Membre
                        </a>
                        <div id="member" style="visibility: hidden;" add animated fadeInLeft>
                            <form action="<?php echo $_SERVER'HTTP_REFERER']; ?>" method="post">
                                <p class="form_login">
                                    <label for="mail">
                                        Identifiant
                                    </label>
                                    <input type="email" name="mail" id="mail" required>
                                </p>
                                <p class="form_login">
                                    <label for="mdp">
                                        Mot de passe
                                    </label>
                                    <input type="password" name="mdp" id="mdp" required>
                                </p>
                                <p class="form_lien">
                                    <a href="<?php echo W_ROOT; ?>inscription.php" class="lien_menu_log">
                                        Inscription
                                    </a><br />
                                    <a class="lien_menu_log">
                                        Mot de passe oublié ?
                                    </a> 
                                </p>
                                <p class="form_lien">
                                    <button id="login" type="submit" name="connexion" >
                                        Connexion
                                    </button>
                                </p>
                            </form>
                        </div>
                    <?php endif ?>
                    </li>
                </ul>      
            </nav>
            <div id="box"></div>
        </header>
        <?php
        $findme = 'Forum';
        $pos1 = stripos($page_actu, $findme);
        if ($pos1 === false): ?>
        <aside>   
            <div id="top_aside"></div>
            <div id="conteneur_caroussel"></div>    
        </aside>
        <?php else: ?>
        <aside>   
            <div id="top_aside">
                <h2>
                    Categories
                </h2>
            </div>
            <div id="conteneur_caroussel"><?php
                mysql_connect("localhost","root",""); mysql_select_db("test"); mysql_query ('SET NAMES "UTF8"');
                $sql = "SELECT * FROM categorie Limit 12";
                $req = mysql_query($sql) or die('Erreur SQL !<br />' . $sql . '<br />' . mysql_error()); $i = 0;
                while ($data = mysql_fetch_assoc($req)){
                    echo '<h3><a href="#" >' . $data'nom_categorie'] . '</a></h3>';
                    $categorie_name$i] = $data'nom_categorie'];
                    $categorie_id$i] = $data'id_categorie'];
                    $i++;
                } ?>
            </div>
            <script type="text/JavaScript">
                var timer = setInterval("actualiser(\'conteneur_caroussel\',\'categorie.php\')", 1000);
            </script>  
        </aside>
        <?php endif ?>

Bonjour,
un bon début, mais tu va vite user la roulette de ta souris!
Sinon, à cette ligne

$page_actu = str_replace('C:/wamp/www/projet/', '', $_SERVER'SCRIPT_FILENAME']);

Il serrai mieux de la remplacer par

$page_actu = str_replace('/projet/', '', $_SERVER'SCRIPT_NAME']);

comme sa ce sera plus facile d'envoyer le site sur le Server, et pour le même coté pratique, mettre la connexion à la base de donnée sur un fichier à inclure.
Bonne continuation.

Tu devrais essayer de mettre le minimum de code html dans tes echo.
Perso je trouve sa plus clair. Je ne sais pas si c'est significatif au niveau perf mais au niveau lisibilité je trouve sa mieux.

Sinon comme insinué précedement essais de découper tes fichier et faire des include pour eviter d'user ta molette.

yosaku
Auteur

Merci pour vos réponses ! Wilose je vais surement reprendre certaines de tes modifs ^^