Categorie PHP...

Rubrique PHP

Aide mémoire de certaines fonctions PHP

Catégorie PHP

aide-memoireVoici un petit aide-mémoire de fonctions PHP usuelles pour se souvenir de leur utilisation:
Afficher toutes les valeurs d’un tableau:
foreach ($arr as $value)
{
   echo "Valeur : $value<br />\n";
}

Afficher toutes les valeurs et les clés d’un tableau:
foreach ($arr as $key => $value)
{
   echo "Clé : $key; Valeur : $value<br />\n";
}

Une boucle for de base:
for ($i = 1; $i <= 10; $i++)
{
   echo $i;
}

Rassembler les éléments d’un tableau dans une chaîne, avec éventuellement un séparateur
$comma_separated = implode(",", $array);

A l’inverse, exploser une chaîne pour en faire un tableau:
$array = explode(",", $comma_separated);

Envoyer un email (le plus simple, sans header ni rien):
mail("adresse@example.com", "Mon Sujet", "Mon message");

Afficher toutes les variables déjà définies:
print_r(get_defined_vars());

Un mix des 2 précédentes: Envoyer un email contenant les variables définies (peut parfois être pratique pour un debug):
mail("adresse@example.com", "Variables", print_r(get_defined_vars(),TRUE));

Si vous en voyez d’autres d’utilisation courante à ajouter ici, n’hésitez-pas….

Rubrique PHP

Fonction PHP pour une date JJ/MM/AAAA HH:MM:SS en date YYYY-MM-DD HH:MM:SS

Catégorie PHP

calendrierSi vous codez peu, vous vous rendez vite compte de l’importance des bons formats de date.
Le format YYYY-MM-DD HH:MM:SS (Exemple: 2016-08-25 10:06:34) est très souvent utilisé et il se révèle en effet très pratique: Comme il commence par l’unité de temps la plus grande (l’année) pour finir par la plus petite (le jour, les minutes ou les secondes suivant le cas), il suffit de faire un tri par ordre croissant ou décroissant pour que les dates soient automatiquement dans le bon ordre!

Pour transformer une date du format JJ/MM/AAAA HH:MM:SS au format YYYY-MM-DD HH:MM:SS, certains vous conseillerons ce type de fonction:
$date=date('Y-m-d h:i:s', strtotime($date_in_ddmmyyyy));
Pour l’avoir essayée, je peux vous dire que ça ne marche pas à tous les coups, la faute à un cafouillage entre les mois et les jours si le jour est compris entre 01 et 12…

Du coup je vous propose ma petite fonction PHP perso qui fait la transformation:

function convertdatetimeFRtoUS ($datetime)
{
$pieces = explode(" ", $datetime);
$pieces2 = explode("/", $pieces[0]);
return $pieces2[2] . "-" . $pieces2[1] . "-" . $pieces2[0] . " " . $pieces[1];
}

Exemple d’utilisation:
$dateFR="20/03/1976 13:45:23";
$dateFR=convertdateFRtoUS ($date);
echo $date;

va vous afficher 1976-03-20 13:45:23

Evidemment, on peut aussi la décliner pour qu’elle ne fasse que la transformation de la date JJ/MM/AAAA => YYYY-MM-DD sans l’heure:

function convertdateFRtoUS ($date)
{
$pieces2 = explode("/", $date);
return $pieces2[2] . "-" . $pieces2[1] . "-" . $pieces2[0];
}

Exemple d’utilisation:
$dateFR="20/03/1976";
$dateFR=convertdateFRtoUS ($date);
echo $date;

va vous afficher 1976-03-20

Rubrique PHP

Empêcher les failles XSS ou Cross Site Scripting en PHP grâce à une fonction antixss

Catégorie PHP

pirate-47705_640En 2007 j’avais trouvé sur le blog de l’excellent Korben un petite fonction pour empêcher les failles XSS ou Cross Site Scripting en PHP.
Hélas, depuis le temps, cette fonction comporte toujours une petite erreur (la fonction strip_tags renvoie une valeur de retour) qui n’a toujours pas été corrigée depuis. Ca fait jamais que 9 ans à l’heure ou j’écris ces lignes 😉

Voici donc la même fonction, légèrement corrigée.


function antixss($input) {
$new=strip_tags($input);
$new = htmlspecialchars($new, ENT_QUOTES);
return $new;
}

Et pour l’utiliser, voici un exemple avec le paramètre « name » passé avec la methode GET

$value = antixss($_GET["name"]);

ou la méthode POST

$value = antixss($_POST["name"]);

Petite explication pour ceux qui ignorent ce qu’est une faille XSS ou Cross Site Scripting: Il s’agit d’un méthode très utilisée par les hackers qui consiste simplement à faire exécuter du code dans une page web en l’injectant dans un formulaire ou une url.

Un exemple simple pour comprendre:
Admettons que vous ayez un formulaire sur votre site, par exemple un formulaire de contact. Si vous faites en sorte que le contenu des champs du formulaire s’affiche sur la page lors de sa validation (par exemple pour en confirmer les informations), et qu’un petit malin met du code javascript genre

