FAQ PHPConsultez toutes les FAQ

Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 29 juillet 2013 

 
OuvrirSommaireGénéralités

PHP fournit de nombreuses fonctions d'affichage du contenu de fichier, variables, tableau... qui malheureusement affichent directement à l'écran le contenu utile. Or dans certains cas, il serait très utile de pouvoir récupérer l'information dans une variable.

Pour cela, il reste à rediriger le flux de sortie standard vers un buffer que l'on pourra vider dans une variable de typeString.

PHP offre les moyens d'une telle redirection :

Exemple
Sélectionnez
// bufferisation de la sortie standard
ob_start();
print_r($_GET);
echo ";\n";
print_r($_POST);
$contents = ob_get_contents();
ob_end_clean();
// fin buff
Mis à jour le 6 août 2008  par Cyberzoide

Pour générer un identifiant unique, il vous faut uriliser la fucntion uniqid(). Cela créera un identifiant unique de 13 caractères.

 
Sélectionnez
$id_unique = uniqid();
 
echo $id_unique;//4d6f4e84d6dd2

Vous pouvez préfixer votre identifiant.

 
Sélectionnez
$id_unique = uniqid('Mon_Unique_id_');
 
echo $id_unique;//Mon_Unique_id_4d6f4ee3e9492

Vous pouvez passer de 13 à 23 caractères.

 
Sélectionnez
$id_unique = uniqid(NULL,true);
 
echo $id_unique;//4d6f4f608ff658.68812147

$id_unique = uniqid('mon_id_a_moi',true);
 
echo $id_unique;//mon_id_a_moi4d6f4f913361c6.01483455

Pour augmenter le degré d'unicité de la question, on peut utiliser les fonctions de hashage MD5 ou SHA1, SHA1 produisant des empreintes plus grandes. On peut aussi utiliser la fonction mt_rand() pour changer la graine utilisée.

 
Sélectionnez
echo md5( uniqid() );
echo uniqid( mt_rand() );
echo md5( uniqid( mt_rand() ) );
echo sha1( uniqid( mt_rand() ) );
Mis à jour le 8 mars 2011  par Gérard Ernaelsten, Thes32, dourouc05

La nouvelle version de PHP est configurée par défaut pour afficher toutes les erreurs (même les "notices" (avertissement)) et avec le paramètre "register_globals" à off.
En ce qui concerne register_globals, cela signifie que vous ne pouvez plus accéder directement aux variables de session, postées par formulaire ou même venant de la barre d'adresse. Il vous faudra passer par des tableaux "superglobaux". Voici les différent tableaux :

