ďťż
Podstrony
|
telcocafeOtóż chce zrobić logowanie oparte na sesjach w php. (Wiem że było, ale to co znalazłem NIE DZIAŁAŁO!)Mam plik w którym się logujemy w formularzu: (pass.php) Zaloguj się do panelu administracyjnego: <form action="pass1.php" method="post"> Login: <input type="text" name="login"> <br><br> Hasło: <input type="password" name="password"> <br><br> <input type="submit" value="Zaloguj"> </form> Do tego pliku są wysłane dane: (pass1.php) <? if (isset($login) && isset($password)){ if ($login == 'admin' && $password == 'pass'){ session_start(); session_register("login"); header('Location: admin.php?'.SID); exit(); } } ?> Oraz plik z tajnymi danymi dostępnymi dopiero po zalogowaniu: (admin.php) <? session_start(); if (!isset($_SESSION["login"])){ header("Location: pass.php"); exit(); } ?> Tu są moje tajne dane... Po podaniu prawidłowego hasła nie pojawia się nic na stronie i nie jest wysyłana reszta strony w tym np. footer. Gdy hasło jest nieprawidłowe wyświela się cała strona razem z kodem html za tym skryptem w przeciwieństwie do poprawnego hasła. Jak się zapewne domyślacie to wszystko nie działa. Nie mam pojęcia co może być błędne w tym kodzie gdyż sesji to ja się dopiero uczę. Możecie pomóc? Proszę baaaardzo o pomoc. //KOD JEST BAARDZO OKROJONY... RESZTĘ USUNĄŁEM W PEWNOŚCI ŻE NIE W NIEJ JEST BŁĄD. try zamiast session_register("login"); dać $_SESSION['login'] = $login Eeee... Teraz jest zupełnie inaczej. Jak wpisze poprane hasło to jest pusta strona (Ale z footerem i z wszystkim - nie tak jak wcześniej) pass1.php, a nie admin.php. Tak samo jest jak wpisze niepoprawny login lub hasło... Kończy się na pustej pass1.php (Z wszystkim j.w.) Pomóżcie! a try zamiast if (isset($login) && isset($password)) to: if (isset($_POST[login]) && isset($_POST[password])) Nie działa... ;( a moze zamiast header('Location: admin.php?'.SID); daj: header('Location: admin.php?'.$SID); lub header('Location: admin.php?'.$PHPSESSID); Nie działa... (Oczywiście wszystkie sugerowane poprawki stosuje do pierwowzoru, więc jeżeli uważacie że wasza rada z poprzednią będzie działać to piszcie.) Nie działa... ;( udostępnij gdzieś skrypt zastosuj wszystkie rady:) Do obsługiwania sesji daj taki skrypt: if (isset($_COOKIE['session_id'])) session_id($_COOKIE['session_id']); session_start(); setcookie('session_id', session_id(), time()+86400*30); I zrób cuś takiego : pass.php Zaloguj się do panelu administracyjnego: <form action="admin.php" method="post"> Login: <input type="text" name="login"> <br><br> Hasło: <input type="password" name="password"> <br><br> <input type="submit" value="Zaloguj"> </form> admin.php <? if (isset($_COOKIE['session_id'])) session_id($_COOKIE['session_id']); session_start(); setcookie('session_id', session_id(), time()+86400*30); $_POST[login] = $login; $_POST[password] = $pass'; if( $login == 'admin' && $pass == 'pass') {$_SESSION[zalogowany] = TRUE;} else {$_SESSION[zalogowany] = FALSE;} if ($_SESSION[zalogowany] == TRUE) { ?> Tu są moje tajne dane... <? } else{ echo "Zły login lub hasło!";} ?> Powinno działać. Zmiennej $_SESSION[zalogowany] możesz teraz używać na wszystkich stronach gdzie masz to: if (isset($_COOKIE['session_id'])) session_id($_COOKIE['session_id']); session_start(); setcookie('session_id', session_id(), time()+86400*30); To może spróbuj w taki sposób: <input type="hidden" name="action" value="zalogowany"> i "zapamiętaj" to przez: $_SESSION['action']; ew. session_register('action'); Musi dzialać :) MIalem dokladnie taki sam problem kiedys. Tutaj (haslo i login to slowo "test") http://ghostftp.info/tmp/pss.php jest twoj kod po pewnych przerobkach i dziala bez problemu. A stad http://ghostftp.info/sesje.zip mozesz go sobie sciangac i przeanalizowac miany (ograniczaja sie w zasadzie dododania jednej dodatkowej zmiennej) 1. daj kod 2. napisz jakiś bardziej zrozumiale Eeee... Już naprawiłem. Zamiast umieszczać w formularzu index razem z docelową stroną to na docelowej stronie umieściłem albo header do nieprawidłowej, albo header do prawidłowej... :) DZIAŁA. DZIĘKUJE WSZYSTKIM. TEMAT MOŻNA ZAMKNĄĆ. |
|||
Sitedesign by AltusUmbrae. |