Optimisation

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Optimisation

Re: Optimisation

par yosaku » 05 oct. 2013, 16:43

C'est corriger :
define('ROOT_INC', $_SERVER['DOCUMENT_ROOT'].'\projet\inclusion'); // URL SERVER
C'est vrai que tu m'as sauvé sur ce coup ! =)
Merci encore !

Re: Optimisation

par sirakawa » 05 oct. 2013, 16:15

Je répète:
méfie-toi des
c:\wamp.....
car ça risque de coincer si ton prof teste sur une autre configuration
teste plutôt ça:
<?PHP
$ch = $_SERVER['DOCUMENT_ROOT'];
print "$ch";
?>

Re: Optimisation

par yosaku » 05 oct. 2013, 14:41

Problème résolu !
define('ROOT_INC', 'C:\wamp\www\projet\inclusion'); // URL SERVER
$fic_inclus = ROOT_INC."\config.php";
include ($fic_inclus);
C'était bien le http qui gèner ! Merci encore pour votre aide ! =)

Re: Optimisation

par sirakawa » 05 oct. 2013, 08:35

Tu ne peux pas inclure avec htpp:// il fat un chemin
montre l'arborescence de tes fichiers, si tu n'y arrives pas seul.

Re: Optimisation

par yosaku » 04 oct. 2013, 17:15

J'ai tester ça :
define('W_ROOT', 'http://localhost/projet/'); // URL SERVER
$fic_inclus = W_ROOT."inclusion/config.php";
include ($fic_inclus);
Mais ca me retourne ce genre d'erreur :

"http:// wrapper is disabled in the server configuration by allow_url_include=0 in C:\wamp\www\projet\inclusion\top_inc.php on line 8"
"include(http://localhost/projet/inclusion/config.php): failed to open stream: no suitable wrapper could be found in C:\wamp\www\projet\inclusion\top_inc.php on line 8"

Re: Optimisation

par sirakawa » 04 oct. 2013, 16:21

tu crées une variable:
$fic_inclus = W_ROOT."/nom_de_fic"; //avec ou sans / suivant comment est fichu ton W_ROOT et avec / y compris sous windows
include ($fic_inclus);

Re: Optimisation

par yosaku » 04 oct. 2013, 16:13

Oui j'avais déjà penser à utiliser W_ROOT dans mon include :
include(W_ROOT.'inclusion/config.php');
Ça m’intéresse beaucoup mais quand je fais de cette façon j'ai ce genre d'erreur :
Warning: include(W_ROOTinclusion/config.php): failed to open stream: No such file or directory in C:\wamp\www\projet\inclusion\top_inc.php on line 5
Faut-il gérer ça avec l'inculde path ?

Re: Optimisation

par Mazarini » 04 oct. 2013, 14:26

Pour les includes, tu peux utiliser un include_path (cf php.ini) et ne plus avoir de soucis puisqu'il faut alors juste mettre le chemin depuis ce répertoire.
Tu peux aussi mettre un chemin absolu pour tes includes en mettant la racine dans une variable. (edit comme pour W_ROOT)

Re: Optimisation

par mk-chris » 04 oct. 2013, 10:16

Merci pour ton idée elle est excellente ! C'est tellement plus simple que le st_replace, je l'ai adopté toute de suite !

J'en reviens juste au if en faite comme tu l'as vu j'utilise des pages config et auth unique et commun dans tous le site même lorsque les pages sont dans d'autre dossiers comme admin.
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"); 
   $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>';
}
Du coup je vois pas comment faire autrement : si la personne est dans admin/ je met les ../ si il ne l'ai pas je n'en met pas.

Re: Optimisation

par sirakawa » 04 oct. 2013, 09:12

