phpInfo.netLes ArchivesLes éléPHPants

  
  Accueil
  Trucs & Astuces
  Scripts
  Regex
  Annuaire
  Articles

.
      
 Astuces   PHP  Inclassable


Afficher un nombre en chiffres romains[30-08-2002]
Posté par janjan2

Voilà, mais seulement pour des nombres à 4 chiffres.

<?php
function chif_rome($num)
{
  
//I V X  L  C   D   M
  //1 5 10 50 100 500 1k
  
$rome =array("","I","II","III","IV","V","VI","VII","VIII","IX");
  
$rome2=array("","X","XX","XXX","XL","L","LX","LXX","LXXX","XC");
  
$rome3=array("","C","CC","CCC","CD","D","DC","DCC","DCCC","CM");
  
$rome4=array("","M","MM","MMM","IVM","VM","VIM","VIIM","VIIIM","IXM");
  
$str=$rome[$num%10];
  
$num-=($num%10);
  
$num/=10;
  
$str=$rome2[$num%10].$str;
  
$num-=($num%10);
  
$num/=10;
  
$str=$rome3[$num%10].$str;
  
$num-=($num%10);
  
$num/=10;
  
$str=$rome4[$num%10].$str;
  return
$str;
}
?>


[3 commentaires]

Recevoir une alerte ICQ d'un script php[30-06-2002]
Posté par Djassper

La fonction suivante permet de recevoir un message ICQ lors de l'exécution d'une ligne de commande d'un script PHP.
Utile par exemple pour être averti de l'arrivée d'utilisateurs sur votre chat ou forum.

<?php
function ICQpage($uin, $subject, $message)
{
    
mail($uin.'@pager.icq.com',$subject,$message);
}
?>


[1 commentaire]

Coloriage en alternance des lignes d'un tableau[19-06-2002]
Posté par chris13

Petite astuce pour faire que les tableaux soient colorés. Ce type d'astuce existe déjà, mais d'une manière plus "mathématique". Celle que je propose est extrêmement simple.

<?php

// je fixe ma couleur de départ
$i = '#ffffff';

// puis, lorsque je liste un tableau
while ($tab = mysql_fetch_array($req))
{
  
// affichage d'une ligne
  
print '<tr bgcolor="'.$i.'"><td></td></tr>';

  
// si la couleur actuelle est 0, la couleur devient f
  // sinon c'est que la couleur actuelle est f, elle devient alors 0

  
if ($i=="#000000"){$i="ffffff";}else{$i="000000";}
}
?>

Pour faire le travail sur 3 teintes, toujours avec les "if", et selon le même principe :

<?php
if ($i=="#aaaaaa"){
  
$i="bbbbbb";
}elseif (
$i=="#bbbbbb"){
  
$i="#cccccc";
}else{
  
$i="#aaaaaa";
}
?>

Si $i est "a": la couleur devient "b"
si $i est "b": la couleur devient "c"
Si $i est ni "a", ni "b", c'est qu'elle est "c". Elle devient donc "a"

[2 commentaires]

Afficher de manière structurée sans doublons[03-06-2002]
Posté par Florian PERRICHOT

On veut faire quelque chose comme cela :

- 01/01/2002
moi
toi
lui
- 01/02/2002
elle
- 01/03/2002
- 01/04/2002
poisson d'avril !

Il y a une simple astuce à savoir utiliser une variable temporaire qui garde en mémoire la précédente valeur afin de savoir quand cela change et donc quand afficher ce que l'on veut.