<script>alert('coucou')</script>

Une fenêtre « Coucou » va s’afficher à l’écran!
Cet exemple est inoffensif, mais un hacker un peu chevronné peut facilement pirater une base de données grâce à cette méthode…

Alors protégez-vous bien!

Rubrique PHP

N’autoriser qu’une adresse IP à voir certaines parties d’une page web

Catégorie PHP

fish-1293635_640Parfois, on ne peut pas travailler sur un site de développement. Faire des modifications en live sur un site en production est loin d’être l’idéal, mais on a parfois des contraintes qui nous dépassent…
Bref, dans ce cas, j’essaye autant que possible d’utiliser une petite technique pour tenter de limiter les dégâts: N’autoriser que mon adresse IP à voir certaines parties d’une page.

Voici le code que j’utilise habituellement:

<?php
$monip="XXX.XXX.XXX.XXX";
if ($_SERVER["REMOTE_ADDR"]==$monip)
{
@include("monfichiertest.php");
}
?>

Vosu remplacerez XXX.XXX.XXX.XXX par votre adresse IP (que vous pourrez trouver ici par exemple).
Pour le reste, vous n’avez qu’a mettre vos modifications de page dans le fichier monfichiertest.php.
vous remarquerez le @ devant l’include: en cas d’erreur php, ça évitera que la page ne s’affiche plus du tout.

Cette technique peut aussi être utilisée pour faire une blague à quelqu’un dont vous connaissez l’adresse IP. Par exemple pour un poisson d’Avril… Soyez imaginatifs… 😉

Rubrique PHP

Rediriger plusieurs noms de domaine ou sous-domaine vers un seul

Catégorie PHP

Quand on change le nom de domaine d’un site, il faut faire des redirections vers le nouveau domaine.
C’est également valable si vous voulez que votre site soit référencé avec son url en www et pas avec la version sans www (je suis clair?).

Voici un petit script php à mettre tout en haut de vos pages, pour faire ces redirections automatiquement:


<?php
if ($_SERVER["HTTP_HOST"]!="www.mon-domaine.com")
{
header("Status: 301 Moved Permanently", false, 301);
header("Location: http://www.mon-domaine.com" . $_SERVER["REQUEST_URI"]);
exit();
}
?>

En gros ce morceau de code redirige tout ce qui n’est pas www.mon-domaine.com vers www.mon-domaine.com, tout en conservant le reste de l’url de la page demandée.

Personnellement, je préfère faire la même chose avec le fichier .htaccess (comme je l’ai déjà expliqué ici) plutôt qu’en php, mais parfois ça peut se révéler impossible, donc plan B…

Pas plus tard qu’hier, je l’ai fait sur un blog WordPress. La mise en place est simple, il suffit de mettre ce code en tout début du fichier header.php du thème utilisé.

Rubrique PHP

[PHP] Vérifier si une chaîne est présente dans une autre chaîne de caractères

Catégorie PHP

Pour vérifier si une chaîne est présente dans une autre chaîne de caractères, PHP dispose d’une fonction bien pratique: strpos.

Voici donc le code qui va bien pour detecter la présence d’une sous-chaîne grâce à strpos:

if (strpos($chaine, $souchaine) !== FALSE) {
echo "La sous-chaine a été trouvée dans la chaine";
}

Attention: strpos est sensible à la casse, ce qui signifie que la présence de majuscules peut empêcher la détection de la sous-chaîne. Mais comme bien souvent en PHP, il existe la même fonction, mais insensible à la casse, il s’agit de stripos.

Rubrique PHP

Faire une redirection 301 en PHP

Catégorie PHP

Voici le script d’un redirection 301 en PHP:

header("Status: 301 Moved Permanently", false, 301);
header("Location: http://www.exemple.net/repertoire/page.php");
exit();

Pour info, la redirection 301 sert principalement à informer les moteurs de recherche que l’url d’une page web est remplacée définitivement par une autre.

Attention: les instructions header doivent être placées avant que quoique ce soit de la page ne soit affiché (c’est à dire envoyé vers la fenêtre d’affichage du navigateur client), sinon elles ne fonctionneront pas!

Rubrique PHP

[PHP] Supprimer tout ce qui n’est pas des chiffres dans une chaine

Catégorie PHP

Si, par exemple, vous voulez enregistrer des numéros de téléphone dans une base de données vous allez vous heurter aux différentes notations: avec des points, des slashes, des tirets, des espaces…

Voici donc une petite expression régulière qui, en une seule ligne, va supprimer tout ce qui n’est pas chiffre dans une chaîne:

$telephone=preg_replace('/[^0-9]/', '',$telephone);
Rubrique PHP

Executer du PHP en ligne

Catégorie PHP

Parfois, on veut pouvoir tester quelques lignes de code en PHP, sans avoir à sortir le serveur de développement. Dans ce cas, je vous conseille codepad.

Il s’agit d’un site vous permettant de taper quelques lignes de codes en PHP, mais également en C, Python, Perl, Ruby, et bien d’autres… sans avoir autre-chose à faire que d’être sur cette page web. Simple comme bonjour…