27
header() to nie zabezpieczenie
Dzisiaj pod lupę postanowiłem zaciągnąć bardzo często używaną funkcję header(). Właściwie nie tyle samą funkcję, co jej złe wykorzystanie. Oto jak wygląda kod, z którym zetknąłem się już kilka razy:
<? if( !isset( $_SESSION['session']["authCode"] ) ) header("Location: login.php"); echo "WTF is wrong with my awesome code?!"; ?> |
A poniżej słów kilka dlaczego jest on zły.
19
Zabugowane błędy
Dzisiaj trochę o PHP – z naciskiem na argumenty dlaczego error_reporting() jest dobry i powinno się z niego korzystać. Niestety, bardzo rzadko spotykam się z kodami, w których figuruje banalna linijka: error_reporting(0);
A szkoda – błędy wypluwane przez interpreter powinien widzieć tylko administrator (serwer produkcyjny?), a komunikację z użytkownikiem powinno zapewniać napisane GUI.
8
Diabeł tkwi w szczegółach precyzji
Pamięć komputera jest skończona. Zastanówmy się przez chwilę, co może wydarzyć się, gdy będziemy chcieli przechować w niej liczby, o nieskończonej ilości cyfr – na przykład ułamki. Zajmijmy się liczbami zmiennoprzecinkowymi, zapisanymi w notacji naukowej. W reprezentacji taką liczbę dzieli się na dwie części: significand (mantysa) oraz exponent (mówi, o ile miejsc należy przesunąć przecinek). Przykładowo dla pary (significand/exponent) 1.246/2 otrzymamy liczbę 124.6 (1.246e2 w notacji naukowej).
Oczywiście nie można zapisać w pamięci liczby zmiennoprzecinkowej z bezbłędną dokładnością. Stosuje się pewne przybliżenia, które mogą wpłynąć na wynik. Co jednak stanie się, gdy dla danej liczby algorytm aproksymacji niewypali?
Czytaj dalej »»