Autor Zpráva
matthew
Profil
Doma na localhostu mi to jede, ale na webzdarma nikoliv.
Jiné cookies mi na webzdarma ale jedou...

Čím to je, že mi nefunguje tento skript?

<?php
include('config.php');

for($i=1; isset($login[$i]); $i++){
 if ($login[$i] == $_POST['login'] && $heslo[$i] == $_POST['heslo']) {
    Setcookie("login",$login[$i],time() + 86400);
    Setcookie("heslo",$heslo[$i],time() + 86400);
  }
}

header("Location: administrace.php");
?>

config.php:
<?php
$login[1] = 'admin';
$heslo[1] = 'superheslo';

$login[2] = 'meno2';
$heslo[2] = 'heslo2';
?>
Joker
Profil
Čím to je, že mi nefunguje tento skript?
Je to rozbitý.

Co znamená "nefunguje"?
matthew
Profil
Ty cookies jakoby se vubec nezapsaly...
tiso
Profil
1. ukladať do COOKIE meno a heslo nie je práve najbezpečnejšie...
2. 4-tý parameter pre COOKIE je cesta, nemáš náhodou skript pre logovanie mimo rootu?
3. pri presmerovaní sa podľa normy má používať absolútna adresa
Leo
Profil
"Ty cookies jakoby se vubec nezapsaly..."

A co kouknout se treba na http komunikaci klient-server (pro Firefox napr. Live HTTP Headers), Leo
matthew
Profil
1. ukladať do COOKIE meno a heslo nie je práve najbezpečnejšie...
Já vím, ale jak to udělat jinak? Poraď...
2. 4-tý parameter pre COOKIE je cesta, nemáš náhodou skript pre logovanie mimo rootu?
Mám to v /admin/prihlasovani.php
setcookie("login",$login[$i],time() + 60*60,"/admin");
To taky nefunguje... :-(
3. pri presmerovaní sa podľa normy má používať absolútna adresa
header("Location: http://nazevwebu.borec.cz/admin/administrace.php");
Tohle? A proč?
matthew
Profil
Když to dám do rootu, stejně to nefunguje...
Ale jak je možné, že u mě na localhostu to funguje, a na webzdarma ne???
:-O
:-(
:-/
Jack Finger
Profil
setcookie("login",$login[$i],time() + 60*60,"/admin");
nejsem si jistej, ale když dáš na začátek cesty znak / , nebere se to od úplně nejvyššího adresáře? tzn, že to je nějakej tam /home/ftp/ic.cz/domena/admin..... nebo něco takového.... nebo se mýlím?
matthew
Profil
asi jo, a jak to zjistim?
Jack Finger
Profil
echo $_SERVER['DOCUMENT_ROOT'];
nebo nějak tak, use google, nebo phpinfo()
Leo
Profil
Rekl bych, ze / jako cesta se vztahuje ke korenovemu adresari DOMENY, ne souboroveho systemu serveru. Uz jste se koukal na tu http komunikaci nebo to porad delate jako kdyz slepy chirurg operuje slepe strevo? Leo
Jack Finger
Profil
Leo
aha, díky za upřesnění.
matthew
Profil
to Leo:
Na komukinaci sem koukal, a nic...

Ale už vím v čem je problém!
include('config.php');
if ($login[$i] == $_POST['login'] && $heslo[$i] == $_POST['heslo'])

Když vypíšu
echo $login[1];

Vypíše to pouze první písmeno!!!
A tak se nesplní podmínka, a cookie se nezapíše!
Ale u mě na localhostu to funguje... nevíte čím to může být?
matthew
Profil
Po pár hodinách testování se mi to konečně podařilo!
Ani nevím jak...
Nechápu to, ale když se pole jmenuje login nebo heslo, tak se vypisuje jen 1. písmeno...
Pojmenoval jsem to log a pass, a všechno funguje... :-)
bukaj
Profil
matthew
Když vypíšu
echo $login[1];
Vypíše to pouze první písmeno!!!

Není třebas $login řetězec?

A co if ($login == $_POST['login']...?
Leo
Profil
Pokud mate zapnute register globals pak neni dobry napad pojmenovat stejne ($login) globalni promennou i cookie (nebo session promennou). Zkuste pro nazev cookie (prvni parametr v setcookie) neco jineho nez login, Leo

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