phpInfo.netLes ArchivesLes éléPHPants

  
  Accueil
  Trucs & Astuces
  Scripts
  Regex
  Annuaire
  Articles

.
      
 Astuces   PHP  Système


Compression des fichiers HTML[19-06-2002]
Posté par soli

C'est tout simple et super pratique, il suffit de placer cette ligne de code en tête de vos pages !

<?
// et voilà !
ob_start("ob_gzhandler");
?>
<html>
<head>
<title> Titre </title>
</head>

<body>

...

</body>
</html>

Tout est géré automatiquement par votre serveur et le client !

Avec ca, vous avez un gain de rapidité notable ;)

[6 commentaires]

Afficher toutes les variables globales[19-01-2002]

Votre hébergeur ne vous dit pas toujours tout dans le phpinfo().
Voici un petit script qui peut combler ses oublis :

<?

// récupération des infos
ob_start();
print_r($GLOBALS);
$buffer = ob_get_contents();
ob_end_clean();

// mise en forme
$buffer = preg_replace("/([)(.*?)(])/", "<FONT COLOR=#0000FF>[\2]</FONT>", $buffer);

// affichage
echo "<PRE>";
echo
$buffer;
echo
"</PRE>";

?>


Simplifier le débuggage[06-01-2002]
Posté par Frederic

Le problème majeur en PHP est le débuggage (je ne vous apprends rien).
Mais lors de problème de manipulation de tableaux multi-dimensionnels, d'objets ou de mélange
des 2, il est très pratique d'afficher la structure d'une variable.

Un petit truc dont on ne se passe plus, consiste à afficher la variable qui pose problème avec la fonction print_r().

Méthode:
  1. Afficher votre variable dans la page.
    print_r( $maVariable );
  2. Faites un "view source" de la page html genérée.
Et là! Ô surprise! La structure est affichée et joliement indentée.

[1 commentaire]

Créer ses propres variables d'environnement[17-11-2001]
Posté par Mickaël

Pour cela dans le php.ini :

; Mes Variables d'environnement
$include_lib_path = /share/lib/
$include_class_path = /share/class/

Dans votre script, vous récupérez votre variable à l'aide de la fonction get_cfg_var() :

<?
$include_lib_path
= get_cfg_var("include_lib_path");
$include_class_path = get_cfg_var("include_class_path");
?>


[1 commentaire]

Du PHP en ligne de commande sous Linux[06-10-2001]
Posté par Frederic Trudeau

Pré-requis :
  • Linux, Apache, PHP
  • Lynx avec l'option d'affichage de la source
  1. Dans le repertoire 'htdocs' d'Apache (habituellement /usr/local/infosys/htdocs/), créez le répertoire 'tmp', avec
    accès complet (chmod 777 tmp).
  2. Copiez et collez le code suivant dans le fichier 'runphp', dans le répertoire /usr/local/bin.

    #!/bin/sh

    cat $1 | awk '{if (s == 1) print; else s=1;}' > /usr/local/infosys/htdocs/tmp/scriptme.$$.php
    lynx --source http://127.0.0.1/tmp/scriptme.$$.php
    rm -f /usr/local/infosys/htdocs/tmp/scriptme.$$.php
  3. Ensuite, mettre ce script exécutable ;
    chmod +x runphp
  4. Ecrivez ensuite un code PHP simple, afin de tester, en prenant bien soin de mettre la ligne suivante à la toute première ligne de votre fichier :

    #!/usr/local/bin/runphp
  5. Testez le tout en tapant, au prompt, la commande : /usr/local/bin/runphp fichier.php


Passer a Php 4.1.0 sans encombres ...[18-08-2001]
Posté par Tom

Voici un petit code qui permet de se passer de modifier toutes ses sources, à 'cause' du $_GET et du register_globals à Off par défaut .

<?
function global_convert()
{
    global
$HTTP_GET_VARS, $HTTP_POST_VARS;

    if(!empty(
$_GET))
        
$HTTP_GET_VARS = $_GET;

    while( list(
$k, $v) = each($HTTP_GET_VARS) )
    {
        global $
$k;
        if(empty($
$k))
            $
$k = $v;
    }

    if(!empty(
$_POST))
        
$HTTP_POST_VARS = $_POST;

    while( list(
$k, $v) = each($HTTP_POST_VARS) )
    {
        global $
$k;
        if(empty($
$k))
            $
$k = $v;
    }
}

