JeuWeb - Crée ton jeu par navigateur
comparations de types en php [Réglé] - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : comparations de types en php [Réglé] (/showthread.php?tid=3085)

Pages : 1 2


RE: comparations de types en php - Ekilio - 23-09-2008

Hum.

Je vous invite à faire un petit tour sur : http://fr.php.net/manual/fr/language.operators.comparison.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.types.string.php#language.types.string.conversion)

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 :
<?php 
var_dump
(0 == ''); // Affichera TRUE
var_dump(0 === ''); // Affichera FALSE
var_dump(1 == '1test'); // Affichera TRUE
var_dump(1 === '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 :
<?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';



RE: comparations de types en php - Paul - 23-09-2008

Nope, tu peux ignorer les accolades si le bloc de l'accolade n'est composé que d'une seule ligne.


RE: comparations de types en php - Ludvig - 23-09-2008

Merci merci, je vais commencer a détester php autant que j'apprécie vos aides !

Non mais c'est quand même fou :langue::haha:


RE: comparations de types en php - Paul - 24-09-2008

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 !


RE: comparations de types en php - Zack - 24-09-2008

Ah je savais pas, autant pour moi :$ J'ai appris quelque chose au moins..