Category:PHP’
PHP: Break et Continue
- by admin
Utilisation standard
Vous avez déjà sûrement utilisé la commande « break » dans vos éléments switch pour éviter de passé à la condition suivante et sortir de l’élément. Cette commande peut également être utilisée dans les boucles standards while, do…while et for. Sa fonction est la même, elle permet de casser la boucle et d’en sortir.
[php]
$i = 0 ;
while (true) {
if ($i == 10) {
break ;
}
$i++ ;
}
[/php]
La boucle ci-dessus bouclera 10x puis s’arrêtera. L’utilisation est identique dans les boucles do…while et for.
La commande « continue » elle, permet d’interrompre l’itération courante pour passer à la suivante.
[php]
for ($i = 0 ; $i < 10 ; $i++) {
if ($i >= 5 && $i <= 7) {
continue ;
}
}
[/php]
Cette boucle réalisera 10 itérations mais sera interrompue lors de la 6, 7 et 8ème itération.
Utilisation avancée
Les utilisations décrites ci-dessus sont standards et vous les avez probablement déjà expérimentées dans votre code. Toutefois, PHP propose en plus, le passage d’un entier à ces commandes qui permet de quitter plusieurs boucles en même temps.
[php]
for ($i = 0 ; $i < 10 ; $i++) {
for ($j = 0 ; $j < 10 ; $j++) {
if (($i + $j) % 2 == 0) {
// interrompt l’itération courante et la parente
continue 2 ;
}
if (($i + $j) > 15) {
// interrompt la boucle courante et la parente
break 2 ;
}
}
}
[/php]
Ces boucles, parfaitement inutiles, nous donne toutefois un bon exemple de l’interruption de deux boucles grâce à la commande « break 2 ; » et de la même manière avec la commande « continue 2 ; ».
PHP: bloquer les spams avec Akismet
- by admin
Akismet est un système visant à combattre le spam sur les commentaires de blogs, mais il peux s’utiliser également dans d’autres contexte.
Il s’agit d’un système commercial, non libre, qui autorise toutefois un usage gratuit pour les sites personnels ou non commerciaux.

