Autor | Zpráva | ||
---|---|---|---|
mackopu Profil |
#1 · Zasláno: 8. 3. 2005, 09:53:59 · Upravil/a: mackopu
To mi tedy řekněte,
na stránkách mám formulář s loginem do administrace: <?a když ten skript spustím, NIC se nestane. Načte se, to ano, ale nepřepošle mě na index.php, dokonce ani když vypíšu špatné heslo, tak mi nevynadá. Prostě nic. Na localhostu to funguje normálně. Proboha, kde dělám chybu??? |
||
Wan-To Profil * |
#2 · Zasláno: 8. 3. 2005, 09:58:11
K datům z formuláře přistupuj pomocí pole $_POST[].
Mělo by to fungovat. |
||
mackopu Profil |
#3 · Zasláno: 8. 3. 2005, 10:11:11
Už to šlape - díky moc. To pole znám, ale neobtěžoval jsem se ho použít :-/ Jen tak ze zájmu: netušíš PROČ to chodí na lokálu?
|
||
Wan-To Profil * |
#4 · Zasláno: 8. 3. 2005, 10:12:43
Dá se to vypnout v konfiguraci PHP kvůli bezpečnosti. Server, na kterém máš stránky, chce být asi bezpečný a tak to vypíná.
|
||
Honza Hučín Profil |
#5 · Zasláno: 8. 3. 2005, 10:14:29 · Upravil/a: Honza Hučín
Doplním, co napsal Wan-To. Automatické přebírání hodnot z formulářů do proměnných je zařízeno direktivou register_globals v php.ini. Obvykle to bývalo spuštěné, ale z hlediska bezpečnosti je lepší to mít vypnuté a přebírat hodnoty přes superglobální pole (např. $_POST, $_GET, $_COOKIE apod.). Taky jsem s tím měl svého času podobný problém.
|
||
mackopu Profil |
#6 · Zasláno: 8. 3. 2005, 10:14:58
Tak to je zřejmě důvod, proč mi při přechodu na jiný hosting přestaly "zčistajasna" chodit některé skripty. Díky za osvětlení :-)
|
||
Wan-To Profil * |
#7 · Zasláno: 8. 3. 2005, 10:16:13
Typický příklad - includovaný skript je vytvořen tak, aby se spustil jen pokud bude proměnná $aaa nastavená nějakým vnějším skriptem na "bbb":
Kdyby bylo povolené získávání proměnných bez polí $_GET[] ($HTTP_GET_VARS[]) nebo $_POST[] ($HTTP_POST_VARS[]), dalo by se napsat do adresy chraneny.php?aaa=bbb a skript by šel spustit. |
||
Wan-To Profil * |
#8 · Zasláno: 8. 3. 2005, 10:17:33
Takže předchozí skript bude fungovat pouze vložením z jiného skriptu:
|
||
mackopu Profil |
#9 · Zasláno: 8. 3. 2005, 10:28:48
Rozumím. Pak tedy ve všech skriptech, které zpracovávají proměnné předané pomocí metody POST, musím tyto proměnné přepsat. Neplatí něco podobného o proměnných předávaných prostřednictvím adresního řádku (odkazem)?
|
||
Wan-To Profil * |
#10 · Zasláno: 8. 3. 2005, 10:30:54
V adresním řádku se používá metoda GET, takže pole $_GET[] nebo $HTTP_GET_VARS[]. Taky přepsat ;-)
|
||
mackopu Profil |
#11 · Zasláno: 8. 3. 2005, 10:36:12
No jo vlastně :-/
Tak to bude docela opruz. Leda bych si na začátku skriptu zjednodušil práci např. $login_admin=$_POST["login_admin"];atd. |
||
Wan-To Profil * |
#12 · Zasláno: 8. 3. 2005, 10:39:28
Opruz to je, vím to z vlastních zkušeností ;-)
Navíc myslím nemůžeš používat funkci isset(), protože ta prověřuje existenci proměnné, ale pole ti nikdy nevrátí neexistující proměnnou, ale místo ní prázdný řetězec. Tím si však nejsem moc jistý, každopádně prověřování prázdného řeteězce mi funguje. |
||
Wan-To Profil * |
#13 · Zasláno: 8. 3. 2005, 10:40:57
Možná by šla napsat funkce, která data z pole vytáhne do normálních proměnných, to by ale nebylo moc bezpečné.
|
||
Honza Hučín Profil |
#14 · Zasláno: 8. 3. 2005, 12:02:12
Šla, podívej se na http://interval.cz/clanek.asp?article=2264 dolů.
|
||
Wan-To Profil * |
#15 · Zasláno: 8. 3. 2005, 12:52:56
Ale nebude bezpečná, skript se totiž bude chovat jako se zapnutými register_globals.
|
||
mackopu Profil |
#16 · Zasláno: 8. 3. 2005, 12:53:19
Tak to by bylo přesně ono, jen bych ještě potřeboval nějaký polopatistický příklad použití u konkrétních proměnných :-)
|
||
Wan-To Profil * |
#17 · Zasláno: 8. 3. 2005, 12:59:14
Tenhle sriptík ti v podstatě zapne register_globals. Ale jak jsem asi třikrát říkal, není bezpečný!!! |
||
mackopu Profil |
#18 · Zasláno: 8. 3. 2005, 13:07:29
Díky. Dobře si to rozmyslím ;-)
|
||
Wan-To Profil * |
#19 · Zasláno: 8. 3. 2005, 13:08:45
Funguje ti?
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0