global_convert();

?>

J'ai dû utiliser le if(!empty ...) car each($_GET ? $HTTP_GET_VARS : $_GET) ne voulait pas marcher, problème de références apparemment .
Je ne pouvais pas non plus définir de var, pour des problèmes évidents de var deja définie . Et pas de boucle sur le while (pour éviter de le répéter pour les vars post) pour les mêmes raisons .

Hope it helps .. (and works :o)

[1 commentaire]

Utiliser PHP pour des traitements Batch[18-08-2001]

Il est possible d'utiliser PHP pour exécuter des traitements 'Batch' sous Linux ou sous Windows.
Pour cela il faut disposer d'une version exécutable (ou CGI pour les linuxiens), et lancer la commande suivante :

    php -q test.php PARAM1 PARAM2
Avec test.php :

<?
for ($cpt = 0; $cpt < $HTTP_SERVER_VARS['argc']; $cpt++)
{
    echo
"\$HTTP_SERVER_VARS['argv'][$cpt] = ";
    echo
$HTTP_SERVER_VARS['argv'][$cpt]."n";
}
?>

Cet exemple montre d'ailleurs comment récupérer les différents paramètres passés sur la ligne de commande.
Le fichier test.php pourrait s'appeler test, l'extension n'a pas d'importance.

    $HTTP_SERVER_VARS['argv'][0] = test.php    
    $HTTP_SERVER_VARS['argv'][1] = PARAM1
    $HTTP_SERVER_VARS['argv'][2] = PARAM2

Sous Linux, on peut aussi créer le fichier test.php suivant et l'exécuter directement (en ayant mis les droits suffisants) :

#!/usr/local/bin/php -q
<?php
for ($cpt = 0; $cpt < $HTTP_SERVER_VARS['argc']; $cpt++)
{
    echo
"\$HTTP_SERVER_VARS['argv'][$cpt] = ";
    echo
$HTTP_SERVER_VARS['argv'][$cpt]."\n";
}
?>


[2 commentaires]

Support FTP et PHP3/PHP4[11-08-2001]

Pour ajouter le support FTP lors de la compilation de PHP, l'option de configuration n'est pas la même suivant que vous compilez une version PHP3 ou une version PHP4 !
PHP3: --with-ftp
PHP4: --enable-ftp


Afficher le code source d'un fichier PHP[12-06-2001]
Posté par Dinesh

Le script ci-dessous retourne le code source d'un fichier PHP.

