Autor Zpráva
sexusbtw
Profil
Zdravím.

Poraďtě někdo vševědoucí, jaký je rozdíl mezi zápisem:
$order_id = int($_SESSION[order_id]);

a
$order_id = $_SESSION[order_id];


Někdy se píše, že funkce vrací ono int(), třeba:
preg_match($re,$str); //vrátí int(1), tedy shodu 


Já sám zatím zatím int nepotřeboval, ale ve větších projektech jsem to viděl..
Díky..
Nox
Profil
sexusbtw
No očividně se jedná o vlastní funkci, "int()" v manuálu není
Ale může se jednat o převedení sessionu order id na int, jako ochrana aby tam někdo nezadal něco podlého

To jde zadat i bez funkcí, s tím co php nabídne samo:
$order_id = (int)$_SESSION["order_id"];


Navíc tyto kódy nejsou moc dobré, protože index sessionu nemají jako řetězec ale konstantní proměnnou, pouze využívají toho,
že phpko když takovou proměnnou (order_id) nezná, použije to jako řetězec...ale někdo by tam možná mohl podstrčit vlastní hodnotu
Každopádně dávat uvozovky...pokud to celé není v řetězci, je možné třeba toto:
echo "Order id je: $_SESSION[order_id]";
Tady je to ok
kletely
Profil
Nox
echo "Order id je: {$_SESSION[order_id]}";
//alebo
echo "Order id je: ".$_SESSION[order_id];
sexusbtw
Profil
no takhle
$order_id = (int)$_SESSION["order_id"];
to bylo použití...

takže je to forma ochrany? a co to tedy je? interní proměnná?
kletely
Profil
sexusbtw
INT je celočíselný dátový formát. Rozsah čísel je od -2147483648 až 2147483648.
sexusbtw
Profil
pouze využívají toho
„[i]že phpko když takovou proměnnou (order_id) nezná, použije to jako řetězec...ale někdo by tam možná mohl podstrčit vlastní hodnotu



já vím ,že takhle se do session přiřazují hodnoty, ale jak jinak obsah session vylouskat? jasně můžu používat session, ale v kódu je to o 100% přehlednější (a navíc vím, že hodnota původně přišla ze session)
podstrčit jinou hodnotu je podle mně vyloučený, když mám vždy zaplý safe_mode..
sexusbtw
Profil
kletely: aha! jako v MySQL, nj už se mi rozblesklo!
sexusbtw
Profil
Ale je mi, pánové, divné, že že když to int umažu, tak je proměnna order_id prázdná. To mi hlava nebere. Když to int v podstatě limituje řetezec co se přiřadí do order_id na pouhé číslo, tak by to mělo chodit. Pokud tam int není, tak by to mělo přiřadit i cokoliv jiného než číslo, a ne nechat proměnoou prázdnou...
Nox
Profil
kletely
Tak to druhé právě určitě ne, pro to, co už jsem psal předtím

Tvůj první moc neznám, takovéto zápisy jsem zkoušel, ale nefungovalo to (už nevim jak přesně),
ikdyž ti věřím že to funguje...možná je to nastavením, nebo jsem to psal špatně

Způsob, který jsem uvedl, je správný, někde je o tom také debata na php.vrana.cz
EDIT: už jsem našel: http://php.vrana.cz/psani-insert-into.php#d-221

sexusbtw
1) nechápu o čem to mluvíš...psal jsem o rozdílu $_SESSION[order_id] vs. $_SESSION["order_id"] (přičemž by se měl používat ten druhý)
2) ne v MySQL, v PHP (resp.v MySQL je int taky, ale teď se bavíme o PHP)
3) umažeš int() nebo (int)? A je vůbec něco v tom sessionu? Nech si zároveň přes var_dump vypisovat $order_id i $_SESSION["order_id"]
sexusbtw
Profil
3) umažu (int) .. v session je nějaké číslo vždy.. takže když to umažu, nemělo by se nic stát, jen nemám jistotu že to bude vždy celé číslo..
Aesir
Profil
Aneb PHP je dynamicky typovaný jazyk, tak je dobré si o tom něco přečíst, třeba v manuálu a počítat s tím.

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:

0