Ex (en supposant que l'on soit connecté a MySQL...):

<?php
$requete
= 'SELECT madate, nom FROM table ORDER BY madate, nom';
$req = mysql_query( $requete )
       or
       die(
'Erreur '.$requete.'<br>'.mysql_error() );

$tmp = ''; // initialise a vide
while( $row = mysql_fetch_array( $req ) )
{
   if (
$row['madate'] != $tmp )
   {
      
$tmp = $row['madate'];
      echo
'- '.$tmp'<br>'."\n";
   }
   echo
' &nbsp; '.$row['nom'].'<br>'."\n";
}

?>


IP to LongIP - LongIP to IP[30-04-2002]
Posté par Bear

Comment modifier l'IP de son site web d'une façon simple et amusante ?

Ces 2 fonctions permettent en fait de convertir une IP en valeur décimale et
inversement.

<?php

// IP to LongIP
function ip2lip($ip)
{
    
$n = explode(".",$ip);

    
$n[0] = $n[0]*256*256*256;
    
$n[1] = $n[1]*256*256;
    
$n[2] = $n[2]*256;
    
$n[3] = $n[3]*1;

    
$lip = $n[0]+$n[1]+$n[2]+$n[3];
    return
$lip;    
}

// LongIP to IP
function lip2ip($lip)
{
    
$ip[0] = ((($lip/256)/256)/256);
    
$ip[0] = floor($ip[0]);
    
$ip[1] = ((($lip-($ip[0]*256*256*256))/256)/256);
    
$ip[1] = floor($ip[1]);
    
$ip[2] = ((($lip-($ip[0]*256*256*256))-($ip[1]*256*256))/256);
    
$ip[2] = floor($ip[2]);
    
$ip[3] = ((($lip-($ip[0]*256*256*256))-($ip[1]*256*256))-($ip[2]*256));
    
$ip[3] = floor($ip[3]);

    
$ip[4] = $ip[0].".".$ip[1].".".$ip[2].".".$ip[3];
    return
$ip[4];
}

// Exemple fictif :

$lip = ip2lip("209.15.140.156"); // ($lip = 3507457180)

// Et remplacer ensuite l'IP par la valeur renvoyée dans votre navigateur :
// http://3507457180/

?>


Calculette[14-04-2002]
Posté par pam

<html>
<head></head>
<body>
<h2>
<?php
switch ($operation)
{  case
"+" : $x = $num1 + $num2; break;
   case
"-" : $x = $num1 - $num2; break;
   case
"*" : $x = $num1 * $num2; break;
   case
"/" : $x = $num1 / $num2; break;
   default :
}
?>
</h2>
</td></tr></table>
<form action="<?PHP echo $PHP_SELF ?>" method="post">
<table>
<tr></td><tr><td>Opérande 1</td><td><input type=text name=num1></td>
<td rowspan=2>
<input type=radio name=operation value="+"><b>+</b><br>
<input type=radio name=operation value="-"><b>-</b><br>
<input type=radio name=operation value="*"><b>*</b><br>
<input type=radio name=operation value="/"><b>/</b><br>
</td></tr>
<tr><td>Opérande 2 </td><td><input type=text name=num2></td></tr>
<tr><td><input type=submit value="Calculer"></td>
<td colspan=2 align=center>
<?php print "<h3> $num1 $operation $num2 = $x</h3" ; ?>
<td><tr>
</table>
</form>
</body>
</html>


Accès rapide au manuel PHP pour IE[05-07-2001]
Posté par Florent

Créer un nouveau raccourci sur le bureau avec pour adresse la chaine de caractères suivante (sans espace ni saut de ligne) :

javascript:void(q=prompt('Fonction%20PHP%20Recherchée:',''));
if(q)void(open('http://www.php.net/manual-lookup.php?function='+escape(q),'w'));

Un conseil : copiez/collez cette chaîne ci-dessus dans un éditeur de texte et vérifiez qu'il n'y a aucun espace ni saut de ligne avant d'en faire un raccourci.

Vous pouvez bien entendu remplacer la chaîne "http://www.php.net/manual-lookup.php?function=" par celle d'un serveur miroir.

[2 commentaires]

Demande de confirmation grâce à JavaScript[08-06-2001]
Posté par Mikaël BARBERO

Beaucoup sur le forum posent ce genre de question et on leur répond qu'il n'y a aucune interraction entre PHP et JavaScript, puisque le premier est server-side et le second client-side.
Or, il existe une petite astuce permettant de faire passer des variables JS à PHP (et celà n'importe où dans la page puisqu'elle n'utilise pas de focntion header).

Exemple : On désire demander confirmation de l'effacement d'un enregistrement MySQL.

<?
if ($valid==1)
{
  
$res = mysql_db_query($db, "DELETE FROM $news WHERE id='$id'");
  if (
$res)
  {
    echo
"<SCRIPT language=\"JavaScript\">\n";
    echo
"alert(\"La news a été supprimée avec succès\");\n";
    echo
"document.location.href=\"?\";\n";
    echo
"</SCRIPT>\n";
  }
}
else
{
  echo
"<SCRIPT LANGUAGE=\"JavaScript\">\n";
  echo
"if(confirm(\"Etes-vous sûr de vouloir supprimer cette news ?\"))\n";
  
// A la place de $id et $action vous renvoyer vos
  // variables nécessaires à l'execution de la requête validée !
  
echo "{document.location.href=\"?id=".$id."&action=del&valid=1\";}\n";
  echo
"else{document.location.href=\"?\";}\n";
  echo
"</SCRIPT>\n";
}
?>


Des gabarits hyper-simples et rapides[22-05-2001]
Posté par Frédéric Bouchery

Comment gérer des gabarits (templates pour nos amis anglophones) le plus simplement du monde ?
Il existe une astuce très simple, mais il faut que votre hébergeur ait configuré PHP pour autoriser les tags ASP ("asp_tags" à "on" dans phpinfo()).

1) Vous créez votre gabarit et à l'endroit où doivent figurer vos données, vous écrivez : <%=$variable%>
2) Vous sauvegardez vos pages avec l'extension qu'il vous plait (pourquoi pas ".html" ?)
3) Vous créez votre script en affectant vos variables
4) Enfin, vous faites un "include 'gabarit.html'