Il remplace directement les caractères spéciaux (avec le code de Perrich, le texte ne s'affiche pas car il contient toujours des caractères spéciaux).

Ce script retourne aussi des erreurs si le fichier n'existe pas, ou si les permissions ne sont pas correctes.

<?
// Cette fonction affiche le code source
// Ne changez pas le nom de la fonction sinon on pourrait
// confondre avec PHP4
function display_source($file)
  {
  if(!
file_exists($file))
    {
    
$error = "FATAL Error: The file $file doesn't exists.";
    echo
$error;
    }
  else
    {
    
$error = "permission_denied";
    
$fp = @fopen("$file","r");
    if(!
$fp)
      {
      
$error  = "FATAL Error: The permissions of the file $file";
      
$error .= " are not good. PHP can't read the file.";
      echo
$error;     
      }
    else
      {
      while(!
feof($fp))
        {
        
$lignes .= fgets($fp, 4096);
        
$lignes = eregi_replace("<","&lt;",$lignes);
        
$lignes = eregi_replace(">","&gt;",$lignes);
        }
      
$lignes = eregi_replace("rn","<br>",$lignes);
      
$lignes = eregi_replace("n","<br>",$lignes);
      echo
"$lignes";
      }
    }
  }
?>

Vous pouvez le mettre au-dessus de votre script, ou en faire un fichier complet et l'inclure dans votre script avec un require().

Exemple :

<?
require("functions.mod.php");
/*
On suppose que vous avez mis le contenu du script ci-dessus
dans le fichier functions.mod.php et que votre hébergeur
exécute les fichiers .php
*/
display_source("fichier.php"); // Affiche la source de fichier.php
$source = display_source("fichier.php"); // enregistre le code source dans $source.
?>


[3 commentaires]

Simuler les magic_quote_gpc à OFF[12-02-2001]

Voici un petit morceau de code à placer en début de chacun de vos scripts et qui permettra de simuler magic_quote_gpc à OFF, c'est à dire aucun \ ajouté devant les caractères spéciaux saisis dans les champs de formulaires.

<?
if ((get_magic_quotes_gpc() == 1)
{
    switch (
$REQUEST_METHOD)
    {
        case
"POST":
        while (list (
$key, $val) = each ($HTTP_POST_VARS))
        {
            $
$key = stripslashes($val);
        }
        break;

        case
"GET":
        while (list (
$key, $val) = each ($HTTP_GET_VARS))
        {
            $
$key = stripslashes($val);
        }
        break;
    }
}
?>


Exécuter des .php au lieu de .php3/4[02-02-2001]
Posté par gsnt

Pour ne pas avoir à renommer tous les fichiers .php si le serveur n'admet que les extensions .php3 ou .php4, ajoutez à la racine du site un fichier .htaccess contenant la ligne suivante par exemple :

AddType application/x-httpd-php4 .php

Certains serveurs l'acceptent ...

Temps maximum d'exécution d'un script ?[14-01-2001]

Pour connaître le temps d'exécution maximum que peut prendre un script il suffit d'utiliser la fonction get_cfg_var() avec le paramètre correspondant du fichier de configuration : max_execution_time.

<?
echo get_cfg_var("max_execution_time");
?>

Plus généralement, cette fonction peut s'appeler avec n'importe quelle option du fichier de configuration.
Et pour connaître le fichier ini utilisé par PHP :

<?
echo get_cfg_var("cfg_file_path");
?>


Redirection de la réponse PHP vers un fichier HTML[13-01-2001]
Posté par JD

Si vous voulez rediriger le résultat de l'exécution d'un script PHP vers une page HTML standard consultable indépendamment :

<?
  
// début
  
ob_start();

  
//le contenu de votre script ci-dessous
  
echo "Bonjour test manip sur le buffer";
  
  
// fin de votre script
  
$result=ob_get_contents();
  
  
ob_end_clean();
  
  if ( !
$htmlfile=fopen("test.html","w") ) {
      echo
"error openong file";
  } else {
     
fputs($htmlfile,$result);
     
header("Location: test.html");
  }
?>


Exécuter un script PHP périodiquement[13-09-2000]

Vu sur le forum de phpInfo.net un moyen simple d'exécuter un script PHP sur un serveur dont on n'est pas administrateur.

Il suffit de créer un cron sur un autre serveur (sur lequel on a bien sûr cette fois-ci un minimum de droits), qui va aller chercher le script sur le 1er serveur :

0 0 * * * wget http://www.le-site.net/le-script.php

wget est un outil permettant de récupérer des pages web. Il permet dans le cas présent d'exécuter le script tous les jours à minuit.

Intercepter les "sorties écran"[20-08-2000]

Il est maintenant possible avec PHP4 de récupérer les sorties écrans dans une variable en redirigeant les affichages vers un buffer.

<?
  
// Début de la mise en buffer
  
ob_start();

  
// les sorties vont dans le buffer
  
echo "Bonjour Bob !";

  
// récupération du buffer
  
$buffer = ob_get_contents();

  
// RAZ du buffer
  
ob_end_clean();
  
  print
$buffer;
?>


Apostrophes inversées[24-05-2000]

Une chaîne placée entre des apostrophes inversées (back ticks) sera exécutée par le système et la sortie sera renvoyée par PHP:

<?
  $commande
= `dir c:\temp`;
  echo
$commande;
?>


<?
  $commande
= `ls -l /etc`;
  echo
$commande;
?>


Masquer les messages d'erreurs PHP[19-05-2000]

Il existe 2 méthodes pour que les messages d'erreurs générés par l'interpréteur PHP ne s'affichent plus :

1. Placer un @ devant la fonction pouvant provoquer une erreur.
  $connecte= @mysql_connect($cfgHote, $cfgUser, $cfgPass);
2. Utiliser la fonction error_reporting(int level) qui permet de désactiver partiellement ou totalement l'affichage des erreurs. level peut prendre les valeurs E_NOTICE, E_WARNING, E_ERROR, E_PARSE, E_CORE_ERROR et E_CORE_WARNING.

Synseo