Mám script napsaný pro php 4.3.2, ale hází chyby, když ho chci rozběhnout na Vertrigu, které má už php 5.2. Je nějaká možnost jak ten script rozběhnout, napadá mě nějaká emulace?
Díky.
#2 z_moravec
Díky za ochotu. Jako první se objeví toto:
Deprecated: Function set_magic_quotes_runtime() is deprecated in C:\Program Files\VertrigoServ\www417\includes\session.php on line 136
Pak vyskakují další, ale ty možná jsou už důsledkem té chyby první.
Jedná se o script PhpGedView v4.1.7
Hledal jsem na netu, něco jsem k tomu našel, ale nefungovalo to.
#3 Hugo
http://stackoverflow.com/questions/2217955/how-can-i-replace-the-deprecated-set-magic-quotes-runtime-in-php
Tady najdeš možné řešení.
Webové servery takové věci neošetřují, je potřeba upravit skripty podle používané verze.
#3 Hugo
set_magic_quotes_runtime()
Warning: This function was DEPRECATED in PHP 5.3.0, and REMOVED as of PHP 7.0.0.
Magic quotes se nepoužívají, protože ve stávající éře Unicode už neplní svoji funkci a vytvářely jen iluzi bezpečí.
Místo toho se používají při práci s databází tzv. prepared statements, které si s tím poradí mnohem lépe. Takže se ani nediv, že i funkce začínající "mysql_" jsou deprecated a v PHP7 už nejsou. Neměly by se už vůbec používat. Jsou nejen staré, ale i pomalé.
Řešením je přechod k ovladači MySQLi nebo modernějšímu PDO, které tyto schopnosti už mají, obejdou se bez magic quotes a při správném použití jsou (na rozdíl od magic quotes) i bezpečné.
#7 Kit
Ještě bych k tomu dodal, že je doporučováno na začátek každého vstupního skriptu vložit kód
<?php
if (version_compare(PHP_VERSION, '5.3.0', '<')) {
set_magic_quotes_runtime(0);
}
samozřejmě je to nutné pouze pokud má server defaultně magic quotes zapnuté - je nutné to vypnout, jinak se to při standardním ošetření proti injection SQL chová podivně.
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku