IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Optimisations d'un code ?


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2016
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Optimisations d'un code ?
    Bonjour,
    Je voulais savoir si je pouvais faire des optimisations dans ce code que j'ai déjà pas mal arrangé mais je suis encore un débutant.
    Je vous remercie d'avance.

    Réécriture du sujet.

    Ps : Je sais que dans le Template.html les tableaux pour le design sont déconseillés mais c'est juste un thème que j'ai trouvé pour mes testes.

    Template.html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>{WIKI_TITLE} | {PAGE_TITLE}</title>
    		<meta charset="utf-8">
    		<meta name="author" content="">
    		<meta name="description" content="{DESCRIPTION}">
    		<meta name="keywords" content="{KEYWORDS}">
    		<meta name="viewport" content="width=device-width, maximum-scale=1">
    		<link rel="stylesheet" type="text/css" href="{THEMES_DIR}{THEME}{CSS_FILE}">
    		<link rel="shortcut icon" type="image/x-icon" href="{FAVICON_FILE}">
    	</head>
    	<body>
    		<table width="100%" cellpadding="4" cellspacing="0" summary="{PAGE_TITLE}">
    			<thead>
    				<tr>
    					<th colspan="3">
    						<h1>{WIKI_TITLE} | {PAGE_TITLE}</h1>
    						<p>{MOTTO}</p>
    					</th>
    				</tr>
    				<tr>
    					<td class="Links" colspan="2" align="left">
    						{HOME}
    					</td>
    					<td class="Links" colspan="2" align="right">
    						{EDIT} | {HELP}
    					</td>
    				</tr>
    			</thead>
    			<tbody>
    				<tr>
    					<td id="Content" colspan="3">
    						{CONTENT}
    					</td>
    				</tr>
    			</tbody>
    			<tfoot>
    				<tr>
    					<td class="Links" align="left">
    						{SEARCH}
    					</td>
    					<td class="Links" align="center">
    						<p>{SOON}</p>
    					</td>
    					<td class="Links" align="right">
    						{EDIT} | {HELP}
    					</td>
    				</tr>
    			</tfoot>
    		</table>
    	</body>
    </html>
    Wik-Config.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    // CONFIGURATION !
        $WIKI_TITLE			=	'';
        $MOTTO              =   '';
        $DESCRIPTION        =   '';
        $KEYWORDS           =   '';
        $START_PAGE			=	'Accueil';
        $ADMIN_PAGE_NAME    =   'Admin';
        $PAGES_PAGE_NAME    =   'Liste des pages';
        $THEME              =   'default/';
    // Boutons !
        $HOME_BUTTON        =   'Accueil';
        $HELP_BUTTON        =   'Aide';
        $EDIT_BUTTON        =   'Éditer';
        $DONE_BUTTON        =   'Valider';
        $PROTECTED_BUTTON   =   'Page verrouillé !';
    // Erreurs !
        $MISSING_TEMPLATE   =   'Template.html est manquant !';
        $ERROR              =   'Erreur(s) !';
    // Fichiers et dossiers !
        $THEMES_DIR         =   'themes/';
        $PAGES_DIR          =   'pages/';
        $CSS_FILE           =   'Styles.css';
        $TEMPLATE_FILE      =   'Template.html';
        $FAVICON_FILE       =   'favicon.ico';
    ?>
    index.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    <?php
    	include('Wik-Config.php');
     
    	$CONTENT = '';
     
    	$PAGE = isset($_GET['page']) ? $_GET['page'] : '';
    	$ACTION = isset($_GET['action']) ? $_GET['action'] : '';
    // Détermine la page à afficher !
    	if (! $PAGE_TITLE = $PAGE) {
    		if ($ACTION == "admin") {
    			$PAGE_TITLE = $ADMIN_PAGE_NAME;
    		}
    		elseif ($ACTION == "pages") {
    			$PAGE_TITLE = $PAGES_PAGE_NAME;
    		}
    		else {
    			$PAGE_TITLE = $START_PAGE;
    		}
    	}
    // Écrit les changements sur la page, s'il y en a !
    	if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    		$FILE = fopen($PAGES_DIR . stripslashes($_POST['page']) . '.txt', 'r+');
    		ftruncate ($FILE , 0);
    		if (! $FILE = fopen($PAGES_DIR . stripslashes($_POST['page']) . '.txt', 'r+')) {
    			echo $ERROR;
    		}
    		elseif (get_magic_quotes_gpc()) {
    			fputs($FILE, trim(stripslashes($_POST['content'])));
    		}
    		else {
    			fputs($FILE, trim($_POST['content']));	   
    		}
    		fclose($FILE);
    		header('location: index.php?page=' . urlencode(stripslashes($_POST['page'])));
    	}
    // Lit et analyse le template !
    	if (! $FILE = @fopen($THEMES_DIR . $THEME . $TEMPLATE_FILE, 'r')) {
    		echo $MISSING_TEMPLATE;
    	}
    	$TEMPLATE = fread($FILE, filesize($THEMES_DIR . $THEME . $TEMPLATE_FILE));
    	fclose($FILE);
    // Détermine l'access mode !
    	if ($ACTION == 'edit' || $ACTION <> '') {
    		$HTML = preg_replace('/{EDIT}/', $EDIT_BUTTON, $TEMPLATE);
    	}
    	elseif (is_writable($PAGES_DIR . $PAGE_TITLE . '.txt')) {
    		$HTML = preg_replace('/{EDIT}/', '<a href="index.php?page=' . $PAGE_TITLE . '&action=edit">' . $EDIT_BUTTON . '</a>', $TEMPLATE);
    	}
    	else {
    		$HTML = preg_replace('/{EDIT}/', $EDIT_BUTTON, $TEMPLATE);
    	}
     
    	if (($FILE = @fopen($PAGES_DIR . $PAGE_TITLE . ".txt", "r")) || $ACTION <> "") {
    		$CONTENT = "\n" . @fread($FILE, @filesize($PAGES_DIR . $PAGE_TITLE . ".txt")) . "\n";
    		@fclose($FILE);
    		$CONTENT = preg_replace("/\\$/Umsi", "&#036;", $CONTENT);
    		$CONTENT = preg_replace("/\\\/Umsi", "&#092;", $CONTENT);
    	}
    // Remplace les valeurs du template !
    	$HTML = preg_replace('/{FAVICON_FILE}/', $FAVICON_FILE, $HTML);
    	$HTML = preg_replace('/{CSS_FILE}/', $CSS_FILE, $HTML);
    	$HTML = preg_replace('/{MOTTO}/', $MOTTO, $HTML);
    	$HTML = preg_replace('/{KEYWORDS}/', $KEYWORDS, $HTML);
    	$HTML = preg_replace('/{DESCRIPTION}/', $DESCRIPTION, $HTML);
    	$HTML = preg_replace('/{THEMES_DIR}/', $THEMES_DIR, $HTML);
    	$HTML = preg_replace('/{THEME}/', $THEME, $HTML);
    	$HTML = preg_replace('/{PAGE_TITLE}/', $PAGE_TITLE, $HTML);
    	$HTML = preg_replace('/{HOME}/', '<a href="index.php">' . $HOME_BUTTON . '</a>', $HTML);
    	$HTML = preg_replace('/{HELP}/', '<a href="index.php?page=' . $HELP_BUTTON . '">' . $HELP_BUTTON . '</a>', $HTML);
    	$HTML = preg_replace('/{WIKI_TITLE}/', $WIKI_TITLE, $HTML);
     
    	if ($ACTION == 'edit') {
    		$CONTENT = '<form method="post" action="index.php"><textarea name="content" style="width: 100%; height: 300px; resize: none">' . $CONTENT . '</textarea><input type="hidden" name="page" value="' . $PAGE_TITLE . '" /><br /><input type="submit" value="' . $DONE_BUTTON . '" accesskey="s" /></form>';
    	}
    	elseif ($ACTION == 'admin') {
    		$CONTENT = '<p>SOON</p>';
    	}
    	elseif ($ACTION == 'pages') {
    		$CONTENT = "<p>SOON</p>";
    	}
    // Affiche la page !
    	$HTML = preg_replace('/{CONTENT}/', $CONTENT, $HTML);
    	echo $HTML;
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    A quoi correspond cette condition ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (! $PAGE_TITLE = $PAGE) {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2016
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Justement le ! devant je sais pas c'est un code que j'ai repris mais si j'enlève ce symbole des erreurs se forment et le système de page ne marche plus.

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 690
    Points : 20 211
    Points
    20 211
    Par défaut
    Le meilleur moyen d'optimiser ce code est de ne pas l'utiliser.
    Entre des conditions qui ne veulent rien dire et des preg_repalce partout c'est pas joli joli.

    Je rappel quand même que php est un moteur de template en lui même. On peut lui préférer autre chose quand on à besoin de travailler avec des non développeurs mais sinon autant faire :
    plutôt qu'un tag {tag} et un preg_replace.

    Ceci étant dit , vouloir optimiser si tu n'as pas de problème de performance, ça ne sert à rien. Pour optimiser un code on trouve quelle est la partie du code qui va permettre le plus gros gain rapidement et on travail dessus.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2016
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    C'est surtout cette partie que je veux améliorer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    		$FILE = fopen($PAGES_DIR . stripslashes($_POST['page']) . '.txt', 'r+');
    		ftruncate ($FILE , 0);
    		if (! $FILE = fopen($PAGES_DIR . stripslashes($_POST['page']) . '.txt', 'r+')) {
    			echo $ERROR;
    		}
    		elseif (get_magic_quotes_gpc()) {
    			fputs($FILE, trim(stripslashes($_POST['content'])));
    		}
    		else {
    			fputs($FILE, trim($_POST['content']));	   
    		}
    		fclose($FILE);
    		header('location: index.php?page=' . urlencode(stripslashes($_POST['page'])));
    	}

  6. #6
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2016
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    J'ai et réglé les principaux problèmes du code.
    EDIT : J'ai un autre problème en faites je voudrais mettre un message d'erreur si le fichier du fopen est inexistant ou inaccessible.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Citation Envoyé par Invoc_Fatal Voir le message
    J'ai et réglé les principaux problèmes du code.
    EDIT : J'ai un autre problème en faites je voudrais mettre un message d'erreur si le fichier du fopen est inexistant ou inaccessible.
    Ca serait sympa de donner les corrections trouvées.
    Le code suivant (le votre) affiche un message d'erreur quand PHP n'arrive pas à ouvrir le fichier. Que voulez-vous de plus ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (! $FILE = fopen($PAGES_DIR . stripslashes($_POST['page']) . '.txt', 'r+')) {
    	echo $ERROR;
    }
    Vous pouvez aussi utiliser is_file ou die / exit.
    Christophe

    Pensez à mettre quand c'est le cas.

  8. #8
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2016
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Les problèmes sont ok, résolu !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Optimisation C++] Calcul code altitude
    Par Spout dans le forum C++
    Réponses: 7
    Dernier message: 13/11/2007, 23h17
  2. Y a-t-il une solution pour optimiser mon petit code ?
    Par pierre987321 dans le forum Delphi
    Réponses: 20
    Dernier message: 14/06/2007, 11h53
  3. Optimisation de mon code ActionScript
    Par amnesias dans le forum Flash
    Réponses: 9
    Dernier message: 01/04/2007, 23h04
  4. Optimisation d'un code !
    Par leserapheen dans le forum Pascal
    Réponses: 20
    Dernier message: 09/03/2007, 15h00
  5. [MMX] Optimisation d'un code C++ -> plus lent
    Par Laurent Gomila dans le forum x86 32-bits / 64-bits
    Réponses: 12
    Dernier message: 17/05/2006, 19h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo