Autor Zpráva
Pipaslot
Profil *
Dobrý den,
Pokouším se konfiguravat Apache 2 aby na něm fungovaly jedny zastaralé stránky, kde se vyskytuje syntaktická chyba v php:

$dbuzivatelid = mysql_query("SELECT id_uzivatele FROM uzivatel WHERE uzjmeno='{$_REQUEST['login']}'");
$uzivatelovoid = mysql_result($dbuzivatelid, "id_uzivatele");

,kde v případě výpisu a testování SQL příkazu přímo v DB SELECT opravdu vrátí potřebná data, jenže mysql_result nevrací nic. To by mělo být správně, jelikož dle PHP manuálu by mysql_result mělo mít jako druhý parametr číslo řádku a třetí parametr číslo, nebo název sloupce.
V takovém případě PHP vyhodí chybu a proměnná $uzivatelovoid je prázdná, což způsobuje chybu při nadcházejícím zápisu do databáze avšak pokud tento web spustím na placených webhostinzích, tak i přes chybu vše funguje. Naskýtá se mi tedy otázka jak přizpůsobit Apache aby vše také fungovalo.
Nejspíše budu chtít dosáhnout toho aby se za parametr "id_uzivatele" dosadila hodnota 0 a aby se provedla funkce mysql_result() avšak nevím jak toho dosáhnout.
Tori
Profil
Spíš bych uvažovala o úpravě skriptu. Pokud máte editor/IDE, které umožňuje nahrazování pomocí regulárů, nemělo by být těžké všechna volání mysql_result($promenna, "jmenoSloupce") změnit na mysql_result($promenna, 0, "jmenoSloupce") (a zkontrolovat všude, jestli se má opravdu číst první řádek dat).
Pipaslot
Profil *
Já sám se chytám za hlavu, když ten web vidím a bylo by jej lepší smazat a udělat znovu ale potřebuju to přizpůsobit aby vše fungovalo na vlastním serveru, zásah do kódu tedy nepřipadá v úvahu.
Potřeboval bych spíše napovědět, jak PHP nebo apache přinutit aby v případě že má spustit funkci s nesmyslnými parametry je nahradil nulou (v tomto případě by pak vše fungovalo) a danou funkci provedl.
Pipaslot
Profil *
Zkusím se zeptat ještě jinak:
Existují v php nějaké mechanismy, které dovedou aby třeba v případě zadání špatného datového typu parametru funkce, jej převedla na správný datový typ s výchozí hodnotou a funkce se pak provedla? Vím jistě, že něco takové je, jelikož na webhostinzích se to tak děje.
Předem děkuju za rady.

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: