Autor | Zpráva | ||
---|---|---|---|
lesiak307 Profil |
Dobrý deň, po dlhej dobe sa na Vás obraciam a prosím o pomoc. Aká chyba je v tomto kóde?
function nactiPole($klic, $vychozi='', &$chyby=false) { if (isset($_POST[$klic]) && $_POST[$klic] != '') return $_POST[$klic]; if ($chyby !== false) $chyby[] = $klic; // pokud je zadana vychozi hodnota, vrat ji; jinak vrat false. return (!empty($vychozi) ? $vychozi : false); } // EDIT dodatočne pridané $chyby = array(); // nejdriv se musi vytvorit pole pro chyby $meno_povinne = nactiPole('meno', '', $chyby); // povinne pole $meno = trim(htmlspecialchars($_POST['meno'])); //posílání políčka "meno" //... potom formulár pre odoslanie mailu Parse error: syntax error, unexpected '=', expecting ')' in /data/e/m/..... on line 48 - kod je vystrihnuty zo stranky - cislo riadku v tomto pripade je 1 Dakujem |
||
donny Profil |
#2 · Zasláno: 5. 3. 2013, 15:19:21
Obecne sa mi tá funkcia nezdá..
1. nactiPole($klic, $vychozi='', &$chyby=false) Ako argument funkcie predávaš $klic, napriek tomu vo vnútri funkcie pracuješ s polom POST. Toto podľa mňa nemá čo robiť v tej funckie if (isset($_POST[$klic]) && $_POST[$klic] != '') return $_POST[$klic]; Ak už to teda overujem tak sa to robí tak že nactiPole spustim s $_POST[klic] a ďalej už potom overujem len $klic. 2. tá funkcia rozhodne nemá 48 znakov, takže parse error ktorý si sem dal nám nič nenapovie, bolo by fajn povedať ktorý presne riadok to je aby sme sa mali čoho chytiť. 3. vôbec nechápem čo je cielom tejto funkcie, s názvu by som predpokladal že pracuje s polom ale v podstate ti má vrátiť buď argument vychodzi, ktorý tam sám vkladáš alebo false. Je to určite celá funkcia? |
||
Joker Profil |
#3 · Zasláno: 5. 3. 2013, 15:28:54
lesiak307:
Pořiďte si editor, který upozorňuje na syntaktické chyby. Na jaké verzi PHP to běží? Do PHP 5 nemohl parametr předávaný odkazem mít výchozí hodnotu. Jinak konstrukce té funkce je opravdu divná. donny: „tá funkcia rozhodne nemá 48 znakov“ To je řádek 48 a lesiak307 píše, že odpovídá řádku 1 vloženého kódu. |
||
lesiak307 Profil |
Joker:
„Na jaké verzi PHP to běží?“ PHP Version 4.4.9 sluzby: websupport.sk |
||
donny Profil |
Joker:
> donny: > „tá funkcia rozhodne nemá 48 znakov“ > To je řádek 48 a lesiak307 píše, že odpovídá řádku 1 vloženého kódu. pardón to sa mi podarilo prehliadnuť, v takom prípade tam chybu (okrem tej zvláštne konštrukcie) nevidím.. bude niekde predtým. |
||
lesiak307 Profil |
tak ja ešte asi doplním pokračovanie - vid prvotný kód
skušal som na inom serveri s verziou 5.3.1 - tam to ide bez problémov |
||
Joker Profil |
#7 · Zasláno: 5. 3. 2013, 16:15:55
lesiak307
No, takže je to tak jak jsem říkal ([#3]) |
||
lesiak307 Profil |
#8 · Zasláno: 5. 3. 2013, 16:23:03
Joker:
„Do PHP 5 nemohl parametr předávaný odkazem mít výchozí hodnotu“ Ako to teda prosím Vás vyriešiť? |
||
Joker Profil |
#9 · Zasláno: 5. 3. 2013, 17:10:06
lesiak307:
„Ako to teda prosím Vás vyriešiť?“ Za prvé doporučuji vyměnit hosting. Podpora PHP 4 skončila ke konci roku 2007. Když hosting není schopný aktualizovat ani na tři roky staré PHP 5.3 a používá větev PHP, která byla zastaralá už před pěti lety, nabízí se otázka: Na co všechno dalšího ještě kašlou? Za druhé celá ta funkce by se dala nahradit něčím jako: $meno = empty($_POST["meno"]) ? "" : $_POST["meno"]; Tahle funkce stejně nefunguje správně (neumí jako výchozí hodnotu použít prázdný řetězec, což je asi nejčastější případ, ani třeba řetězec "0") a dělá jen jednu validaci (povinné pole), zatímco jiné validace by se musely dělat jinde. Povinnost pole bych raději testoval společně s ostatními validacemi. |
||
lesiak307 Profil |
#10 · Zasláno: 5. 3. 2013, 17:17:32
Joker:
Toho poskytovateľa osobne nevyužívam a už som na to upozorňoval, ale márne... Ďakujem, znova som išiel na to z Košíc do Bratislavy cez Čínu :) |
||
Davex Profil |
#11 · Zasláno: 5. 3. 2013, 19:09:05
lesiak307:
„už som na to upozorňoval, ale márne... “ Websupport umí i PHP 5.2, 5.3 a 5.4, což by se mělo dát přepínat v administraci hostingu. |
||
Časová prodleva: 11 let
|
0