Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z logowaniem oraz połączeniem z bazą danych
Forum PHP.pl > Forum > PHP
secretservice
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ę.
Michael2318
  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/
secretservice
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.
Michael2318
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?
secretservice
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.
Michael2318
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. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.