Tag: PHP’

Delicious du février 9th au mars 5th

 - by admin

Mes derniers signets du février 9th au mars 5th:

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.

days-2

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(&quot;unzip $location&quot;,$arr)){
mkdir($newLocation);
for($i = 1;$i&lt; count($arr);$i++){
$file = trim(preg_replace(&quot;~inflating: ~&quot;,&quot;&quot;,$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]

SFU: The Flatliners & Crappy Stuff

 - by admin

Première soirée Sound For Unity de la saison, ce jeudi au Tikki’s Pub à Genève:

Et voila c’est reparti pour une nouvelle saison de concert et ça commence fort, Sound For Unity et le Tikki’s vous proposent pour la modique somme de 8.-

THE FLATLINERS (punk-rock from canada)
Tout droit venu du label Fat Wreck Chords ils vont faire grimper la température avec leur punk rock digne des plus grands groupes du genre.

Crappy Stuff (Punk’n'roll from france)

Plus d’infos:

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)

[source]

iPhone: Jailbreaker l'OS 3.0

 - by admin

A peine arrivé, que l’OS 3.0 pour iPhone est déjà « Jailbreakable », c’est à dire qu’il est possible d’y installer des applications non-officielles, ou refusées par Apple (comme Offline Maps par exemple):

Ces tutoriaux sont compatibles avec les iPhone 2G et 3G mais pas (encore) le 3GS :)

RedSnow - Mac

RedSnow - Mac

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.)

Continue reading “WordPress 2.8” »