conseil sur l'optimisation entre isset et @

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : conseil sur l'optimisation entre isset et @

Re: conseil sur l'optimisation entre isset et @

par sirakawa » 22 mars 2014, 12:28

Ajoutons que c'est avant la requete qu'il faut tester le validité des données envoyées et pas seulement par isset regarder la doc de filter-var
$valides = false;
if (isset($_POST['var'']))
{
$var = $mysqli->real_escape_string($_POST[''var']);
$valides = true;
}

if ($valides)
{
//on peut enregistrer
}
Sur les codes "corrects" que j'ai vus qui emploient @, il ya derrière tout un codage de traitement de l'erreur éventuelle.

Re: conseil sur l'optimisation entre isset et @

par xTG » 21 mars 2014, 22:47

C'est pourtant la base de tout langage que de savoir comparer deux éléments...
http://fr2.php.net/manual/en/language.o ... arison.php
http://fr2.php.net/manual/en/control-structures.if.php

Re: conseil sur l'optimisation entre isset et @

par wwwbillgates » 21 mars 2014, 19:15

Merci pour ta réponse très précise. Cependant, pourrais tu juste me donner un petit exemple car malgré des recherches je ne sais pas comment tester si fetch est égal à false.
Merci beaucoup pour ton aide

Re: conseil sur l'optimisation entre isset et @

par xTG » 20 mars 2014, 22:53

Utiliser @ est une aberration.
C'est cacher ce que l'on pense être un ruisseau avec une pierre.
Mais le jour où le ruisseau devient un fleuve, la pierre elle a été érodée par l'eau et n'en est devenu que plus petite encore...
Un grain de sable à l'échelle de la mer.

Ne jamais utiliser quelque chose qui n'existe pas. => isset

Sauf que dans ton cas son utilisation est abusive.
Tu ne devrais pas chercher à savoir si les index existent mais plutôt si ta requête retourne au moins un enregistrement.
Donc vérifier que $articles (le retour de fetch) n'est pas égal à false.

conseil sur l'optimisation entre isset et @

par wwwbillgates » 20 mars 2014, 20:04

Bonjour, je souhaiterais avoir votre avis sur le fait de tester ou non toutes les variables avec isset() en sortie de requête sql en thermes d'optimisation. Car auparavent j'utilisai un @ pour cacher les erreur de variables susceptibles d'être vides et ca ne posait aucun problème. cependant, il est apparement déconseillé d'utiliser le @. Dois-je donc procéder de cette manière ? (ci-dessous) et cela va t'il rendre mon code plus lourd ?
Merci pour votre aide ;)

$articles_sql = $bdd->prepare("
						SELECT id, titre, url, boutique, prix, delai_realisation, prioritaire
						FROM cadeauxplaisir_test1
						WHERE url = :url
						");
$articles_sql->execute(array(
						'url' => $_GET['url']
						));
$articles_sql->setFetchMode(PDO::FETCH_ASSOC);
$articles = $articles_sql->fetch(PDO::FETCH_ASSOC);

if (isset($articles['id'])) { $articles_id = $articles['id']; }
if (isset($articles['titre'])) { $articles_titre = $articles['titre']; }
if (isset($articles['url'])) { $articles_url = $articles['url']; }
if (isset($articles['boutique'])) { $articles_boutique = $articles['boutique']; }
if (isset($articles['prix'])) { $articles_prix = $articles['prix']; }
if (isset($articles['delai_realisation'])) { $articles_delai_realisation = $articles['delai_realisation']; }
if (isset($articles['prioritaire'])) { $articles_prioritaire = $articles['prioritaire']; }