Autor Zpráva
marcus33cz
Profil *
Mám celkem jednoduchý kód a potřeboval bych poradit, jak do něj umístit uvozovky (nebo apostrofy) tak, aby fungoval nějak tak všude:

Toto mi funguje u mě na localhostu a na prvnim hostingu naprosto v pořádku a bez vedlejších efektů; nefunguje ale na druhém hostingu:
foreach ($_POST as $jmeno => $hodnota)
  {$_POST[$jmeno]=mysql_real_escape_string("$hodnota");}
  foreach ($_GET as $jmeno => $hodnota)
  {$_GET[$jmeno]=mysql_real_escape_string("$hodnota");}


Toto ma funkčnost stejnou, k tomu mi to ještě vytvoří do arrayí prvek $jmeno
foreach ($_POST as $jmeno => $hodnota)
  {$_POST["$jmeno"]=mysql_real_escape_string("$hodnota");}
  foreach ($_GET as $jmeno => $hodnota)
  {$_GET["$jmeno"]=mysql_real_escape_string("$hodnota");}


Tohle třetí řešení je opravdu zajímavé, na localhostu i prvním hostingu opět naprosto OK. Ale pozor:
Na druhém hostingu toto funguje jen na jedné stránce (která zpracovává formulář přes $_POST). Proměnné zobrazí, ale není schopný je předat do $_SESSION. K tomu to ještě začne vypisovat chyby Access denied for user 'apache'@'localhost' a A link to the server could not be established pro řádky 2 a 4.
foreach ($_POST as $jmeno => $hodnota)
  {$_POST['$jmeno']=mysql_real_escape_string("$hodnota");}
  foreach ($_GET as $jmeno => $hodnota)
  {$_GET['$jmeno']=mysql_real_escape_string("$hodnota");}


Rád bych řekl, že když tyhle čtyři řádky z kódu vynechám, tak fungují stránky a předávání proměnných v pořádku všude, takže problém je podle mě nejspíše tady a ne v nějakém připojení (i když kdo ví...)
panther
Profil
marcus33cz:
1. „Toto mi funguje u mě na localhostu a na prvnim hostingu naprosto v pořádku a bez vedlejších efektů; nefunguje ale na druhém hostingu:
jak se nefunkčnost projevuje? Pokud tam jsou proměnné, může to být apostrofů i uvozovek.
Joker
Profil
marcus33cz:
V tom uvedeném kódu nemají uvozovky být vůbec. Přesto vyloženě špatně je jenom ten třetí, přesně tomu odpovídá zvýrazňovač syntaxe tady na fóru: Co je červené, bere se jako řetězec.

Chyba „Access denied for user 'apache'@'localhost' a A link to the server could not be established“ znamená, že jsou špatně přihlašovací údaje k databázi, s tím kódem to nemá nic společného.
marcus33cz
Profil *
panther:
No na každé stránce v administraci includuju soubor podminky.php (který obsahuje tenhle kód).

Následuje ověření, jestli se údaje z formuláře $_POST['heslo'] a $_POST['username'] shodují s přihlašovacími údaji k DB (asi proto ten error). Pokud ano, tak se údaje z $_POST uloží do $_SESSION a odtamtud se pak ověřují znovu (třeba při zobrazení jiné stránky).

Problém pak je, že když se ty proměnné nepřenesou, samozřejmě ověření selže.

Joker:
Ano, máš pravdu, já jsem to taky na poprvé automaticky napsal úplně bez uvozovek, ale když to nefungovalo, tak jsem zkoušel asi 10 dalších variant.

Nejvíc mě zaráží, že na tom hostingu funguje jen ta syntaxe, která je vyloženě špatně. Asi půjdu napsat radši jim.

Jinak kdyby to pomohlo, tak na localhostu mám XAMPP 1.7.3 (PHP 5.3.1), fungující hosting je Onebit a nefungující je Savana...

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: