JeuWeb - Crée ton jeu par navigateur

Version complète : comparations de types en php [Réglé]
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Pages : 1 2
Hum.

Je vous invite à faire un petit tour sur : http://fr.php.net/manual/fr/language.ope...arison.php

Donc, reprennons :

- == est une comparaison d'égalité. Effectivement, comparer un int avec un string amène à la conversion du string en int (cf : http://fr.php.net/manual/fr/language.typ...onversion)

Citation :La valeur est fournie par la portion initiale de la chaîne de caractères. Si la chaîne de caractères commence par un caractère numérique valide, ce sera la valeur utilisée. Sinon, la valeur sera de 0 (zéro).

Donc, en cas de test avec un double égal, la conversion a lieu. La chaine est alors convertie : ici, elle donne 0 (pas de chiffres dans le mot), donc elle est égale, donc le test marche.

- === : identique.

Citation :TRUE si $a est égal à $b et qu'ils sont de même type

Donc comme indiqué plus haut, cela vérifie le type. Quelques exemples :

Code PHP :
var_dump(== ''); // Affichera TRUE
var_dump(=== ''); // Affichera FALSE
var_dump(== '1test'); // Affichera TRUE
var_dump(=== '1test'); // Affichera FALSE 

Donc voila, pour un test entre deux types, faites un triple égal. Sinon, vous aurez toujours 0.

Corrolaire :

admin.php
Code PHP :
<?php

$mdp 
$_GET['mdp']
if(
$mdp == 'mon_mot_de_passe_admin')
{
connecter_administrateur();
}
?>

Si un utilisateur s'amuse à faire admin.php?mdp=0, il aura accès à votre administration.

admin.php
Code PHP :
<?php

$mdp 
$_GET['mdp']
if(
$mdp === 'mon_mot_de_passe_admin')
{
connecter_administrateur();
}
?>

Ceci corrige la faille.

Bonne journée !

PS : Zack, les accolades ne sont absoluement pas obligatoires en PHP pour une seule instruction.

Code PHP :
// Est valide
if(true)
{
echo 
'toto';
} else {
echo 
'tata';
}

// Est aussi valide
if(true)
echo 
'toto';
else
echo 
'tata';

// Est toujours valide
$toto = (true) ? echo 'toto' : echo 'tata'
Nope, tu peux ignorer les accolades si le bloc de l'accolade n'est composé que d'une seule ligne.
Merci merci, je vais commencer a détester php autant que j'apprécie vos aides !

Non mais c'est quand même fou 2228
PHP caybien.

Et sinon pour comparer des types tu as toutes les fonctions du type is_numeric(), is_integer()... etc. Cf. php.net pour plus d'infos !
Ah je savais pas, autant pour moi 11 J'ai appris quelque chose au moins..
Pages : 1 2
URLs de référence