![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 96 Pomógł: 0 Dołączył: 10.03.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam takie pytanie jak podczas logowania do bazy danych wyciągać hasła i loginy z dwóch tabel. Chodzi mi o coś takiego że mam dwie tabele studenci i wykładowcy i w każdej z nich znajdują sie loginy i hasła. Jak należy napisać zapytanie żeby to dobrze funkcjonowało? Skrypt logowania wygląda tak: [php:1:9d98bc23a5]<?php # Inicjujemy funkcje z ktorej bedziemy pózniej korzystac:) session_start(); # inicjowanie sesji (musimy tutaj, bo inaczej wywala błędy:( session_name(logowanie.php); # sesja otrzyma nazwę Twojej strony:) function logowanie() { echo("<form method="POST">n <h1> Zaloguj sie! </h1><br>n User: <input type="text" name="login"><br>n Pass: <input type="password" name="haslo"><br>n <input type="submit" name="submit" value="Zaloguj"><br>n <br> </form>n"); } # i po funkcji ![]() # w tym pliku są zmienne potrzebne do łaczenia się z baza danych include("config.cfg"); if(!isset($submit)) # jeżeli nie zaznaczono submit, odpal logowanie { logowanie(); } else # w innym przypadku.... { $db=mysql_connect("$sql_host") or die("Nie można się połączyć z serwerem"); # łaczenie się z bazą danych mysql_select_db("$sql_base", $db) or die("Problem z łączeniem się z bazą danych ![]() $sql="SELECT * FROM Studenci WHERE Login = '$login'"; # zapytanie do mysql o wyswietlenie komórki USER_NAME w której figuruje zmienna $login $result=mysql_query($sql); while($row = mysql_fetch_array($result)) { $Haslo=$row["Haslo"]; # tutaj definiujemy komorki ![]() $Login=$row["Login"]; # $zmienna_używana_w_skrypcie=$komórka["nazwa_komórki_ze_sql"]; $ban=$row["ban"]; if (($haslo != $Haslo) || ($login != $Login)) # jeżeli hasło / login się nie zgadzają { echo("Zly login/pass"); # pokazuje "Zly login/pass" oraz logowanie (z wczesniej zadeklarowanej funkcji:) logowanie(); } else { # w innym przypadku (tj. login i pass są prawdziwe) session_register("login"); # rejestrowanie w sesji "loginu", "ban" (czy gostek ma bana czy nie ![]() include("index.php"); exit(); # koniec ![]() } } } ?>[/php:1:9d98bc23a5] I jeszcze jedno jak ustawić prawa dostępu do podstron dla osób zalogowanych? Jeżeli macie jakieś propozycje to podeślijcie. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 560 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
[sql:1:d361d7b42b]SELECT tabela1.pole1, tabela1.pole2, tabela2.pole1, tabela2.pole2 FROM tabela1, tabela2 WHERE tabela1.pole1='$form' OR tabela2.pole1='$form'[/sql:1:d361d7b42b] $form to dane pochodzace z formularza np. login
o cos takiego ci chodzilo ![]() a co do pytanie 2 chodzi ci o to ze jak ktos nie jest zaogowany to wtedy nie moze przegladac tresci witryny? ![]() jak tak to przy logowaniu (jesli jest login i haslo sie zgadza) dodajesz zeminna sesyjna np. $_SESSION['user']=1; potem przy wysylaniu zawartosci sprawdzasz czy istnije zmienna sesyjna user i czy ma wartosc 1 jak nie to nie wysylasz. W twoim przypadku mozesz wykorzystac zmienna sesyjna login jesli isnieje lub jesli nie jest pusta lub rowna 0 wtedy ten ktos pomyslnie przeszedl proces weryfikacji ![]() -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 96 Pomógł: 0 Dołączył: 10.03.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
W pytaniu 2 chodzi mi o to że użytkownik już po zalogowaniu ma prawa przeglądać tylko odpowiednie odnośniki np. student może przeglądać trzy pierwsze odnośniki a do następnych nie ma prawa dostępu, natomiast wykładowca może również przeglądać te trzy pierwsze odnośniki ja i kolejne bo przykładowo jest moderatorem tej strony.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 560 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
mozesz zrobic dodatkowe pole np status domyslnie dla studenta bedzie one wynosic 0 dla wykladowcy 1, przy kogowaniu pobierasz je i wrzucasz do sesji przy wyswietlaniu sprawdzasz status i odpowiednio wyswietlasz
zaleta tego jest to ze niekturym studentom bedzi mozna dac mozliwosc przegladania tresci ktora dla innych jest niedostepna ![]() ![]() ![]() -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 96 Pomógł: 0 Dołączył: 10.03.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
czy mógłbyś podać jakiś przykład jak to zastosować bo przyznam ze nie bardzo wiem jak się pobiera i wrzuca do sesji i jak sprawdza sie ten status...
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 96 Pomógł: 0 Dołączył: 10.03.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
po wpisaniu zapytania tak jak mi radziłeś znowu pojawił sie bład bo tym raze pobiera loginy i hasła tylko z tej drugiej tabelki a z pierwszej nie. Nie mam pojęcia dlaczego tak się dzieje.
I jeszcze jedno podczas logowania po wpisaniu loginu i hasła z z tej pierwszej tabeli pojawiaja mi sie zapętlony formularz logowania (kilka pól do logowania) z komunikatem zły login/pass. A tak wygląda mój skrypt logowania: [php:1:110da302cf]<?php session_start(); # inicjowanie sesji (musimy tutaj, bo inaczej wywala błędy:( session_name(log.php); # sesja otrzyma nazwę Twojej strony:) function logowanie() { echo("<form method="POST">n <h1> Zaloguj sie! </h1><br>n User: <input type="text" name="login"><br>n Pass: <input type="password" name="haslo"><br>n <input type="submit" name="submit" value="Zaloguj"><br>n <br> </form>n"); } # i po funkcji ![]() # w tym pliku są zmienne potrzebne do łaczenia się z baza danych include("config.cfg"); if(!isset($submit)) # jeżeli nie zaznaczono submit, odpal logowanie { logowanie(); } else # w innym przypadku.... { $db=mysql_connect("$sql_host") or die("Nie można się połączyć z serwerem"); # łaczenie się z bazą danych mysql_select_db("$sql_base", $db) or die("Problem z łączeniem się z bazą danych ![]() $sql="SELECT Studenci.Login, Studenci.Haslo, Prowadzacy.Login, Prowadzacy.Haslo FROM Studenci, Prowadzacy WHERE Studenci.Login = '$login' OR Prowadzacy.Login = '$login'"; # zapytanie do mysql o wyswietlenie komórki USER_NAME w której figuruje zmienna $login $result=mysql_query($sql); while($row = mysql_fetch_array($result)) { $Haslo=$row["Haslo"]; # tutaj definiujemy komorki ![]() $Login=$row["Login"]; # $zmienna_używana_w_skrypcie=$komórka["nazwa_komórki_ze_sql"]; $ban=$row["ban"]; if (($haslo != $Haslo) || ($login != $Login)) # jeżeli hasło / login się nie zgadzają { echo("Zly login/pass"); # pokazuje "Zly login/pass" oraz logowanie (z wczesniej zadeklarowanej funkcji:) logowanie(); } else { # w innym przypadku (tj. login i pass są prawdziwe) session_register("login"); # rejestrowanie w sesji "loginu", "ban" (czy gostek ma bana czy nie ![]() include("dodaj_przedmiot.php"); exit(); # koniec ![]() } } } ?>[/php:1:110da302cf] Czekam na jakąś wskazówke jak to poprawić... |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 560 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
no jak z bazy pobrac to chyba wiesz
![]() ![]() [sql:1:3b66051faf]SELECT login, haslo, status FROM tabela WHERE login='$login'[/sql:1:3b66051faf](jesli chesz z dwuch tabel pobierac to tak jak przyklad wyzej) potem po pozytywnym przejsciu logowania zapisujesz do sesji status Kod $_SESSION['status']=$to_co_pobierasz_z_bazy;
przy wyswietlaniu tresci: [php:1:3b66051faf]<?php // dla wszyskich echo "wyswietla sie dla wszystkich"; if (isset($_SESSION['status']){ if ($_SESSION['status']==0) { echo "to co ma byc dla zalogowanych userow"; } else { echo "to co bedzie dla wykladowcow"; } ?>[/php:1:3b66051faf] to jest skromny przyklad mozesz zrobic kilka statusow np, 0-zwykly_user 1-moderator 2-administrator itp i sprawdzac po statusie kim jest zalogowany uzytkownik -------------------- |
|
|
![]()
Post
#8
|
|
![]() Vice-Administrator serwera Grupa: Przyjaciele php.pl Postów: 395 Pomógł: 0 Dołączył: 7.08.2003 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
a ja proponuje taka konstrukcje tabeli z userami:
Kod -------------------------------------------
| user_id | login | pass | user_type | -------------------------------------------- | 1 | ble | xadsf| 1 | -------------------------------------------- u pobierasz to i sprawdzasz do razu typ usera tak jak to wyzej napisali ... to duze uproszczenie i bazy i kodu ja obslugujacego -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 560 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
no napewni jest lepiej miec jedna tabele userow niz 2
z 2 tabelami sporo komplikacji moze byc, np powtarzajace sie loginy moze sie zdazyc ze np beda dwa takie same loginy i dwa takie same hasla i co wtedy ![]() ![]() ![]() -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 11:04 |