Pour les sessions : $_SESSION['ma_variable'] au lieu de $ma_variable
Pour la barre d'adresse : $_GET['ma_variable'] au lieu de $ma_variable
Pour les variable postées par formulaire : $_POST['ma_variable'] au lieu de $ma_variable
Pour les cookies : $_COOKIE['ma_variable'] au lieu de $ma_variable
Pour les fichiers envoyés par formulaire : $_FILES['ma_variable'] au lieu de $ma_variable
Tableau regroupant toutes les données envoyées (barre d'adresse, formulaire et cookie) : $_REQUEST['ma_variable'] au lieu de $ma_variable
Les informations de serveur : $_SERVER['ma_variable'] au lieu de $ma_variable
Les informations d'environnement : $_ENV['ma_variable'] au lieu de $ma_variable

Pour l'affichage des "notices", il est conseillé de le laisser, car il vous informe des trous de sécurité de votre code comme les variable non déclarées ou les index de tableau non définis.
Par exemple pour tester l'existence d'une variable, utiliser if(isset($variable)) plutèt que if($variable) ou if(!empty($variable)).
De même, mettez des guillemets ou apostrophes dans les index non numériques des tableaux.
Ex : $tab["index"] à la place de $tab[index]

Voilà, je rappelle qu'il faut laisser ces paramètres tels quels sous peine d'avoir un code peu sécurisé et donc plus facilement vulnérable. Même si l'application n'est pas destinée au grand public (sur le web), il ne coûte rien de prendre l'habitude de programmer "propre" pour éviter les problèmes à venir.

Créé le 12 février 2004  par Nonothehobbit

Lien : Les tableaux superglobaux

C'était possible en PHP3 sous un shell (Unix ou MS-DOS):

 
Sélectionnez
php -p monscript.php3

On obtenait ainsi un script .php3p (p pour pretokenized). Le but était de cacher le code source et pas d'en rendre l'exécution plus rapide.

Pour l'exécuter en ligne de commande :

 
Sélectionnez
php -e monscript.php3p

Et via Apache, il faut ajouter dans le fichier de configuration /usr/local/apache/conf/httpd.conf la ligne suivante :

 
Sélectionnez
AddType application/x-httpd-php3 .php3p

Mais ceci n'existe plus en PHP4.

Il existe cependant des logiciels d'encodage ou de cryptage, mais ils sont payants (ioncube.com, Zend, etc.). L'un de ces programmes est une extension PHP : bcompiler.

Mis à jour le 6 août 2008  par Cyberzoide

Lien : Tutoriels : Protéger son code source PHP avec bcompiler, par Maxime Ohayon

Pour alterner les couleurs, il suffit de faire ainsi :

 
Sélectionnez
$i = 0;
while(condition) 
{
  $couleur = ($compteur % 2 == 0) ? "#CCCCCC" : "#FFFFFF";
  echo '<tr bgcolor="'.$couleur.'"><td>texte</td></tr>';
  $i++;
}

Ou de la manière suivante

 
Sélectionnez
$i = 0;
while(condition) 
{
  echo '<tr class="ligne'.($i % 2).'"><td>texte</td></tr>';
  $i++;
}

À utiliser après avoir déclaré une feuille de style contenant les classes ligne0, ligne1.
Exemple de classe :

 
Sélectionnez
<style type="css/text">
.ligne0 { background-color : #FF0000; }
.ligne1 { background-color : #CCCCCC; }
<style>
            
Créé le 26 juin 2006  par Forum PHP

Il n'est pas possible pour des raisons évidentes de sécurité de faire ce genre d'opération. PHP s'exécute côté serveur et rien ne peut être tenté côté client sans son accord.

Créé le 10 décembre 2004  par BiD0uille

Il n'est pas possible pour des raisons évidentes de sécurité de faire ce genre d'opération. PHP s'exécute côté serveur et rien ne peut être tenté côte client sans son accord.

Créé le 10 décembre 2004  par BiD0uille

Comment envoyer mes projets sur un autre serveur sans pour autant dépendre de la librairie installée avec PEAR ou manuellement avec la source.

Nous pouvons faire une sorte de sandbox maison (Bac à sable) :

 
Sélectionnez
> symfony project:freeze [votre/repertoire/symfony]

Sinon vous pouvez avoir recours à la solution manuelle :

1. Duplication des fichiers de librairies
Rendez-vous dans le répertoire ou à été installé Symfony de base : dans le répertoire PEAR si vous avez installé PEAR ou dans le répertoire de la source si avez télécharger la source manuellement.
Ensuite copiez le contenu du répertoire "symfony/lib" vers le répertoire "~monprojet/lib"

2. Configuration d'accès aux librairies
Maintenant que notre répertoire librairie à été placé dans notre projet nous n'aurons plus qu'à modifier l'accès à celle-ci.

Modifiez ensuite le fichier "config/ProjectConfiguration.class.php" comme ci-dessous:

Modifier à la ligne 2
Sélectionnez
<?php
 
require_once dirname(__FILE__).'/../lib/autoload/sfCoreAutoload.class.php';
//...
//...
?>
Créé le 11 novembre 2008  par Sébastien D.
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Developpez.com Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.