![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 1 Dołączył: 17.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Jestem początkująca w tym temacie jednak byłam zmuszona do stworzenia logowania a raczej do włączenia gotowca do strony którą robię. Z braku umiejętności wyszperałam gotowca, dość przyzwoicie działa jak na moje potrzeby, staram się go zrozumieć idzie "średnio" bo o sesjach nie wiele się miałam okazję nauczyć. Niestety autor w miejscu publikacji już się nie udziela a mam kilka pytań. Jeśli możecie mi pomóc w zrozumieniu tego magicznego skryptu to bardzo proszę. Przy okazji może komuś się przyda jako że wiele tego w internecie ale wypróbowałam masę podobnych "prostych skryptów logowania" i wiele zwyczajnie nie działa/brak jest komentarzy dla zielonych. Kod <?php //prosty skrypt logowania oparty o baze danych mysql, sesje i ciasteczka //autor: Maciej Wrona (c), 2008 //uzywaj i rozpowszechniaj jesli chcesz, tylko nie kasuj komentarza autorskiego session_start(); //sesje, do logowania ob_start(); //emulacja headerow @mysql_query("SET NAMES 'utf8';"); $adres_ip_serwera_mysql_z_baza_danych = '127.0.0.1'; $nazwa_bazy_danych = 'baza'; $login_bazy_danych = 'root'; $haslo_bazy_danych = ''; if ( !mysql_connect($adres_ip_serwera_mysql_z_baza_danych,$login_bazy_danych,$haslo_bazy_danych) ) { echo 'Nie moge polaczyc sie z baza danych'; exit (0); } if ( !mysql_select_db($nazwa_bazy_danych) ) { echo 'Blad otwarcia bazy danych'; exit (0); } /* sprawdzamy poprawnosc przeslanych danych */ if(isset($_POST['login']) && isset($_POST['pass'])) { $login = isset($_SESSION['login']) ? $_SESSION['login'] : mysql_escape_string($_POST['login']); //filtracja zmiennej $haslo = mysql_escape_string(md5($_POST['pass'])); //filtracja + haszowanie hasla $zapytanie = mysql_query("SELECT * FROM redakcja WHERE `login` = '$login'"); //pobranie rekordow $dane = mysql_fetch_array($zapytanie); if($login ==''.$dane['login'].'' && $haslo ==''.$dane['haslo'].'') { $_SESSION['admin']='ok'; //sesja przyjmuje wartosc 'ok' gdy dane z formularza zgadzaja sie z danymi z bazy $_SESSION['login']=''.$dane['login'].''; setcookie("log" , "log", time()+3600, "/","", 0); //tworzymy ciastko header("Location: log.php"); //przenosimy na strone } else { echo 'Blad logowania, probuj dalej :)'; } //w przypadku zlych danych } if(!isset($_SESSION['admin']) && !isset($_SESSION['login']) && $_SESSION['admin'] != 'ok' && !isset($_POST['submit']) && $_GET['p']!='wyloguj' && !isset($_COOKIE['log'])) { echo' <form action="log.php" method="POST"> Login:<input type="text" name="login"><br/> Haslo:<input type="password" name="pass"><br/> <input type="submit" name="submit" value="Loguj"></form>'; } if($_SESSION['admin'] == 'ok' && isset($_COOKIE['log'])) //warunek, ktory sprawdza czy sesja ma odpowiednia wartosc oraz czy istnieje ciastko, jest to koniunkcja, wiec bedzie prawdziwa jesli oba warunki zostana spelnione { echo 'Jestes zalgowany! jako '.$_SESSION['login'].', <a href="?p=wyloguj">Wyloguj ť</a>'; if($_GET['p']=='wyloguj') { session_destroy(); //kasujemy sesje setcookie("log" , "log", time()-3600, "/","", 0); //kasujemy cookies header("Location: log.php"); //przenosimy na strone logowania } } ?> 1. błędy w pierwszym widoku "przed zalogowaniem" : Notice: Undefined index: admin in C:\xampp\htdocs\test\log.php on line 47 Notice: Undefined index: p in C:\xampp\htdocs\test\log.php on line 47 Notice: Undefined index: admin in C:\xampp\htdocs\test\log.php on line 61 Generalnie rozumiem mniej więcej czego to się czepia ale nie wiem jak to poprawić... 2. błędy w widoku po poprawnym zalogowaniu: Notice: Undefined index: p in C:\xampp\htdocs\test\log.php on line 67 3. Pytanie: Załóżmy że mam stronę główną na której jest panel logowania. Użytkownik niezalogowany znając ścierzkę do podstrony "tylko dla zalogowanych" będzie miał możliwość jej oglądania czy Trzeba zrobić na tej stronie warunek typu "jeżeli zalogowany to wyświetl jeżeli nie to komunikat"? dobrze rozumiem ? Być może brzmi banalnie ale dla mnie to są pierwsze kroki niestety nauka musi przebiegać szokowo tzn. najpierw muszę to zrobić a później dopiero zrozumieć choć wolałabym odwrotnie no ale mus to mus ;] 4. Jak zrobić żeby użytkownik opuszczając stronę automatycznie został wylogowany? czy to jest bardzo ogólnie trudne czy do zrozumienia dla początkującego (nie prosze o gotową receptę tylko o radę czy warto to zrobić itd). |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
1. błędy w pierwszym widoku "przed zalogowaniem" : Notice: Undefined index: admin in C:\xampp\htdocs\test\log.php on line 47 Notice: Undefined index: p in C:\xampp\htdocs\test\log.php on line 47 Notice: Undefined index: admin in C:\xampp\htdocs\test\log.php on line 61 Poszukaj na forum, o co chodzi z "Notice", podpowiem, że nie masz zadeklarowanych zmiennych. 2. błędy w widoku po poprawnym zalogowaniu: Notice: Undefined index: p in C:\xampp\htdocs\test\log.php on line 67 j.w. 3. Pytanie: Załóżmy że mam stronę główną na której jest panel logowania. Użytkownik niezalogowany znając ścierzkę do podstrony "tylko dla zalogowanych" będzie miał możliwość jej oglądania czy Trzeba zrobić na tej stronie warunek typu "jeżeli zalogowany to wyświetl jeżeli nie to komunikat"? dobrze rozumiem ? jak najbardziej trzeba... 4. Jak zrobić żeby użytkownik opuszczając stronę automatycznie został wylogowany? czy to jest bardzo ogólnie trudne czy do zrozumienia dla początkującego (nie prosze o gotową receptę tylko o radę czy warto to zrobić itd). poczytaj o czasie życia sesji i ciasteczek. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 1 Dołączył: 17.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
wiem że nie są zadeklarowane ale nie wiem jak zadeklarować je i gdzie.
Nie za bardzo rozumiem jaką funkcję pełni tutaj 'admin' i 'p' być może dlatego nie wiem jako co powinno to być zadeklarowane. Chciałabym też wiedzieć po co tam jest coś określone jako filtracja zmiennej? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 09:22 |