Morceaux de scripts PHP bien utiles, participez ;)

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par mowmow, 30 Août 2006.

  1. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    Bonjour à tous,

    Je vous propose de faire un petit regroupement de fonctions PHP, javascript ou autre langage, que vous utilisez souvent et que vous désirez partager avec d'autres développeurs ;)

    Je commence avec une petite fonction permettant de faire une pagination à la mode phpBB (voir en bas à droite du forum par exemple).

    ===================================================
    Sommaire :

    * Script permettant la mise en forme d'une liste de pages (comme un forum par exemple) par mowmow

    * Debug (print_r avancé) par La Chaise Sauvage

    * Fonction de comparaison de chaine de caractères en trois modes (test d'égalité, présence du mot dans l'autre ou expression régulière) par Mumuri

    * Fonction permettant de lancer une commande linux($cmd) et d'afficher le succès ou l'échec de l'opération par dadovb

    * Fonction qui met en gras le texte $x de la chaine $var

    * Fonction de mise en forme de texte pour utilisation dans une URL (Par exemple pour de l'URL Rewriting) par magic corp.

    ===================================================

    Code :
    Code:
    function pagination($actual_page, $page_number, $url, $show = 3) {
    	// Erreurs
    	if($show % 2 == 0 || $show < 3) {
    		return 'Erreur : $show ne doit pas être pair, égal à 0 ou égal à 1';
    	}
    	if($page_number < $actual_page) {
    		return 'Erreur : la page actuelle est supérieure au nombre de pages.';
    	}
    	// Erreurs
    	if($page_number < $show*4) {
    		for($i = 1; $i <= $page_number; $i++) {
    			if($i != $actual_page) {
    				$debut[] = '<a href="'.str_replace('{id}', $i, $url).'">'.$i.'</a>';
    			}
    			else {
    				$debut[] = $i;
    			}
    		}
    		return implode(', ', $debut);
    	}
    	
    	// Debut
    	$debut_fin = $actual_page <= $show-1 ? $show : $actual_page < $show*2 ? $actual_page+1 : $show;
    	$debut_fin = $actual_page == 1 ? $show : $debut_fin;
    	for($i = 1; $i <= $debut_fin; $i++) {
    		if($i != $actual_page) {
    			$debut[] = '<a href="'.str_replace('{id}', $i, $url).'">'.$i.'</a>';
    		}
    		else {
    			$debut[] = $i;
    		}
    	}
    	
    	// Milieu
    	$milieu_verify = $actual_page-1 < $page_number - $show*2 && $actual_page+1 > $show*2 ? 1 : 0;
    	$milieu_debut = $milieu_verify ? ($actual_page-floor($show/2)) : 1;
    	$milieu_end = $milieu_verify ? ($actual_page+floor($show/2)) : 0;
    	for($i = $milieu_debut; $i <= $milieu_end; $i++) {
    		if($i != $actual_page) {
    			$milieu[] = '<a href="'.str_replace('{id}', $i, $url).'">'.$i.'</a>';
    		}
    		else {
    			$milieu[] = $i;
    		}
    	}
    	// Fin
    	$fin_debut = $actual_page >= $page_number-$show+1 ? $page_number-$show : $actual_page > $page_number-$show*2 ? $actual_page-1 : $page_number-$show+1;
    	$fin_debut = $actual_page == $page_number ? $page_number-$show+1 : $fin_debut;
    	$fin_fin = $page_number;
    	for($i = $fin_debut; $i <= $fin_fin; $i++) {
    		if($i != $actual_page) {
    			$fin[] = '<a href="'.str_replace('{id}', $i, $url).'">'.$i.'</a>';
    		}
    		else {
    			$fin[] = $i;
    		}
    	}
    	// Résultat
    	return implode(', ', $debut).($milieu ? ' ... '.implode(', ', $milieu).' ... ' :  ' ... ').implode(', ', $fin);
    }
    Utilisation :
    $actual_page : Page actuelle dans la pagination
    $page_number : Nombre de pages au total
    $url : ce qui apparaîtra comme lien pour chaque page, exemple : /sommaire/theme/page-{id} => Précisez {id} dans votre url pour que l'id y soit affecté.
    $show : Nombre de liens à afficher au début, au milieu et à la fin, doit être impair !

    En pratique :
    Code:
    echo pagination($_GET['page'], ceil($count/$limit), '/mon_url/{id}.html', 3);
    Pour tester :
    Code:
    echo pagination(10, 50, '/mon_url/{id}.html', 3);

    Je ferais un petit sommaire dans ce premier post si les contributions sont nombreuses :) Je continuerais de poster quelques morceaux de scripts qui me sont bien utiles ;)

    Bon partage :D
     
  2. yanhl
    yanhl WRInaute impliqué
    Inscrit:
    4 Décembre 2003
    Messages:
    655
    J'aime reçus:
    0
  3. mego
    mego WRInaute occasionnel
    Inscrit:
    7 Mars 2006
    Messages:
    289
    J'aime reçus:
    0
    Je crois qu'un site dédié serait plus approprié, non ?
    De plus il existe déjà des dizaines de sites faisant ce que tu proposes.
     
  4. La Chaise sauvage
    La Chaise sauvage WRInaute impliqué
    Inscrit:
    11 Avril 2005
    Messages:
    536
    J'aime reçus:
    0
    vous avez tout les deux raison, mais vous êtes un peu rudes...

    les sites existant recensent surtout des codes plus ou moins "complets", des CMS, des annuaires, de grosses classes etc... moi en lisant son post, j'avais pensé à des petits "trucs" et autres astuces de la vie de tous les jours.. un peu dans le genre des "top 10 custom javascript functions" de dustin diaz http://www.dustindiaz.com/top-ten-javascript ... sauf qu'on n'est pas obligés de se limiter à 10 (..et puis que ce ne sera sûrement pas les "top ten of all times", surtout les miennes ^^)

    par exemple, moi j'ai une petite fonction que j'ai appelée "debug", et qui fait grosso modo la même chose qu'un print_r(); mais en mettant le truc un peu plus en forme. je l'utilise quand je ne sais plus ce qu'il y a dans une variable.. ^^

    Code:
    function debug($obj,$visible=0) {
    	$v = ($visible==1) ?  'visible' : 'hidden';
    	echo '<a href="#" onclick="document.getElementById(\'debug\').style.visibility=\'visible\'" id="switch">debug</a>
    	<pre id="debug" style="visibility:'.$v.'"><a href="#" onclick="document.getElementById(\'debug\').style.visibility=\'hidden\'">[X]</a>
    	<code>';
    	print_r($obj);
    	echo '</code></pre>';
    }

    avec la ptite css qui va bien c'est encore mieux (mais pas obligatoire)

    Code:
    pre#debug {
    	font-size:14px;
    	color:#000000;
    	background-color:#FFFFCC;
    	border:#FFCC66 2px solid;
    	padding:3px;
    	width:500px;
    	}
    #debug a {
    	font-family:Verdana;
    	text-decoration:none;
    	float:right;
    	}
    à utiliser sur un objet, un tableau.. enfin comme print_r, quoi, sauf que c'est un peu plus lisible à mon goût, et qu'on peut le cacher ou l'afficher d'un clic. l'argument optionnel sert à préciser si on veut afficher ou non le résultat du debug tout de suite, ou seulement quand on clique sur "debug"...

    voilàvoilà.. j'espère que je ne vais pas me faire incendier ^^
     
  5. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    Voilà comme le dit "la chaise sauvage" c'est simplement des petits bouts de code qui rendent le développement plus simple, sans passer forcemment par un package complet de PEAR...
     
  6. Grantome
    Grantome WRInaute passionné
    Inscrit:
    16 Janvier 2004
    Messages:
    2 243
    J'aime reçus:
    0
    Code:
    <?php
    echo "Hello World !";
    ?>
     
  7. seek
    seek Nouveau WRInaute
    Inscrit:
    5 Novembre 2004
    Messages:
    37
    J'aime reçus:
    0
    Pour ma part je suis à la recherche d'un javascript qui permettrait de mettre un site en page de démarrage du browser et qui marcherait à la fois sous IE et Firefox.
     
  8. Mumuri
    Mumuri WRInaute passionné
    Inscrit:
    3 Novembre 2004
    Messages:
    1 410
    J'aime reçus:
    0
    fonction de comparaison de chaine de caractére en trois modes (test d'égalité, présence du mot dans l'autre ou expréssion réguliére)

    Code:
    /**
    regarde dans un tableau $interdits si $DossierCourant est "autorisé"
    */
    function Est_Autorisé($DossierCourant,$Interdits){
        global $Goption;
    
        $drapeau = true;
        while ($drapeau && list(,$Dossier)=each($Interdits) ){
            if ( ComparaisonFichier($DossierCourant,$Dossier,$Goption))$drapeau = false;
        }
        reset($Interdits);
        return $drapeau;
    }
    
    /**
    compare deux chaines
    */
    function ComparaisonFichier($DossierCourant,$Dossier,$option=0){
        switch ($option){
            case 0:
                // faire une comparaison bit à bit
                return ($DossierCourant == $Dossier);
            break;
    
            case 1:
                // faire un filtre avec strpos
                $pos = strpos($mystring, $findme);
                if ($pos === false) {
                    return false;
                } else {
                    return true;
                }
            break;
    
            case 2:
                // faire un filtre avec les expressions réguliéres
                return ereg($Dossier,$DossierCourant);
            break;
        }
    }

    exemple d'appel
    Code:
    $Goption=0;// option de filtrage (laissez 0 si vous ne comprenez pas)
    $ExtensionsInterdites= array('php','php3','html','htm');
    if( Est_Autorisé("php",$ExtensionsInterdites))
    echo "extension autorisé";
    else
    echo "extension interdite";
    
    if( Est_Autorisé("gif",$ExtensionsInterdites))
    echo "extension autorisé";
    else
    echo "extension interdite";
    
    
     
  9. dadovb
    dadovb WRInaute passionné
    Inscrit:
    22 Novembre 2005
    Messages:
    1 653
    J'aime reçus:
    0
    Code:
    function exec_cmd($cmd,$koi){
    //permet de lancer une commande linux($cmd) et d'afficher le succès ou l'échec de l'opération
    	exec($cmd, $out, $err);
    	echo "<p>".$koi.": $cmd.....";
    	if($err){
    		echo "<font color='red'>ECHEC</font></p>";
    		echo "<font color='red'>".$out[0]."</font></p><br>";
    		return false;
    	}else{
    		echo "<font color='green'>succes</font></p>";
    		return true;
    	}
    }
    ...toute petite commande ....

    Code:
    function highlight($x,$var) {
    //fonction qui met en gras le texte $x de la chaine $var
    	if ($var != "") {
    		$xtemp = "";
    		$i=0;
    		while($i<strlen($x)){
    			if((($i + strlen($var)) <= strlen($x)) && (strcasecmp($var, substr($x, $i, strlen($var))) == 0)) {
    			//this version bolds the text. you can replace the html tags with whatever you like.
    				$xtemp .= "<b>" . substr($x, $i , strlen($var)) . "</b>";
    				$i += strlen($var);
    			}
    			else {
    				$xtemp .= $x{$i};
    				$i++;
    			}
    		}
    	$x = $xtemp;
    	}
    	return $x;
    }
    tout est dit en commentaires...
     
  10. magic corp.
    magic corp. WRInaute occasionnel
    Inscrit:
    17 Juin 2004
    Messages:
    395
    J'aime reçus:
    0
    Fonction de mise en forme de texte pour utilisation dans une URL (Par exemple pour de l'URL Rewriting)
    Code:
    function convert_for_uri($text) {
      // Définition du séparateur
      define("SEPARATOR", "-");
    
      $tofind = "àáâãäåòóôõöøèéêëçìíîïùúûüÿñ"; // Lettre accentuées
      $replac = "aaaaaaooooooeeeeciiiiuuuuyn"; // Equivalant non accentué
    
      // Mise en minuscule + suppression des lettres accentuées par leur équivalant non accentué
      $text = strtr(strtolower($text),$tofind,$replac);
    
      // Remplacement de caractère non alphanumérique par un séparateur
      $text = ereg_replace("[^a-z0-9]", SEPARATOR, $text);
    
      // Suppression des doubles séparateurs
      while (strstr($text, SEPARATOR . SEPARATOR)) 
        $text = str_replace(SEPARATOR . SEPARATOR, SEPARATOR, $text);
    
      // Retour avec suppression d’un possible séparateur en fin de chaîne
      return(ereg_replace(SEPARATOR . "$", "", $text));
    }
     
  11. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    Pas mal l'utilisation de ereg_replace dans ta fonction magic corp :) Merci bien ;)
     
  12. Tilt
    Tilt WRInaute impliqué
    Inscrit:
    26 Mars 2005
    Messages:
    752
    J'aime reçus:
    0
    Je vous propose d'organiser un concours: script le + utile, script le plus optimisé (léger en charge serveur), script le + innovant et, bien sûr, prix du meilleur script php. Non ?
     
  13. Sir Dipp
    Sir Dipp WRInaute impliqué
    Inscrit:
    21 Juillet 2003
    Messages:
    899
    J'aime reçus:
    0
    Dans ce cas je peux dire
    Code:
    <?php
    echo'Hello World';
    ?>
    Plus sécireusement faut donner une base, genre le meilleure script pour supprimes les accents, le meilleure script pour rendre les adresse cliquables etc.

    A+
     
  14. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    Pour les utilisateurs expérimentés je vous conseille également : http://tech.motion-twin.fr/

    Et plus précisemment pour PHP : NSpod, PHPTal et leur librairie SQL

    -http://tech.motion-twin.fr/php_sql.html
    -http://tech.motion-twin.fr/php_spod.html
    -http://phptal.motion-twin.com/
     
  15. baptiste
    baptiste WRInaute impliqué
    Inscrit:
    25 Avril 2004
    Messages:
    534
    J'aime reçus:
    0
    L’idée est bonne continuons. Mais une fois le poste lancé il va falloir créer un index des scripts.
     
  16. Ron56
    Ron56 WRInaute occasionnel
    Inscrit:
    20 Novembre 2005
    Messages:
    460
    J'aime reçus:
    0
    Tres bon mowmow :wink: ca serait bien d'éditer le premier post :p
     
  17. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    Mis à jour ;)
     
  18. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    De la part de PigeonDeCombat :

    Code:
    function LatLong(degLat, degLong) {
    	  this.lat = LatLong.llToRad(degLat);
    	  this.lon = LatLong.llToRad(degLong);
    	} 	 
    	
    	LatLong.llToRad = function(brng) {
    	  if (!isNaN(brng)) return brng * Math.PI / 180;  
    	
    	  brng = brng.replace(/[\s]*$/,'');               
    	  var dir = brng.slice(-1).toUpperCase();         
    	  if (!/[NSEW]/.test(dir)) return NaN;            
    	  brng = brng.slice(0,-1);                       
    	  var dms = brng.split(/[\s:,°º′\'″"]/);         
    	  switch (dms.length) {                           
    	    case 3:                                       
    	      var deg = dms[0]/1 + dms[1]/60 + dms[2]/3600; break;
    	    case 2:                                       
    	      var deg = dms[0]/1 + dms[1]/60; break;
    	    case 1:                                       
    	      if (/[NS]/.test(dir)) brng = '0' + brng;    
    	      var deg = brng.slice(0,3)/1 + brng.slice(3,5)/60 + brng.slice(5)/3600; break;
    	    default: return NaN;
    	  }
    	  if (/[WS]/.test(dir)) deg = -deg;               
    	  return deg * Math.PI / 180;                     
    	}
    	
    	LatLong.distHaversine = function(p1, p2) {
    	  var R = 6371; 
    	  var dLat  = p2.lat - p1.lat;
    	  var dLong = p2.lon - p1.lon;
    
    	  var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
    	          Math.cos(p1.lat) * Math.cos(p2.lat) * Math.sin(dLong/2) * Math.sin(dLong/2);
    	  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    	  var d = R * c;
    	
    	  return d;
    	}
    Exemple :
    Code:
      startPoint = new LatLong(lat, lng);
      endPoint = new LatLong(lat, lng);
      var dist = LatLong.distHaversine(startPoint, endPoint); // exprimé en Km.
    
     
  19. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    Perso je ne vois pas l'interet d'un tel topic, regarde le dernier post, ce n'est deja plus du PHP, ensuite cela serait beaucoup plus confortable pour les internautes si tu créais directement ton site avec des bouts de code.
    Mon [www] a commencé comme ca, je voulais juste une base perso des bouts de code que j'utilisais régulierement, puis c'est réellement devenu un service utilile à la communauté PHP.
     
  20. asiansnakewine
    asiansnakewine Nouveau WRInaute
    Inscrit:
    5 Septembre 2006
    Messages:
    10
    J'aime reçus:
    0

    Bonjour, ca existe ca?
     
  21. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    Si tu juges que ton site est beaucoup plus approprié dans ce cas vas-y.
     
  22. sunflower
    sunflower WRInaute discret
    Inscrit:
    5 Janvier 2006
    Messages:
    111
    J'aime reçus:
    0
    Juste pour détail de programmation, dans ce genre de cas où on cherche un seul contre-exemple pour être fixé, on peut retourner dès la trouvaille de cet élément et se dispenser de parcourir la fin du tableau (pour rien, car rien ne peut faire changer $drapeau de valeur):
    Code:
    if(ComparaisonFichier($DossierCourant,$Dossier,$Goption)) return false;
    
    Et en sortie de boucle placer un 'return true;' au lieu de $drapeau (on peut se passer entièrement de cette variable du coup).
     
  23. dadovb
    dadovb WRInaute passionné
    Inscrit:
    22 Novembre 2005
    Messages:
    1 653
    J'aime reçus:
    0

    vade retro globalas ! :evil:
     
  24. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    Dslé, loin de moi le but de te rendre nerveux, re dslé ; ) Bonne continuation :D
     
  25. Albert1
    Albert1 WRInaute impliqué
    Inscrit:
    23 Août 2005
    Messages:
    771
    J'aime reçus:
    0
    il est où le souci ?
    je suis allé voir çà : http://fr2.php.net/global :roll:
     
  26. dadovb
    dadovb WRInaute passionné
    Inscrit:
    22 Novembre 2005
    Messages:
    1 653
    J'aime reçus:
    0
    C juste que les globales c pas la meilleure manière de programmer, c'est très gourmand en ressource mémoire, faut mieux passer la variable en paramètre à la fonction , ou encore mieux en référence.
     
  27. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    Code:
    function highlight($x,$var) {
    //fonction qui met en gras le texte $x de la chaine $var
    	if ($var != "") {
    		$xtemp = "";
    		$i=0;
    		while($i<strlen($x)){
    			if((($i + strlen($var)) <= strlen($x)) && (strcasecmp($var, substr($x, $i, strlen($var))) == 0)) {
    			//this version bolds the text. you can replace the html tags with whatever you like.
    				$xtemp .= "<b>" . substr($x, $i , strlen($var)) . "</b>";
    				$i += strlen($var);
    			}
    			else {
    				$xtemp .= $x{$i};
    				$i++;
    			}
    		}
    	$x = $xtemp;
    	}
    	return $x;
    }
    Argh !! en 1 ligne et sans ces <b> qui sont obsolètes !!!
    Code:
    eregi_replace($mots,"<strong>\\0</strong>",$chaine);
     
  28. thierry8
    thierry8 WRInaute accro
    Inscrit:
    11 Juillet 2005
    Messages:
    2 728
    J'aime reçus:
    0
    la capacité de mémoire allouée est la même que ce soit une variable global ou non...tout dépend des informations que l'on met dans cette variable, simplement..

    global signifie uniquement que la variable est la même ou que l'on soit (la portée de la variable) (fonction, sript, etc..), ce qui prend tout au plus 1 bit pour indiquer que la case mémoire sera la même pour chacune de ces même variables.
     
  29. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    +1

    Perso je pensais le contraire car j'etais persuadé que ca faisait une copie, mais en effet c'est la meme zone memoire pour la même variable
     
  30. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    Je ne cherche aucune notoriété à travers ce post, c'est juste que sur les forums de developpez.net ca avait bien marché et il y avait des fonctions très intéressantes.
     
  31. KOogar
    KOogar WRInaute accro
    Inscrit:
    16 Novembre 2004
    Messages:
    4 643
    J'aime reçus:
    81
    >> c'est juste que sur les forums de developpez.net ca avait bien marché et il y avait des fonctions très intéressantes.

    re dslé, l'idée est en trés interressante et je compte suivre ce thread !! Je ne savais qu'il y aurait un sommaire mise a jour régulièrement. Le problème pour toi sera de voir quel bout de code tu crédites. Car deja celui ci est obsolète : -https://www.webrankinfo.com/forum/t/morceaux-de-scripts-php-bien-utiles-participez.58093/#558662
    puisqu'il peut s'ecrire en 1 ligne comme je l'indique precedement. Je te laisse juge et te souhaite bonne route !!
     
  32. sunflower
    sunflower WRInaute discret
    Inscrit:
    5 Janvier 2006
    Messages:
    111
    J'aime reçus:
    0
    créer et forcer le download d'un iso (suppose serveur linux)

    Ca présuppose la création d'une arborescence de fichiers qui servira à la création de l'iso sur le filesystem. Dans mon cas les données sont majoritairement des symlink() dans le répertoire temporaire où l'iso est contruit, pour éviter des copies de fichiers (répertoire temporaire créé unique, avec un partie sortant de uniqid() par exemple, du genre $nomCD = uniqid('moncd_tmp_')).

    Il faut mkisofs sur le serveur. Le CD créé est hybride rockridge/joliet, les éléments AUTORUN.inf et .exe sont cachés sous macOS et les applis mac (index.macapp et Demarrer - pour exemple) sont cachés sous windows

    $nom_joli est le nom sous lequel l'image apparaîtra lors du download

    Code:
    function creerEtTélechargerIso($nomCD,$nom_joli){
              exec('mkisofs -f -J -R -hfs -hide-hfs AUTORUN.INF -hide-hfs "*.exe" -hide-joliet Demarrer -hide-joliet index.macapp -allow-leading-dots -o /tmp/'.$nomCD.'.iso /tmp/'.$nomCD);
    
              header('Content-Type: application/force-download');
              header("Content-Disposition: filename=".str_replace(" ","_",$nom_joli).".iso;");
              header("Content-Transfer-Encoding: binary");
              header("Content-Length: ".filesize("/var/www/tmp/".$nomCD.".iso"));
              readfile("/tmp/".$nomCD.".iso");
              exec("rm -f /tmp/".$nomCD.".iso");
              exec("rm -rf /tmp/".$nomCD);
    }
    
    Ca marche de la même manière pour créer des zip à télécharger directement (changer les ".iso" en ".zip", remplacer mkisofs par un truc comme "cd /tmp/$nomCD; zip -rq 0 ../$nomCD.zip *", penser à l'option "déréférencer les symlinks" si ce n'est pas le comportement par défaut.
    (et si c'est gros, penser à set_time_limit(0); pour ne pas échouer du fait du dépassement le temps max d'exécution php)
     
  33. mowmow
    mowmow WRInaute impliqué
    Inscrit:
    3 Novembre 2004
    Messages:
    865
    J'aime reçus:
    0
    Autant pour moi, je n'avais pas vraiment fait attention à cette fonction.
     
  34. a455bcd9
    a455bcd9 Nouveau WRInaute
    Inscrit:
    14 Janvier 2007
    Messages:
    3
    J'aime reçus:
    0
    Bonjour, j'ai essayé d'utiliser ce code mais voilà le résultat (en bas de page) :
    http://www.virtual-games.org/v3/tests.php?id=1
    Code:
    Fatal error: Cannot redeclare convert_for_uri() (previously declared in /home.10.3/virtualg/www/v3/tests.php:46) in /home.10.3/virtualg/www/v3/tests.php on line 46
    Voici mon code complet :
    Code:
    <?php require("config.inc.php");
    mysql_connect($host,$username,$password);
    mysql_select_db($bdd_name);
    
    $id = $_GET['id'];
    $sql = mysql_query("SELECT * FROM images LEFT JOIN jeux ON images.id_jeu = jeux.id WHERE id_article = '$id' AND type = 'vg'");
    
    while($donnees = mysql_fetch_array($sql))
    {
    
    $support = $donnees['support'];
    
    function convert_for_uri($support) {
      // Définition du séparateur
      define("SEPARATOR", "-");
    
      $tofind = "àáâãäåòóôõöøèéêëçìíîïùúûüÿñ"; // Lettre accentuées
      $replac = "aaaaaaooooooeeeeciiiiuuuuyn"; // Equivalant non accentué
    
      // Mise en minuscule + suppression des lettres accentuées par leur équivalant non accentué
      $support = strtr(strtolower($support),$tofind,$replac);
    
      // Remplacement de caractère non alphanumérique par un séparateur
      $support = ereg_replace("[^a-z0-9]", SEPARATOR, $support);
    
      // Suppression des doubles séparateurs
      while (strstr($support, SEPARATOR . SEPARATOR))
        $support = str_replace(SEPARATOR . SEPARATOR, SEPARATOR, $support);
    
      // Retour avec suppression d’un possible séparateur en fin de chaîne
      return(ereg_replace(SEPARATOR . "$", "", $support));
    }
    
    ?> 
    <img src="images_jeux/<?php echo $support ?>/<?php echo $donnees['id_jeu'] ?>/<?php echo $donnees['id_image'] ?>.gif" />
    <?php } mysql_close(); ?>
    Le mot qu'il faut mettre en force est : Xbox 360 .

    Avez vous une idée du problème ?

    Merci beaucoup, a455bcd9
     
  35. magic corp.
    magic corp. WRInaute occasionnel
    Inscrit:
    17 Juin 2004
    Messages:
    395
    J'aime reçus:
    0
    Je pense que ça vien du faite que tu déclares la fonction dans une boucle ...

    Est ce mieux comme ça :
    Code:
    <?php require("config.inc.php");
    
    function convert_for_uri($support) {
      // Définition du séparateur
      define("SEPARATOR", "-");
    
      $tofind = "àáâãäåòóôõöøèéêëçìíîïùúûüÿñ"; // Lettre accentuées
      $replac = "aaaaaaooooooeeeeciiiiuuuuyn"; // Equivalant non accentué
    
      // Mise en minuscule + suppression des lettres accentuées par leur équivalant non accentué
      $support = strtr(strtolower($support),$tofind,$replac);
    
      // Remplacement de caractère non alphanumérique par un séparateur
      $support = ereg_replace("[^a-z0-9]", SEPARATOR, $support);
    
      // Suppression des doubles séparateurs
      while (strstr($support, SEPARATOR . SEPARATOR))
        $support = str_replace(SEPARATOR . SEPARATOR, SEPARATOR, $support);
    
      // Retour avec suppression d’un possible séparateur en fin de chaîne
      return(ereg_replace(SEPARATOR . "$", "", $support));
    }
    
    mysql_connect($host,$username,$password);
    mysql_select_db($bdd_name);
    
    $id = $_GET['id'];
    $sql = mysql_query("SELECT * FROM images LEFT JOIN jeux ON images.id_jeu = jeux.id WHERE id_article = '$id' AND type = 'vg'");
    
    while($donnees = mysql_fetch_array($sql))
    {
    
    $support = $donnees['support'];
    
    ?>
    <img src="images_jeux/<?php echo $support ?>/<?php echo $donnees['id_jeu'] ?>/<?php echo $donnees['id_image'] ?>.gif" />
    <?php } mysql_close(); ?>
     
  36. a455bcd9
    a455bcd9 Nouveau WRInaute
    Inscrit:
    14 Janvier 2007
    Messages:
    3
    J'aime reçus:
    0
    Bonjour, merci d'avoir répondu aussi vite !

    Il n'y a plus le message d'erreur, mais la fonction ne fonctionne pas, c'est à dire que le mot Xbox 360 n'est pas transformé, et il reste comme il est.

    a455bcd9
     
  37. magic corp.
    magic corp. WRInaute occasionnel
    Inscrit:
    17 Juin 2004
    Messages:
    395
    J'aime reçus:
    0
    Pour ça il faut utiliser la fonction et pas uniquement la déclarer.
    Code:
    ...
    while($donnees = mysql_fetch_array($sql))
    {
    
    $support = convert_for_uri($donnees['support']);
    
    ?>
    ...
    Ou
    Code:
    while($donnees = mysql_fetch_array($sql))
    {
      echo('<img src="images_jeux/' . convert_for_uri($donnees['support']) . '/' . $donnees['id_jeu'] . '/' . $donnees['id_image'] . '.gif" />');
    } 
    mysql_close(); ?>
     
  38. a455bcd9
    a455bcd9 Nouveau WRInaute
    Inscrit:
    14 Janvier 2007
    Messages:
    3
    J'aime reçus:
    0
    Ha ok, je savais pas du tout...

    Bein merci pour ce très bon code, ça fonctionne parfaitement !
     
  39. fablezouave
    fablezouave WRInaute discret
    Inscrit:
    20 Décembre 2006
    Messages:
    106
    J'aime reçus:
    0
    salut

    Pour ma part, je pense que ce thread devrait être purement et simplement supprimé!

    95% (j'ai pas osé dire 100% ...il y en a un de bien je crois) des codes proposés ne valent rien et ce, pour différentes raisons :

    * Utilisation de fonctions obsolètes
    * Optimisation nulle : certains codes de dix lignes s'ecrivent en une seule
    * le pire : certains contiennent des trous de sécurité

    Et j'en passe et des meilleurs ....

    Je sais que je vais pas me faire que des potes sur ce coup là, mais donner de mauvais codes à des débutants (ou pas, j'ai même vu un "spécialiste" utiliser eregi_replace ...) n'est pas la bonne solution.
    Certes, wai, ça marche (et encore peut-être pas tous) ... après on s'étonne sur les forums spécialisés dans le langage PHP de voir de telles inepties .... pff

    efin bref, amusez-vous bien ...

    fab
     
  40. marion17
    marion17 WRInaute occasionnel
    Inscrit:
    11 Novembre 2006
    Messages:
    412
    J'aime reçus:
    0
  41. gabriel_f
    gabriel_f Nouveau WRInaute
    Inscrit:
    12 Janvier 2007
    Messages:
    18
    J'aime reçus:
    0
    un homme charmant sous tout rapports.....

    Heureusement que le titre du thread est "bouts de code ultra optimisés super secure de la mort pour se palucher sur du php 7.4 rc3" et pas "bouts de code utiles"

    désolé du freepost, mais la ca me grattait
     
  42. fablezouave
    fablezouave WRInaute discret
    Inscrit:
    20 Décembre 2006
    Messages:
    106
    J'aime reçus:
    0
    Tout à fait d'accord avec toi. C'est juste que j'en vois tellement passer tous les jours avec des "aye aye aye mon site s'est fait hacké" , "pourquoi ma page met trente minutes à se charger ?" .... après, vous faites bien ce que vous voulez.

    fab
     
  43. gabriel_f
    gabriel_f Nouveau WRInaute
    Inscrit:
    12 Janvier 2007
    Messages:
    18
    J'aime reçus:
    0
    ok, je vois ton point de vue, seulement reconnait que cetait un peu brutal comme maniere de l'exposer ;)

    bref, parenthèse close.
     
  44. bigs32
    bigs32 WRInaute occasionnel
    Inscrit:
    8 Mai 2006
    Messages:
    438
    J'aime reçus:
    0
    Tres bonne comme idée .voici ma petite contribution
    Code:
     * Enlève les accents
     * 
     * @return string
     */
    function sansaccent($chaine)
    {
       return strtr($chaine,
          'àâäåãáÂÄÀÅÃÁæÆçÇéèêëÉÊËÈïîìíÏÎÌÍñÑöôóòõÓÔÖÒÕùûüúÜÛÙÚÿ',
          'aaaaaaaaaaaaaacceeeeeeeeiiiiiiiinnoooooooooouuuuuuuuy');
    }

    edit dd32 : ajout bbcode
     
  45. Audiofeeline
    Audiofeeline WRInaute accro
    Inscrit:
    20 Octobre 2005
    Messages:
    4 172
    J'aime reçus:
    2
    Un explorateur de fichier parfois bien pratique :

    Code:
    <?
    //Explorer PHP By Scorpion
    function present($chaine,$mot,$sep)
    {
        $tab=split($sep,$chaine);
        $rep=FALSE;
        for ($j=0;$j<count($tab);$j++)
        {
            if ($tab[$j]==$mot) {$rep=TRUE;break;}
        }
        return $rep;
    }
    function affperm($fichier)
    {
        $perm=fileperms($fichier);
        $nbr1=substr($perm,-1,1);
        return(true);
    }
    function affperm2($fichier)
    {
        $perm=fileperms($fichier);
        $nbr1=substr($perm,-1,1);
        $r="-";$w="-";$x="-";
        if ($nbr1>=6 and $nbr1<=9)
            $r="r";
        if ($nbr1==4 or $nbr1==5 or $nbr1==8 or $nbr1==9)
            $w="w";
        if ($nbr1==3 or $nbr1==5 or $nbr1==7 or $nbr1==9)
            $x="x";
        return $r." ".$w." ".$x;
    }
    function affdate($fichier)
    {
        $datef=filemtime("$fichier");
        if (date("d/m/Y",$datef)==date("d/m/Y",time()))
        {
            $datef="Aujourd'hui à".date(" H:i:s",$datef);
        }
        else
        {
            $datef=date("d/m/Y à H:i:s",$datef);
        }
        return $datef;
    }
    function afftaille($t)
    {
        if ($t>=10000 and $t<1000000)
        {
            $t=(int)($t/1000);
            $tlib="$t Ko";
        }
        else if ($t>1000000 and $t<1000000000)
        {
            $t=(int)($t/10000);
            $t=$t/100;
            $tlib="$t Mo";
        }
        else if ($t>1000000000)
        {
            $t=(int)($t/10000000);
            $t=$t/100;
            $tlib="$t Go";
        }
        else
        {
            $tlib="$t Bytes";
        }
        return $tlib;
    }
    function autoinstall($rep)
    {
        @copy("index.php",$rep."/index.php");
    }
    $tab_ext=array(
            array("PHP","#006699","Fichier PHP"),
            array("PHPS","red","Code source"),
            array("HTM,HTML","#00219A","Fichier HTML"),
            array("TXT","#000000","Fichier Texte"),
            array("DOC","#0066FF","Fichier Word"),
            array("EXE","#6600EE","Fichier exécutable"),
            array("ZIP,RAR,TAR,GZ,TGZ","#FF6600","Fichier compressé"),
            array("JPG,JPEG,GIF,BMP","#00BBFF","Image"),
            array("MPG,MPEG,AVI","#008000","Vidéo"));
    if ($action=="install" and !empty($rep))
    {
        if (!@copy("index.php",$rep."/index.php"))
        {
            echo "<FONT size=1 face=verdana color=red><B>ATTENTION</B> : ERREUR DANS L'INSTALLATION DU SCRIPT !! VERIFIEZ VOS DROITS SUR LES FICHIERS...</FONT><BR><BR>";
        }
    }
    echo "<HTML><HEAD><STYLE>A {TEXT-DECORATION: none}A:visited {TEXT-DECORATION: none}A:hover {TEXT-DECORATION: underline}TD{FONT-FAMILY:verdana;FONT-SIZE:10}BODY{FONT-FAMILY:verdana;FONT-SIZE:10}</STYLE><TITLE>Explorer PHP</TITLE></HEAD><BODY>";
    $mydir=dir("."); // récupère le répertoire du script
    $mydir->read();
    $rep=""; //variable contenant les répertoires
    $fic=""; //variable contenant les fichiers
    $rep=$rep."<TR height=20><TD><FONT FACE=wingdings size=4>1</FONT></TD><TD><A HREF=\"..\"><FONT color=green>..</FONT></A></TD><TD>&nbsp;</TD></TR>\n";
    while($entry=$mydir->read()) // on lit chaque fichier ou répertoire jusqu'à ce qu'il n'y en ai plus
    {
        
        if (($entry!="index.php" and substr($entry,0,1)!="."))
        {
            if (filetype($entry)=="dir") // on teste si le nom de fichier est un répertoire ou non
            {
                $perm=fileperms("$entry");
                $nbr1=substr($perm,-1,1);
                $perm=fileperms("$entry/index.php");
                $nbr2=substr($perm,-1,1);
                if (filesize("index.php")!=filesize("$entry/index.php") && affperm("$entry"))
                {
                    $link="<A HREF=\"index.php?action=install&rep=$entry\"><FONT color=#0B163D face=wingdings size=4>:</FONT></A>";
                }
                else
                {
                    $link="<FONT FACE=wingdings size=4 color=red>ý</FONT>";
                }
                if (filesize("index.php")==filesize("$entry/index.php"))
                    $link="";
                $perm=affperm2($entry);
                $rep=$rep."<TR height=20><TD><FONT FACE=wingdings size=4>0</FONT></TD><TD><A HREF=\"$entry/\"><FONT color=green>$entry</FONT></A></TD><TD>$link</TD><TD align=center>N.A</TD><TD>&nbsp;</TD><TD>Répertoire</TD><TD>&nbsp;</TD><TD align=center>$perm</TD><TD>&nbsp;</TD><TD>".affdate($entry)."</TD></TR>\n";
            }
            else
            {
                $tlib=afftaille(filesize($entry)); // convertion de la taille du fichier
                $extention2=substr($entry,-1,1); // prends le dernier caractère (pour voir si fichier est un backup)
                $extention=strtoupper(str_replace(".","",strrchr($entry,".")));
                $couleur="#545A72";
                $description="Fichier $extention";
                for ($i=0;$i<count($tab_ext);$i++)
                {
                    if (present($tab_ext[$i][0],$extention,","))
                    {
                        $couleur=$tab_ext[$i][1];
                        $description=$tab_ext[$i][2];
                        break;
                    }
                }
                if ($extention2=="~")
                {
                    $couleur="#545A72";
                    $description="Fichier Backup";
                }
                $perm="<FONT FACE=wingdings size=4 color=red>ý</FONT>";
                if (is_writable("$entry"))
                {
                    $perm="<FONT FACE=wingdings size=4 color=green>þ</FONT>";
                }
                $perm=affperm2($entry);
                $fic=$fic."<TR height=20><TD align=center><FONT FACE=wingdings size=4 COLOR=$couleur>2</FONT></TD><TD><A HREF=\"$entry\"><FONT COLOR=$couleur>$entry</FONT></A></TD><TD width=20>&nbsp;</TD><TD><FONT COLOR=$couleur> $tlib</FONT></TD><TD width=20>&nbsp;</TD><TD><FONT COLOR=$couleur>$description</FONT></TD><TD width=20>&nbsp;</TD><TD align=center>$perm</TD><TD width=20>&nbsp;</TD><TD><FONT COLOR=$couleur>".affdate($entry)."</FONT></TD></TR>\n";
            }
        }
    }
    $mydir->close();
    echo "<TABLE>";
    echo "<TR><TD colspan=3>&nbsp;</TD><TD align=center>Taille</TD><TD>&nbsp;</TD><TD align=center>Description</TD><TD>&nbsp;</TD><TD align=center>Permissions</TD><TD>&nbsp;</TD><TD align=center>Dernier accès</TD></TR>";
    echo "$rep$fic</TABLE></BODY></HTML>"; // on affiche les répertoires, puis les fichiers.
    $t=afftaille(diskfreespace("/"));
    echo "<BR><BR><P align=center>.: Explorer PHP | Espace disque libre : $t :.";
    ?>
     
  46. La Chaise sauvage
    La Chaise sauvage WRInaute impliqué
    Inscrit:
    11 Avril 2005
    Messages:
    536
    J'aime reçus:
    0
    ah ben non ça c'est dommage, que tu en passes.

    au contraire, à mon avis, un des intérêts de ce post, ça peut être d'attirer l'attention des gens sur les failles/faiblesses/erreurs de leur code, leur permettre de progresser....

    personne ne s'attend à voir naître ici un nouveau Codes-Sources, il s'agit plus de comparer des façons de coder, d'en discuter... et pourquoi pas de corriger le code des autres :wink:
     
  47. Xou
    Xou WRInaute discret
    Inscrit:
    2 Juin 2006
    Messages:
    172
    J'aime reçus:
    0
    Quelques fonctions que je me suis créé, bien souvent en catastrophe et je ne suis pas revenu dessus !

    Ahh ben oui : n'en déplaise à certains... on a pas toujours le temps d'optimiser (dans le monde du travail) lorsque la deadline est courte, surtout quand on est seul sur le projet.

    Mais comme le dit La chaise sauvage: libre à vous de les commenter, je ne vous les donne pas comme étant des perles de code, mais elles m'ont bien dépanné et j'espère qu'elles vous seront utiles. ;)

    Code:
    // Executer un fichier PHP et le placer dans le buffer
    // (sorte de file_get_contents permettant l'execution de php dans le fichier)
    function inc2buffer($file) {
       ob_start();
       include($file);
       $output = ob_get_contents();
       ob_end_clean();
       return $output;
    }
    
    // Obtenir l'extension d'un fichier
    function getExtension($file){
    	$len = strlen($file);
    	$pos = strrpos($file, ".");
    	$type = substr($file, $pos + 1, $len);
    	return strtolower($type);
    }
    
    // crypter une adresse email
    function cryptEmail($mail){
    	$ret_mail="";
    	$len=strlen($mail);
    	for($x=0;$x<$len;$x++){
    		$ord=ord(substr($mail,$x,1));
    		$ret_mail.="&#$ord;";
    	}
    	return $ret_mail;
    }
    
    // Enlever tous les accents
    // Celle là n'est pas de moi mais il me semble l'avoir récupérée sur Nexen dans mes débuts, ça fais un bail que je la traine :)
    function stripAccent($text) {
    	$out = strtr($text,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËéèêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
    	return $out;
    }
    
     
  48. hipopulation
    hipopulation WRInaute occasionnel
    Inscrit:
    28 Juillet 2004
    Messages:
    288
    J'aime reçus:
    0
    A propos de la fonction debug de lachaisesauvage....

    Petite amelioration (utilisation de display (none/block) a la place de visibility :

    Code:
    function debug($obj,$visible=0) { 
       $v = ($visible==1) ?  'block' : 'none'; 
       echo '<a href="#" onclick="document.getElementById(\'debug\').style.display=\'block\'" id="switch">debug</a> 
       <pre id="debug" style="visibility:'.$v.'"><a href="#" onclick="document.getElementById(\'debug\').style.display=\'none\'">[X]</a> 
       <code>'; 
       print_r($obj); 
       echo '</code></pre>'; 
    }
     
  49. david96
    david96 WRInaute passionné
    Inscrit:
    28 Août 2005
    Messages:
    1 204
    J'aime reçus:
    0
    Select dynamique : table SQL

    Pour construire un <select> dynamique provenant de n'importe quelle table (client, fournisseur, département, pays, critère, rubrique etc...) de votre base de données.

    Voilà comment je fais

    Dans une fichier séparé, afin d'appeler ensuite ces fonctions par un require_once();


    Code:
    			function selectTable($nomtable, $where = NULL, $order = NULL)
    			{
    				$sql = "SELECT * FROM $nomtable";
    				if ( $where !== NULL ) $sql .= " WHERE $where";
    				if ($order !== NULL)$sql.=" ORDER BY $order ";
    				
    				$query=mysql_query($sql);
    				
    				$ret = array();
    				while ( $donnee = mysql_fetch_assoc($query)) 
    				{
    					$ret[] = $donnee;
    				}
    				return $ret;
    			}
    			
    			function sqlSelect($sqlDonnee, $nomCol, $valCol)
    			{
    				for($i = 0 ; $i<count($sqlDonnee) ; $i++) 
    				{
    					$selectDonee["name"][$i] = $sqlDonnee[$i][$nomCol];
    					$selectDonee["value"][$i] = $sqlDonnee[$i][$valCol];
    				}
    			return $selectDonee;
    			}
    			
    			function htmlSelect($nom, $options, $selected = NULL, $css = NULL)
    			{
    				$select  = "<select name=\"".htmlentities($nom)."\"";
    				if ( $css !== NULL )
    					$select .= " $css>";
    				else
    					$select .= ">";
    
    				for($i = 0 ; $i<count($options["name"]) ; $i++) 
    				{
    					if ( $selected !== NULL && $selected == $options["value"][$i] )
    						$select .= "<option value=\"".$options["value"][$i]."\" selected=\"selected\">".$options["name"][$i]."</option>\n";
    					else
    						$select .= "<option value=\"".$options["value"][$i]."\">".$options["name"][$i]."</option>\n";
    				}
    				$select .= "</select>\n";
    
    				return $select;
    			}
    
    Et voilà c'est tout bête, bien sûr j'ai omis les conditions d'erreur afin d'éclaircir le script...

    Ensuite on peut construire nos <select> désirés n'importe où et ça prend seulement 3 lignes de code :-D!
    exemple, je veux un <select> de ma table pays avec par défaut la France en "selected" qui est l'id 72 dans la base de données :

    Code:
    			
    			$paysSelect = isset($_POST["pays"]) ? ($_POST["pays"]) : ("72");
    			
    			$selectPays=selectTable("pays");
    			$pays=sqlSelect($selectPays,"nom","id");			
    			echo htmlSelect("id", $pays, $paysSelect); // on construit notre <select>

    l'avantage, c'est que ce <select> est dynamique, c'est à dire que si on ajoute, supprime etc... un champ, le tout sera automatiquement mis à jour sur vos pages , elle n'est pas belle la vie :-D
     
  50. bistory
    bistory WRInaute discret
    Inscrit:
    17 Juin 2006
    Messages:
    77
    J'aime reçus:
    0
    Voici le mien, il permet de formatter une date timestamp, anglaise avec les minutes et secondes ou anglaise sans heures vers le format français :
    Code:
    function date_formatter($date)
    {
    if($date == '0000-00-00') return '00/00/0000';
    elseif($date == '0000-00-00 00:00:00') return '00/00/0000 à 00h00';
    
    if(($len_date=strlen($date)) == 10)
    {
    	return date('d/m/Y',strtotime($date));
    }
    elseif($len_date == 19)
    {
    	return date('d/m/Y à H\hi',strtotime($date));
    }
    
    return 0;
    }
     
  51. jon albert
    jon albert Nouveau WRInaute
    Inscrit:
    29 Août 2016
    Messages:
    1
    J'aime reçus:
    0
    Re: créer et forcer le download d'un iso (suppose serveur linux)

    Est-ce que ça marche
     
Chargement...
Similar Threads - Morceaux scripts PHP Forum Date
Morceaux de phrases répétés: autorisé ou pas? Référencement Google 24 Avril 2005
Sites de scripts PHP, jQuery, Ajax, etc. Le café de WebRankInfo 20 Mars 2022
Scripts de réseau social Le café de WebRankInfo 13 Décembre 2019
Comment cacher des scripts Javascript distants sous Nginx ? Développement d'un site Web ou d'une appli mobile 29 Octobre 2017
Scripts communs à 3 sites Développement d'un site Web ou d'une appli mobile 17 Janvier 2016
Finalement, quelle est la différence entre ces deux scripts ? Développement d'un site Web ou d'une appli mobile 29 Septembre 2015
scripts social network et performances Administration d'un site Web 4 Mai 2015
Quel plateforme utiliser pour partager le développement de scripts ? Développement d'un site Web ou d'une appli mobile 12 Février 2015
Correction du code des scripts bloqués Débuter en référencement 24 Novembre 2014
Scripts payant Développement d'un site Web ou d'une appli mobile 7 Août 2014
liens prèsent dans les scripts Débuter en référencement 8 Juillet 2014
utilisation des scripts sous licences MIT, BSD, et GPL. Débuter en référencement 2 Août 2013
Retour d'expérience et scripts PHP à éviter (OpenX et CaptchaSecurityImages.php) Développement d'un site Web ou d'une appli mobile 18 Avril 2013
internet explorer restricted this page from running scripts or activex controls Développement d'un site Web ou d'une appli mobile 27 Octobre 2012
Positionnement des scripts JS, vitesse et référencement Rédaction web et référencement 16 Janvier 2012
Templates et scripts Demandes d'avis et de conseils sur vos sites 7 Mai 2011
[Page Speed] optimisation des images des scripts des css Développement d'un site Web ou d'une appli mobile 11 Janvier 2011
Ras le cul des scripts kindies ... Demandes d'avis et de conseils sur vos sites 1 Octobre 2010
Blog développement web, design, scripts jQuery & PHP, référencement . Demandes d'avis et de conseils sur vos sites 29 Août 2010
Les scripts PHP qui génèrent des pages HTML (virtuelles) Débuter en référencement 14 Juillet 2010