Exemple :

--- fichier : gabarit.html ---

<html>
<head><title><%=$titre%></title></head>
<body>
<h1><%=$titre%></h1>
<p><%=$message%><p>
</body>
</html>

--- fichier : index.php ---

<?
$titre
= 'Le titre de la page';
$message = 'Voici le message a placé dans le gabarit';
include
'gabarit.html';
?>

Désormais, vous pouvez modifier à volonté votre gabarit pour mettre le message avant le titre par exemple, vous n'avez plus besoin de toucher au fichier "index.php".
C'est l'idéal pour séparer l'infographisme du développement. Vos infographistes n'ont pas besoin de connaître le PHP et vous vous n'avez pas besoin de maîtriser l'aspect graphisme !

Seul problème, c'est que les tags "<%= %>" sont invisibles, et c'est pas toujours simple pour le graphiste. Pour ne pas mettre en oeuvre une usine à gaz avec des scripts du genre "FastTemplate", vous pouvez demander au graphiste d'écrire simplement "{variable}" et lors du chargement sur le serveur, vous convertissez le gabarit avec ceci ("gabarit" étant le nom du fichier passé en paramètre du script) :

--- fichier : gabarit_conversion.php ---

<?
// chargement du fichier gabarit
$g = implode('',file($gabarit));
// conversion du fichier
$g = ereg_replace('{ *([^}]+)}','<%=$\1%>',$g);
// Sauvegarde du gabarit convertit
$f = fopen($gabarit,'w');
fputs($f,$g);
fclose($f);
?>


Lancer un script depuis une page .html[21-05-2001]
Posté par Vincent WOZNIAK

Pour lancer un script de manière discrète depuis une page html, il vous suffit de créer un IFRAME que vous placez entre les balises BODY. C'est une sorte de cadre qui peut être visible ou non selon la taille que vous lui donné.

Exemple 1 : Votre script s'exécute et ne retourne aucun affichage

<iframe src="http://www.monsite.com/monscript.php3" width="0" height="0"
marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0"
scrolling="no"></iframe>

Exemple 2 : Vous souhaitez afficher la valeur retournée par votre script.
Il suffit pour cela de donner une taille à ce mini-cadre avec les propriétés WIDTH et HEIGHT. Attention, à bien cadrer l'affichage de votre script tout en haut à gauche de la page et sans marge.

Le principal problème de ce IFRAME c'est que l'on ne peut pas récupérer les variables concernant l'utilisateur, par exemple le référant.

[2 commentaires]

Gestion du pluriel[25-04-2001]
Posté par Christophe Faizant

Voici une astuce permettant d’accorder une phrase au pluriel, selon le sujet. Par exemple, si après une recherche dans une base de données contenant des produits, 1 seul produit correspond à la recherche, la phrase sera « 1 produit correspond à votre recherche », sinon « n produits correspondent à votre recherche ». Il eut été envisageable de taper les deux phrases dans le programme et de choisir laquelle afficher à l’aide d’une instruction conditionnelle, mais il est plus judicieux de créer des variables contenant les terminaisons du pluriel s’il y a plus d’un produit.

