Autor Zpráva
G3n3sis19
Profil
nevím jak to 100% vysvětlit, tak to zkusím kódově.

<?php
$idv = "3 or 1 = 1";
$id = intval($idv);
if ($id == $idv) echo "Je to stejné"; //což mi výjde jako true ale to tak nemá být,protože v tu chvíli je $idv `3 or 1 = 1` a $id je `3`. 

jak je to tedy možné?
king26
Profil
G3n3sis19:
v tom IFu se string převede na int, takže oboje bude 3

if($id === $idv) echo "true";
- tohle porovná i datový typy, takže zde by měl být výsledek false
G3n3sis19
Profil
no jo, ale když bude

<?php
$idv = "3";
$id = intval($idv);
if ($id === $idv) echo "Je to stejné"; 

tak to taky nevýjde že?
ale jak je možné že to převadí na int?
TomášK
Profil
G3n3sis19:
ale jak je možné že to převadí na int?
Snaží se vyhovět, pokud to jde. Když porovnáváš int s float, také asi očekáváš, že se int převede na float a poté se porovnají. S řetězci je to podobné.
Davex
Profil
G3n3sis19:
ale jak je možné že to převadí na int?
Protože je to jedna ze základních vlastností jazyka PHP.
G3n3sis19
Profil
a kdybych tu proměnnou dal do "" ?

"$idv"

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: