ďťż
Podstrony
|
telcocafe<?PHP $password="gvalt590"; $pass_name=$_POST['pass']; if(isset($_COOKIE['password'])) { $pass = $_COOKIE['password']; } else { $pass = $pass_name; } if($pass == $password) { print('<center><font size="15">ADMIN PANEL</font></center><br><center><font size="5"><a href="index.php?id=adminpanel&ap=addnews">Dodaj newsa</a></font></center><br><center><font size="5"><a href="index.php?id=adminpanel&ap=openreg">Otwórz rejerstrację</a></font></center><br><center><font size="5"><a href="index.php?id=adminpanel&ap=closereg">Zamknij rejerstrację</a></font></center><br><br>'); @$ap=$_GET['ap']; if (file_exists($ap.'.txt')) include($ap.'.txt'); setcookie('password', $pass_name, time() +14 * 86400); } else { header('WWW Authenticate: Basic realm="Admin panel"'); header('HTTP/1.0 401 Unauthorized'); print("<center>Podaj hasło!<form action=\"$PHP_SELF\" method=\"post\">Hasło: <input type=\"text\" name=\"pass\" /><br><input type=\"submit\" value=\"Zaloguj\" /></center></form>"); } ?>Oto moja strona która wymaga podania hasła aby obejżeć strone... Jest tylko jeden problem. Zapisane Ciasteczko działa tylko przez "dwie podstrony" a tak to wyglada w praktyce: Wchodze, podaje haslo, klikam otworz rejerstracje, podaje parametr klikam dalej a on pyta sie o haslo... po podaniu hasla dane z poprzedniego formulaza juz nie moga zapisac sie do pliku bo juz zniknely a w pamieci widac tylko haslo... jak przedluzyc waznosc ciasteczka lub jak poprawic ta strone? Pomyśl - robisz ciasteczko password,a odczytujesz pass. //edit Sorry,znowu moja ślepota :P Zaraz może coś wymyślę . . . //edit Już wiem co źle robisz! Za każdym razem odświeżasz ciasteczko,nawet gdy nie występuje zmienna $_POST['pass']. Co prowadzi do konfliktu i wyświetla formularz. BTW Czy to ma być jakaś aplikacja dla początkujących hakerów? :P Użytkownik andrzej_aa edytował ten post 27 lipiec 2007, 19:29 Nie. To ma być Panel administracyjny zabezpieczony hasłem //EDIT Teraz kod wygląda tak: <?PHP $password="password"; $pass_name=$_POST['pass']; if(isset($_COOKIE['password'])) { $pass = $_COOKIE['password']; } else { $pass = $pass_name; setcookie('password', $pass_name, time() +14 * 86400); } switch($pass_name) if($pass == $password) { print('<center><font size="15">ADMIN PANEL</font></center><br><center><font size="5"><a href="index.php?id=adminpanel&ap=addnews">Dodaj newsa</a></font></center><br><center><font size="5"><a href="index.php?id=adminpanel&ap=openreg">Otwórz rejerstrację</a></font></center><br><center><font size="5"><a href="index.php?id=adminpanel&ap=closereg">Zamknij rejerstrację</a></font></center><br><br>'); @$ap=$_GET['ap']; if (file_exists($ap.'.txt')) include($ap.'.txt'); } else { header('WWW Authenticate: Basic realm="Admin panel"'); header('HTTP/1.0 401 Unauthorized'); print("<center>Podaj hasło!<form action=\"$PHP_SELF\" method=\"post\">Hasło: <input type=\"text\" name=\"pass\" /><br><input type=\"submit\" value=\"Zaloguj\" /></center></form>"); } ?> Teraz to wygląda tak: wchodzę, loguje się za pierwszym razem instrukcja isset($_COOKIE['password']) zwraca false bo ciasteczko jest widoczne dopiero po odświeżeniu strony więc wykonuję się polecenie które ustala zmienna $pass na haslo podane w formularzu a następnie deklaruje ciasteczko... ze wzgledu na to ze przy następnym otwarciu strony ciasteczko jest juz widoczne funkcja isset($_COOKIE['password']) zwraca true i ustala zmienną $pass na wartość ciasteczka i nie ustala ponownie ciasteczka więc zostaje ono niezmienione az do wyłączenia przeglądarki lub skończenia się czasu ważności owego ciasteczka. PS. Czy gdybym usunął czas ważności ciasteczko zapisałoby się na dysku i zadziałało by to jak "Zapamiętaj moje dane" na forach (nie musiałbym już więcej wpisywać u siebie tego hasła?) // Dzięki za pomoc Użytkownik kokoss15 edytował ten post 28 lipiec 2007, 09:21 |
|||
Sitedesign by AltusUmbrae. |