Le principe est simple : chaque message à destination d’un forum est envoyé à un serveur central qui répond « spam » ou « ok ». Charge ensuite au site d’intégrer ou non le commentaire.
On peux également choisir de sauver le commentaire dans la base de données même s’il est vu comme « spam », ça permet au webmestre de contrôler l’activité d’akismet, voire de republier d’éventuels « faux positifs », messages légitimes que le serveur central d’akismet aurait fliqué comme « spam ».
Pour l’utiliser, il faut tout d’abord un clé WordPress API qui s’obtient en s’inscrivant sur le site de WordPress (c’est gratuit et ça prends moins de 5 minutes) ainsi que cette classe PHP5: PHP5Akismet (24k)
Pour d’autres formats comme PHP4, .Net, Ruby, … c’est par là: Developpement – Akismet
[php]
include_once(‘inc/Akismet.class.php’);
$WordPressAPIKey = ‘aoeu1aoue’;
$MyBlogURL = ‘http://www.maiis.ch/’;
$akismet = new Akismet($MyBlogURL ,$WordPressAPIKey);
$akismet->setCommentAuthor($name);
$akismet->setCommentAuthorEmail($email);
$akismet->setCommentAuthorURL($url);
$akismet->setCommentContent($comment);
$akismet->setPermalink(‘http://www.maiis.ch/url/’);
if($akismet->isCommentSpam()) {
// enregistrer le commentaire mais le signalé comme SPAM
} else {
// enregistrer le commentaire normalement
}
[/php]
PHP: dézipper une archive zip
- by admin
Besoin d’extraire des fichiers d’une archive .zip ? cette fonction est pour vous:
- functions.php
[php]
function unzip($location,$newLocation){
if(exec("unzip $location",$arr)){
mkdir($newLocation);
for($i = 1;$i< count($arr);$i++){
$file = trim(preg_replace("~inflating: ~","",$arr[$i]));
copy($location.’/’.$file,$newLocation.’/’.$file);
unlink($location.’/’.$file);
}
return TRUE;
}else{
return FALSE;
}
}
[/php]
- extractZip.php
[php]
include ‘functions.php’;
if(unzip(‘zipedfiles/test.zip’,'unziped/myNewZip’))
echo ‘Success!’;
else
echo ‘Error’;
[/php]
PHP: retourne le répertoire utilisé
- by admin
Il est parfois utile de savoir dans quel dossier ce trouve le fichier sur lequel on travail:
[php]
<?php
echo getcwd();
?>
[/php]
Authentification NTLM en PHP
- by admin
Pour le développement d’un intranet pour mon job, j’utilisais jusqu’à présent un script d’authentification NTLM afin que les utilisateurs soient automatiquement connectés sans devoir entrer ni login ni mot de passe. Jusqu’à ce que Microsoft (et mes très chers administrateurs réseaux) force l’installation d’une mise à jour de sécurité pour toutes les versions d’Internet Explorer ce qui rendis mon code totalement inopérant (IE doit représenter 99% des employés… il y a même des versions 6 à mon grand désespoir…)
Après quelques recherches, j’ai (enfin) trouvé un bout de code qui semble très bien fonctionné, qui retourne le nom de l’utilisateur, le domaine sur lequel il est, ainsi que le nom de sa machine:
[php]
$headers = apache_request_headers();
if (!isset($headers['Authorization'])){
header(‘HTTP/1.1 401 Unauthorized’);
header(‘WWW-Authenticate: NTLM’);
exit;
}
$auth = $headers['Authorization'];
if (substr($auth,0,5) == ‘NTLM ‘) {
$msg = base64_decode(substr($auth, 5));
if (substr($msg, 0, 8 ) != "NTLMSSP\x00")
die(‘error header not recognised’);
if ($msg[8] == "\x01") {
$msg2 = "NTLMSSP\x00\x02"."\x00\x00\x00\x00". // target name len/alloc
"\x00\x00\x00\x00". // target name offset
"\x01\x02\x81\x01". // flags
"\x00\x00\x00\x00\x00\x00\x00\x00". // challenge
"\x00\x00\x00\x00\x00\x00\x00\x00". // context
"\x00\x00\x00\x00\x30\x00\x00\x00"; // target info len/alloc/offset
header(‘HTTP/1.1 401 Unauthorized’);
header(‘WWW-Authenticate: NTLM ‘.trim(base64_encode($msg2)));
exit;
}
else if ($msg[8] == "\x03") {
function get_msg_str($msg, $start, $unicode = true) {
$len = (ord($msg[$start+1]) * 256) + ord($msg[$start]);
$off = (ord($msg[$start+5]) * 256) + ord($msg[$start+4]);
if ($unicode)
return str_replace("", », substr($msg, $off, $len));
else
return substr($msg, $off, $len);
}
$user = get_msg_str($msg, 36);
$domain = get_msg_str($msg, 28);
$workstation = get_msg_str($msg, 44);
print "You are $user from $domain/$workstation";
// result: You are maiis from DOMAIN/MYPC001
}
}
[/php]
Cette méthode est compatible avec Internet Explorer, Firefox et Opera.
Spécifications du NTLM (en anglais)
WordPress 2.8
- by admin
La nouvelle version de WordPress 2.8 est sortie la semaine dernière.
Au rayon nouveautés :
- 790 bugs corrigés
- Un nouveau sélecteur de thèmes avec paramétrage via l’interface
- Une navigation accélérée dans l’admin
- Un support de la reécriture d’url pour IIS
- Une interface de widget redesignée
- …Etc
La liste des modifs est ici et la mise à jour vous sera proposé dans l’interface d’admin (ou alors vous pouvez télécharger l’archive sur le site de WordPress.)
Twitster, application php pour suivre vos tweets
- by admin
Twitster est une application PHP open source qui vous permet d’afficher les tweets de tout ce que vous suivez sur Twitter et de les afficher sur n’importe quel site internet.
Et, il peut aussi filtrer les tweets par une balise de hachage (# par exemple) qui permet de créer un Twitter basé sur un groupe ou une communauté.

Twitster est livré avec un assistant d’installation qui permet de mettre en place le système rapidement.
Demo: Mon Twitster de test
Site web de Twister
Continue reading “Twitster, application php pour suivre vos tweets” »
PHPShortener, des urls raccourcies à la volée
- by admin
PHPShortener est classe PHP qui permet de facilement encodé ou décodé des URLs raccourcies. On peux par exemple transformé http://google.com en http://is.gd/w et viceversa.
Services supportés actuellement:
- is.gd
- bit.ly
- tinyurl.com
- tr.im
- twurl.nl
- digg.com
- u.nu
Exemple:
[php]
<?php
require(‘phpshortener.class.php’);
$s = new PHPShortener();
// encode une longue url
$shorturl = $s->encode(‘http://blog.maiis.ch/phpshortener-des-urls-raccourcies-a-la-volee/’, ‘is.gd’);
// decode une url raccourcie
$longurl = $s->decode(‘http://is.gd/AO0n’);
?>
[/php]
Site de l’auteur
GitHub du projet
Continue reading “PHPShortener, des urls raccourcies à la volée” »
PHP fonctions, bibliothèque de fonctions PHP
- by admin
phpfonctions est une bibliothèque de fonctions php en ligne.
Tout le monde peut y ajouter ses propres ressources, phpfonctions est un site collaboratif et aucune inscription est nécessaire pour participer.Chaque développeur possède ses propres fonctions qu’il utilise pour tous les sites sur lesquels il travaille. Pourquoi ne pas partager ? Tout le monde a eu besoin a un moment ou un autre d’une fonction particulière, rien ne sert de ré-inventer la roue !
Créer des url raccourcies avec u.nu
- by admin
Il est parfois utile de créer des urls raccourcies, et dans ce domaine, u.nu gagne la palme d’or.
Grâce à leur API, David Walsh a développé une petite fonction php qui va bien:
[php]
function get_unu_url($url)
{
$url = ‘http://u.nu/unu-api-simple?url=’.urlencode($url);
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$url = curl_exec($ch);
curl_close($ch);
return trim($url);
}
$short_url = get_unu_url(‘http://blog.maiis.ch/creer-des-url-raccourcies-avec-unu/’);
//returns http://u.nu/78m5
[/php]
Cette API a l’avantage de n’utilier ni JSON, ni XML, elle retourne directement l’URL, rien d’autre !