![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 16.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Od dluzszego czasu pisalem skrypty w php oparte na plikach, dzialaly dobrze i sie sprawdzaly. Teraz jednak chce liznac bazy danych np: mysql. Napisalem jakis czas temu logowanie i chcialbym teraz je przerobic na mysql. Stworzylem baze i tabele w mysqlu i teraz pisze pod nia skrypt. Niedziala. Tzn. logowanie dziala niby, ale po tym jak sie zaloguje jakbym gubil sesje, albo raczej polaczenie z baza, czy... cos tam innego sie psuje. W kazdym razie logowanie przebiega poprawnie, ale po zalogowaniu czego bym nie zrozobil zwraca mi ze jestem niezalogowany i koniec. Moze trzeba zapisywac w bazie stan? Na plikach dzialalo mi w takiej postaci, na mysqlu juz nie.
Oto skrypt (miedzy /**/ umiescilem tez kod ktory pobiera dane z pliku i uzywajac tej weryfikacji zamiast bazy skrypt bedzie dzialal poprawnie.)
Moze widzicie co robie zle. Z gory dzieki. __________________ Moderated by Bakus: Wykorzystuj właściwe znaczniki BBCode |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 22.08.2003 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Wiesz co.... Bardzo probowalem sie skupic ale skrypt jak dla mnie malo czytelny i strasznie zamotany.... Nie lepiej bedzie zrobic od nowa dla logowania na db ?(IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
A tak na logike... Jesli Ci "gubi" logowanie to zobacz czy poprawnie zostaja zapisane zmienne w sesjach.. Jesli sa dobrze zapisywane to wiadomo ze cos z ich odczytem jest zle ... Wszystko niby na chlopski rozum a moze wiele pomoc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 16.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Od nowa chetnie bym napisal, ale wlasnie nie wiem za bardzo w czym tkwi problem.
Bo tu sie loguje, podejrzewam ze chodzi bardziej o polaczenie z baza, niz sesje. Chociaz... kurcze nie wiem. Skrypt poprostu: -sprawdza czy sa dane wpisane z formularza, lub czy istnieje sesja. -potem polaczenie z baza -jak sa zmienne to sprawdza czy baza znajdzie wynik odpowiedni -jak znajdzie to przypisuje dane do sesji i dalej to juz wiadomo... Po zalogowaniu jednak kazde przejscie na strone inna to zmienna ustawiona po skutecznym logowaniu na true zmienia sie na false ($zalogowany). Moze ktos inny wie gdzie tkwi blad? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 22.08.2003 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
No to moze zrob tak:
Nie wiem jak przechodzisz do kolejnych stronek ale zrob w ten sposob: index.php?action=jaka_nazwa i teraz w tym samym pliku dodaj np. cos takiego:
Chodzi mi o to ze poprostu to czy ktos jest zalogoany czy nie, nie wychodzi poza glowny plik czyli np. index.php Jesli zrobisz cos takiego i nie bedzie dzialac tzn. ze zle tworzysz sejse, albo zle porownujesz... Acha i jeszcze jedno (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Samo logowanie zrob np. w ten sposob.... Akrypt pobiera login i haslo, nastepnie jest wykonywane zapytanie do bazy typu: "SELECT login FROM tabela WHERE login='$login' AND pass=password('$pass')" i w tej chwili jak otrzymasz zapytanie zwroci Ci login tzn. ze sie zgadza i wtedy robisz np. takie cos: $_SESSION['login'] = $login (ten login co otrzymales z bazy danych) i teraz w skrypcie ktory napisalem wyzej w funkcji if gdzie napisalem zalogowany wpisujesz np. tak: if(isset($_SESSION['login'])) { ..... } Mam nadzieje ze chociaz troszke mnie zrozumiales:P Godzina pozna wiec moze troszke niejasno napisalem, niemniej wydaje mi sie ze troche mozna z tego wyniesc (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Pozdro (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 16.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Nie chcialo ci sie spojrzec na skrypcik ktory wkleilem w 1 poscie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Mam 2 pliki: index.php -> pelni role szablonu i includuje plik (register.php) register.php -> powyzszy kod, w ktorym: Jesli logowanie przebieglo pomyslnie to oznacza ze zmienna $zalogowany = true; Kod if($zalogowany == "true"){ Po zalogowaniu daje opcje przejscia do podstrony panelu: Kod echo '<dt><span>Podstawowe</span></dt><dt><span>•</span> <a href="'. $_SERVER["PHP_SELF"] .'?id=1">Dzial</a></dt>'; if(@$_GET['id'] == "1"){ echo 'Sztama!'; } Wiec niby jest to o czym pisales. :| |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 22.08.2003 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
So... Zamiast przypisywac do zmiennej zalogowany true i false proponuje zrobic tak jak mowilem tzn. zeby zapytanie zwracalo login i jak zwroci to przypisac je do sesji i sprawdzac czy sesje istnieje... W koncu to jest zmienna superglobalna i nie bedzie trzeba sie martwic na przyszlosc...
Po 2 nie wiem skad to sie wzielo w ogole:
tzn gdzie masz te zmienne ? z bazy je bierzesz? Pozdro |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 16.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Kod if((isset($_POST['login']))&&(isset($_POST['pass']))){ $login = addslashes($_POST['login']); $pass = addslashes($_POST['pass']); if(!isset($db_status) || $db_status !== false){ $query = mysql_query("SELECT * FROM `user` WHERE `login`='".$login."' AND `pass`='".$pass."';"); if(mysql_num_rows($query) == 1){ $zalogowany = "true"; $_SESSION['login'] = $login; $_SESSION['pass'] = $pass; $wiersz = mysql_fetch_array($query); $_SESSION['name'] = $wiersz['name']; $_SESSION['email'] = $wiersz['email']; $user_logged = $wiersz['level']; } } } Jak widzisz tutaj do $user_logged po zalogowaniu przypisuje dane z bazy. Te dane to numerki ktore oznaczaja poziom dostepu/uprawnienia. Dalej przypisuje tym numerka juz poprostu wartosci aby np zamiast "2" wyswietlic "Administrator" i po to jest $status. Potem tez w zaleznosci od tego jaki ma gosc status dostaje takie opcje uzytkownika jakie sie mu naleza. A co do logowania to na poczatku sprawdzam czy jest zmienna loginu i hasla tzn wypelnil formularz logowania, jesli nie to sprawdz czy istnieje sesja.
Ten post edytował Lerno 11.02.2005, 11:52:04 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 22.08.2003 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
No ok, i co dalej sie wychacza ? Jesli tak to napisz jak wpisujesz przejscie do innej strony...
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 16.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Napisalem od nowa, starajac sie analizowac krok po kroku no i chyba to dalo efekt, bo zdaje sie ze dziala. Chcialbym sie teraz zapytac czy ta metoda jaka ponizej zamieszcze jest BEZPIECZNA! Prosze o wszelkie opinie, nawet jakies "polslowka", najwyzej poszukam i zglebie temat. Chcialbym poprostu miec pewnosc, czy nie mozna tego byle jakim trickiem obejsc ot tak.
index.php
submit.php
config.php
Ten post edytował Lerno 11.02.2005, 17:01:22 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 22.08.2003 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
No i dla mnie lajt (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Bledow chyba nie ma (chodz moge sie mylic (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ). Wykorzystaj teraz to dobrze do przechodzenia przez strony i bedzie lajt (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Pozdro |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 16.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Strzyzyk dzieki za helpa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Oczywiscie powinno byc jeszcze przed sprawdzaniem danych usera z info w bazie dodane addslashes(); To chyba uniemozliwi atak SQL injection, ale nie jestem pewien (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Mam nadzieje ze ktos z bardziej zaawansowanych ludzikow napisze tu cos wiecej o bezpieczenstwie powyzszego skryptu. Nadzieja matka glupich, ale co tam... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Jeszcze raz dzieki za helpa Strzyzyk. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 0 Dołączył: 22.08.2003 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
N/p. Poza tym przed sprawdzeniem powinno byc chyba stripslashes a nie addslashes ?(IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Pozdr (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 22.04.2004 Skąd: Żoliborz Ostrzeżenie: (0%) ![]() ![]() |
Cytat Oczywiscie powinno byc jeszcze przed sprawdzaniem danych usera z info w bazie dodane addslashes(); To chyba uniemozliwi atak SQL injection, ale nie jestem pewien winksmiley.jpg Polecam mysql_escape_string" title="Zobacz w manualu PHP" target="_manual |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 06:23 |