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
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
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
lesiak307
No, takže je to tak jak jsem říkal ([#3])
lesiak307
Profil
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
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"];
plus nějakou normální validační funkcí.
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
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
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.

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