Dans le cas contraire les variables sont vides et le pluriel ne s’affiche donc pas.

C’est tout bête mais il fallait y penser… ;-)

Bien évidemment dans la provenance de $nombre dans le code ci-dessous sera par exemple le count de la requête sql.

<?
if ($nombre>1)
{
    
$s   = "s";
    
$ent = "ent";
}

echo
"$nombre produit$s correspond$ent à votre recherche, ";
echo
"<a href='page.php'>cliquez ici</a> pour le$s voir";
?>


[1 commentaire]

Le vampire caché de PHP 4[22-04-2001]
Posté par Léa Gris

Trouvé sur la ml php d'OVH : Le vampire caché de PHP 4.

Sur un serveur équipé de PHP 4 en module appelez la page d'index avec un paramètre url spécial :

<?
$param
= 'PHPE9568F36-D428-11d2-A769-00AA001ACF42';
echo
"<a href=\"http://phpinfo.net/?=$param\">http://phpinfo.net/?=$param</a>";
?>


Probleme avec Ingres II[12-03-2001]
Posté par Bruno Wipier

Avec l'installation par défaut de Ingres II 2.5, un probleme d'identification du client survient lors de la connexion ( ingres_connect ).

Pour résoudre se problème, il faut s'assurer que les paramètres de la section gcf ( mécanisme de sécurité ) de config.dat sont bien positionnés. La configuration suivante fonctionne :
ii.linux.gcf.mech.ingres.enabled:       true
ii.linux.gcf.mech.null.enabled: true
ii.linux.gcf.mech.system.enabled: true
ii.linux.gcf.mechanism_location: /usr/local/ii25/ingres/lib
ii.linux.gcf.mechanisms:
ii.linux.gcf.remote_auth_error: ignore
ii.linux.gcf.security_mechanism: null
Attention, il est recommandé d'effectuer ces changement via l'utilitaire CBF.

Site multilingues[21-01-2001]
Posté par Fifilaplume

Créer des fichiers texte avec les mêmes variables. Exemple :
  gblib.inc.php3  avec $bonjour = "Hello"
delib.inc.php3 avec $bonjour = "Gutentag"
lib.inc.php3 avec $bonjour = "Bonjour"
Dans votre table MySQL ayez un champ titre avec par exemple "pays", un champ gbtitre avec "country" et un champ detitre avec "land".

A chaque lien de votre appli vous rajoutez une variable $lg qui contiendra "de" si l'allemand est choisi, "gb" pour l'anglais et RIEN pour les autres cas.
Des petits drapeaux peuvent etre utilisés pour initialiser $lg.

En en-tête de programme :

require($lg."lib.inc.php3");
Pour afficher bonjour il suffira d'ecrire : echo $bonjour

Pour afficher le titre qui vient de la base : echo $result[$lg.titre]

Avantage de la solution : un seul code. Si l'utilisateur est français $lg est vide donc c'est dans mon exemple le champ titre de la base et le fichier lib.inc.php3 qui sont utilisés , pour un allemand la donnée $bonjour est cherchée dans delib.inc.php3 et le champ detitre est utilisé dans la base.

Si on veut faire de l'italien on crée un fichier txt itlib.inc.php3 et dans la base un champ ittitre. Pas de cookies ou autre artifice de détection automatique et l'on peut mettre des drapeaux sur toutes les pages et ainsi afficher n'importe quelle page dans une autre langue.

Anti-Aspirateur de site[11-01-2001]
Posté par Frédéric Bouchery

Pour empêcher l'aspiration de vos sites, je vous conseille d'utiliser les sessions.
Dans la première page qui attribut le numéro de session, il faut une image vide de 1x1 avec un lien qui pointe vers un script du genre "padaspi.php3?id=jjz5fkaz455frkjz74a2azer7djh".

Si ce lien est activé, ça veut dire que c'est soit un robot de recherche, soit un aspirateur, car un personne ne peut pas suivre ce lien. Ensuite, on déclare ce numéro de session comme étant un "aspi", et toutes les pages appelées avec ce numéro de session n'afficheront rien ou alors un texte du genre : "je ne veux pas d'apirateur".

