8778 sujets

Développement web côté serveur, CMS

Bonjour et bonne année à tous, petite question de puriste. J'ai réalisé la migration de mon framework maison de PHP5 à 7.x cette année et là j'ai un client qui me demande de migrer son ancien site de PHP5 à PHP8, du coup je remonte au front et quitte à tout chambouler, je met de côté des ajouts & nouveautés qui me semblent vraiment, cool.

En l’occurrence, en tête d'Index, derrière l'url rewriting, j'ai ca :

$langue = @addslashes($_GET['langue']);
$page = addslashes($_GET['page'] ?? null);
$action = @addslashes($_GET['action']);
$id = @addslashes($_GET['id']);
$vue = @addslashes($_GET['vue']);

Et toutes mes URL de pages sont construites suivant le même schéma avec des variables séparées par tiret équivalent donc chacune à une variable PHP au final.

Découvrant l'opérateur coalescent ??, je me demande si ca ne serait pas plus propre/élégant, de remplacer mes @ évitant l'erreur PHP (au cas ou la variable n'est pas spécifiée dans l'url) par ca :

$page = addslashes($_GET['page'] ?? null);


Qu'en pensez vous ?
Modifié par C@scou (25 Jan 2025 - 09:54)
Modérateur
Salut,

Les arobases sont une mauvaise pratique. Comment gérer proprement les erreurs ? C'est de mettre en place des exceptions. Il est même conseillé de créer un type d'exception

l'opérateur : ?? est l'équivalent de :

if(isset($_GET['page'])){
    $page = $_GET['page'];
}else{
    $page = null;
}

Modifié par niuxe (25 Jan 2025 - 16:43)
Meilleure solution
Administrateur
Et surtout penser à vérifier ce qu'il y a dans $page pour éviter les failles de sécurité.
Merci pour ce double retour rapide. Ça confirme mon sentiment.
C'était du vieux code auquel je n'avais touché depuis quelques années.

@Rodolphe : D'autant que je me suis rendu compte que j'utilisais addslashes plutôt que mysqli_real_espace_string sur ces variables, certainement car je n'avais plus trop de projets utilisant MySQL quand j'avais modifié ce code, sauf que cette année j'en ai re-eu un ou deux. Je vais vérifier tout ça.

Merci à tous deux. Smiley cligne