if (z)
{
traitement1
traitement2
}
else
{
traitement1
traitement3
}
équivaut à (et là, il y a un brin d'optimisation)
mets des commentaires (des assertions:)
traitement1
if (z) //utilisateur identifié
{
traitement2
}
else //utilisateur non identifié
{
traitement3
}

Si une partie est commune à beaucoup de pages, il est intéressant de la stocker en un endroit unique comme tu fais.
$page_actu = str_replace('C:/wamp/www/projet/', '', $_SERVER['SCRIPT_FILENAME']);   // Enleve la racine (contact.php)
$page_actu = str_replace('.php', '', $page_actu);   // Enleve le .php (contact)
$page_actu= ucfirst($page_actu);   // Met la première lettre en majuscule(Contact)
mais ta façon de coder implique que ton scruipt soit installé sous windows ETavec un serveur wamp : chez moi il ne fonctionnerait pas dans ma partie Windows, XAMP y est installé en c:\XAMP ! Si je corrigeais, je santionnerais ce manque de portabilité, même sur la même plateforme.
Etudie ça
<?
PHP
$f = $_SERVER['SCRIPT_FILENAME'];
$path_parts = pathinfo($f);

echo $path_parts['dirname'], "<br />";
echo $path_parts['basename'], "\br /";
echo $path_parts['extension'], "<br />";
echo $path_parts['filename'], "<br />";
?>

Re: Optimisation

par mk-chris » 03 oct. 2013, 22:10

Merci pour vos réponses ca va grandement m'aider =), j'aimerai juste quelques éclaircissements :
- Pour le pb des if : "quand tu fait la même dans le if que dans le else tu peux sortir cette partie du code du if et du else"
J'utilise ma page header dans à la racine mais également dans d'autre dossiers /admin/ du coup j'ai fait en sorte que en fonction de ou je me trouve l'adresse du fichier passe à ../ . Doit-je inclure les deux fichiers avec ../ et sans ?

- J'aimerai aussi votre avis sur mes fonctions suivantes : Comme le header et commun à chaque pages j'utilise cette fonction pour changer dynamiquement le titre h1 et title de la page :
$page_actu = str_replace('C:/wamp/www/projet/', '', $_SERVER['SCRIPT_FILENAME']);   // Enleve la racine (contact.php)
$page_actu = str_replace('.php', '', $page_actu);   // Enleve le .php (contact)
$page_actu= ucfirst($page_actu);   // Met la première lettre en majuscule(Contact)
- Pour ma constante w_root je doit la glisser dans mon dossier config c'est ça ?

Merci encore pour votre aide !

Re: Optimisation

par sirakawa » 03 oct. 2013, 20:52

Je dirai:
avant d'"optimiser", il faut déjà fonctionner.

1) Présentation innommable: indentation absente, plusieurs instructions sur la même ligne comme s'il fallait économiser des octets en supprimant les espaces et les retours chariot:
echo $menu_horizontal .'<li><a href="'.W_ROOT.'profil.php" title="Membres" onclick="javascript&#058;afficher_cacher(\'member\'); return false;" class="lien_principale">Profil</a>
2) doubles include comme signalé par moogli et exécutés dans les deux cas: sanction sur la note
nécessite une feuille d style absente et référencée où?
Où se trouvent la définition et les fonctions de la classe Auth Auth::isLogged() ?

Re: Optimisation

par moogli » 03 oct. 2013, 15:16

salut,

en dehors que ton code ne soit pas syntaxiquement correct (vu le merdier dans le colorisation du code tu va vite voir pourquoi) il n'y a pas grand chose à faire hors mis de la logique qui est parfois douteuse.

- quand tu fait la même dans le if que dans le else tu peux sortir cette partie du code du if et du else
je pense à include("../connexion/auth.php");
include("../inclusion/config.php");
- isset($_POST) inutile cette variable existe toujours, ce qui compte c'est ce qu'il y a dedans
- Inutile de multiplier les connexion sql (et gourmand en ressource) autant en créer une et l'utiliser tous les long du script.
- la classe devrait avoir une méthode isAdmin plutôt que ça $_SESSION['Auth']['niveau']==5. D'ailleurs qui a avoir une classe dans le genre autant s'en servir pour avoir les infos concernant l'utilisateur, même si les classe statique c'est le mal :mrgreen:
- if (mysql_num_rows($req)) : abus du transtypage c'est le mal aussi if (mysql_num_rows($req) > 0) (ou plus tot ===1 la raison est si dessous)
- le while sur l'autentification est une anerie, sauf si tu compte avoir plusieurs personnes différente qui répondent au meme pseudo / mdp :mrgreen: :mrgreen:
- html, un doctype pour html c'est bien mais le top c'est de ne rien oublier (" sur l'attribut action du formulaire, le type="text/css" etc
- l'incluse des script JS, pour être propre, c'est que dans le header.
- quand au info du genre, W_root ou connexion sql devraient être dans un fichier de configuration pour ne pas devoir modifier 5000 lignes de code lorsque le code passe en production.

dernière chose, et pas la moindre, ton code par sur une extension dépréciée il est préférable d'utiliser l'extension mysqlI

@+

Optimisation

par mk-chris » 03 oct. 2013, 13:11

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) , j'attends vos conseils.

Cordialement.