[3 commentaires]

Appeler un système de news PHP avec JavaScript[11-01-2001]
Posté par Perrich

Vous avez un système de news comme phpInfo.net et vous voulez l'utiliser n'importe où (ou vous souhaitez exporter vos scripts PHP). Pour cela il suffit de faire :

Dans un fichier HTML :
<script src="http://monsite.com/monscript.php"></script>
Dans le fichier PHP, il faut remplacer tous les echo "..."; par des echo "document.writeln('...');\n"; afin de générer du javascript.

ATTENTION aux ' et ". Je conseille de faire un addslashes avant.

Sessions ...[05-01-2001]
Posté par guepe

Lorsque pour quelle que raison que ce soit vous devez appeler un page entre serveurs avec les fopen(); il se peut que les variables de session ne passent pas. Vous pouvez alors utiliser la variable $PHPSESSID qui contient votre Id de session ainsi le script sera reconnu par le serveur comme étant votre browser.

Assez utile pour des prints ou autres.

Images aléatoires[02-01-2001]
Posté par MoRp][eUs

Voici un petit script qui permet de faire afficher aléatoirement des images. Pour ajouter des images, elles doivent être dans le répertoire de base de la page si vous n'entrez que le nom ou alors entrez l'url partiel ou complet suivant l'emplacement. Il est possible de mettre plus de deux images, pour ce faire ajoutez une ligne $image[]="image3.gif" par exemple et ainsi de suite.

<?
$image
[] = "image1.jpg";
$image[] = "image2.jpg";

srand((double)microtime()*1000000);
$i = floor(rand(1,count($image)));

echo
"<IMG SRC=\"$image[$i]\" BORDER=0 ALT=\"description\">";
?>


Apache Toolbox et SuSE 7.0[29-11-2000]
Posté par Fred

J'ai décidé de remplacer mon Windows par SuSE 7.0 et de remettre mon environnement Apache/PHP/MySQL grâce à Apache Toolbox. J'ai cherché pendant des heures avant de comprendre pourquoi l'installation de PHP ne marchait pas.

Voici l'astuce :

  • Si on utilise Apache Toolbox avec SuSE 7.0 installé avec les modules proposés par défaut cela ne marche pas. Il faut installer grâce à Yast2 le module 'flex' qui se trouve dans la série 'd' 'Development C/C++'.
    Après l'installation de ce composant, Apache Toolbox a fonctionné à merveille et j'ai retrouvé mon environnement Apache/MySQL/PHP sous SuSE 7.0.


[1 commentaire]

Accès rapide au manuel PHP[16-11-2000]

Voici un petit truc pour accéder rapidement au manuel PHP en ligne avec Mozilla et Netscape 6.0 :
  1. Sélectionnez Bookmarks / Manage Bookmarks
  2. Créez un nouveau signet avec comme adresse http://www.php.net/manual-lookup.php?function=%s (ou un miroir), et donnez lui un nom
  3. Editez les propriétés de ce nouveau signet et mettez phpman (par exemple) dans le champ "custom keyword" puis validez.
  4. Dans le navigateur, sur la zone réservée à l'url tapez maintenant phpman phpinfo, et vous serez dirigé directement sur la page consacrée à cette fonction dans le manuel PHP.
Pour Internet Explorer, il faut installer un add-on, mais qui semble ne pas fonctionner avec la version française.

[1 commentaire]

Recherche approximative[18-09-2000]
Posté par Ben

Si vous voulez donner un peu plus de fonctionnalités à votre moteur de recherche, proposez aux utilisateurs la méthode approximative.

Il suffit de transformer chaque mot à chercher de la manière suivante : "phpinfo" devient "p%h%p%i%n%f%o".

Donc votre requête devient :

SELECT * FROM liens WHERE url LIKE '%p%h%p%i%n%f%o%'

Explications : si la colonne url de la table liens contient la valeur "http://www.phpinfo.net", une recherche de "pnfo" trouvera cette valeur, etc...

Une fonction pour transformer chaque 'token' :

<?
function approx_sql($token) {

  for (
$cpt = 0; $cpt < strlen($token); $cpt++)
    
$token_tabl[]=$token[$cpt];
  return
implode("%", $token_tabl);

}
?>


Synseo