Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z logowaniem oraz połączeniem z bazą danych
secretservice
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 9.05.2013

Ostrzeżenie: (0%)
-----


Witam. Otóż piszę na projekt na studia pewną stronę internetową. Jako, że dopiero zaczynam na dobrą sprawę w tego typu rzeczach chciałbym abyście rzucili okiem na następujące problemy.

1. Brak połączenia z bazą danych w przypadku wczytywania zmiennych do połączenia z configu linkowanego poprzez require_once(), połączenie zostaje nawiązane gdy jako parametry funkcji połączenia do bazy przekażę poszczególne dane tekstem jawnym, w przypadku odwoływania się poprzez zmienne wpisane w configu nie działa.
2. Po wykonaniu rejestracji wpis do bazy danych zostaje wykonany poprawnie, e-mail przychodzi poprawnie, jednak nie można się zalogować pomimo wpisania poprawnych danych logowania.

Pliki:
config.php - http://www.wklej.org/hash/9c4ccf084d9/
rejestracja2.php - http://www.wklej.org/hash/4229fadcf18/
logowanie.php - http://www.wklej.org/hash/a90b227f7d2/

Bardzo proszę o pomoc w rozwiązaniu tych dwóch problemów i z góry dziękuję.

Ten post edytował secretservice 9.05.2013, 08:30:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Michael2318
post
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

Ostrzeżenie: (0%)
-----


  1. if ($hash=$hash_z_bazy)


Tak się nie porównuje, Ty przypisujesz... Operator porównania to podwójny znak równości czyli '=='.
http://phpkurs.pl/operatory/

Ten post edytował Michael2318 9.05.2013, 08:41:01
Go to the top of the page
+Quote Post
secretservice
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 9.05.2013

Ostrzeżenie: (0%)
-----


Dziękuje za pomoc, przeoczenie z mojej strony.
Co do problemu z połączeniem z bazą danych to rozwiązałem go. Polegał na tym, że nadpisywałem zmienną, niefortunnie pokrywała się nazwa login (użytkownika) oraz login (do bazy danych).
Problem jednak teraz jest taki, że nie działa mi sesja. Logowanie przebiega poprawnie, ale mamy sytuację, że użytkownik dalej jest niezalogowany.
Go to the top of the page
+Quote Post
Michael2318
post
Post #4





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

Ostrzeżenie: (0%)
-----


Nie ma tutaj nigdzie index.php załączonego, a to tam chyba już sprawdzasz czy ktoś jest zalogowany czy nie? ;>

EDIT:

http://www.wklej.org/hash/a90b227f7d2/
Zanim tam cokolwiek wyświetlisz to sprawdź sobie czy ktoś już nie jest czasem zalogowany. Po co wyświetlać formularz logowania userowi, który już jest zalogowany?

Ten post edytował Michael2318 9.05.2013, 09:02:57
Go to the top of the page
+Quote Post
secretservice
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 9.05.2013

Ostrzeżenie: (0%)
-----


Tak już to zrobiłem, jeszcze nawet zanim napisałeś. Ale dzięki za pomoc.
Na razie wszystko działa, ale jeszcze mam pewne problemy z inną częścią kodu. Jeżeli sobie nie poradzę to również będę prosił o pomoc.

Jeszcze taki kod:
http://www.wklej.org/id/1034317/

Próbowałem wszelkiego rodzaju funkcji przetwarzających zapytanie SELECT dla tego przypadku i żadna nie działa. Jak powinienem poprawnie sformułować część kodu odpowiedzialną za wykonanie zapytania pobierającego wartość kolumny admin dla użytkownika o danym loginie?

To samo pytanie tutaj http://www.wklej.org/hash/c90243a2431/
Też chodzi o to zapytanie, które sprawdza, czy użytkownik jest adminem.

Ten post edytował secretservice 9.05.2013, 10:19:08
Go to the top of the page
+Quote Post
Michael2318
post
Post #6





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

Ostrzeżenie: (0%)
-----


Cytat
Jak powinienem poprawnie sformułować część kodu odpowiedzialną za wykonanie zapytania pobierającego wartość kolumny admin dla użytkownika o danym loginie?


  1. SELECT admin FROM `nazwa_tabeli` WHERE login = 'Michael2318';


Ale to mało optymalny sposób, po cholerę co chwile pobierać nick usera, hasło, level itd. Nie lepiej pobrać to wszystko raz i mieć to dostępne w całym skrypcie ? Ja robię tak, że przy logowaniu sprawdzam czy dane są poprawne, jeśli tak to przypisuję do sesji id tego usera. Następnie proste zapytanie:

  1. $sql = "SELECT * FROM `users_table` WHERE user_id = ".intval($_SESSION['login']);
  2. if ( !($result = mysql_query($sql)) )
  3. {
  4. die('error in sql<br>'.mysql_error());
  5. }
  6. $num = mysql_num_rows($result);
  7. if ( $num < 1 )
  8. {
  9. die('wpisane dane są niepoprawne!');
  10. }
  11. else
  12. {
  13. $userdata = mysql_fetch_assoc($result);
  14. }


Od tego momentu masz do dyspozycji tablicę $userdata, zawierającą WSZYSTKIE dane zalogowanego usera z bazy, z tabeli z userami. Czyli w tym wypadku wystarczy użyć:

  1. if ( $userdata['admin'] )
  2. {
  3. echo 'witaj admin!';
  4. }
  5. else
  6. {
  7. die('przykro mi, ale nie jestes adminem...');
  8. }
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.09.2025 - 00:06