Skocz do zawartości

[PHP]Prośba o sprawdzenie systemu logowania/rejestracji z rangami


martinstw

Rekomendowane odpowiedzi

Witam!

 

Prosiłbym o sprawdzenie systemu logowania i rejestracji, który jest napisany poniżej:

 

Tabela users:

 

CREATE TABLE `users` (
      `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
      `status` TEXT NOT NULL,      <------ranga
      `nazwa` TEXT NOT NULL,
      `haslo` TEXT NOT NULL,
      `pytanie` TEXT NOT NULL,
      `odpowiedz` TEXT NOT NULL,
      `rejestracja` DATE NOT NULL,  <-- data rejestracji użytkownika
      `imie` TEXT NOT NULL,
      `nazwisko` TEXT NOT NULL,
      `nr_kont` INT NOT NULL,
      `wydzial` TEXT NOT NULL,
      `funkcja` TEXT NOT NULL,
      

);
INSERT INTO `users` ( `id` , `status` ,`nazwa` , `haslo` , `pytanie`, `odpowiedz` , `rejestracja`, `imie` , `nazwisko` , ‘nr_kont’, `wydzial` , `funkcja`,)
VALUES (

NULL , 'A', 'admin', MD5('super tajne'), 'Jaki mam samochód?', 'Syrenka', `13.08.2008`, `Martin`, `Pak` , ‘12345’, `admin` , `admin`);
);

INSERT INTO `users` ( `id` , `status` ,`nazwa` , `haslo` , `pytanie`, `odpowiedz` , `rejestracja`, `imie` , `nazwisko` , ‘nr_kont’, `wydzial` , `funkcja`,)
VALUES (
NULL , 'PD', 'user1', MD5('super tajne'), 'Jaki mam rower?', 'BMX', `16.11.2008`, `Daniel`, `Dan` , ‘13345’, `WWWwm` , `planownik`);
);

INSERT INTO `users` ( `id` , `status` ,`nazwa` , `haslo` , `pytanie`, `odpowiedz` , `rejestracja` , `imie` , `nazwisko` , ‘nr_kont’, `wydzial` , `funkcja`,)
VALUES (
NULL , 'M', 'moderator', MD5('super tajne'), 'Jaki mam dom?', 'maly', `12.06.2008` , `Pawel`, `Minek` , ‘14345’, `moderator` , `moderator`);
);

INSERT INTO `users` ( `id` , `status` ,`nazwa` , `haslo` , `pytanie`, `odpowiedz` , `rejestracja` , `imie` , `nazwisko` , ‘nr_kont’, `wydzial` , `funkcja`,)
VALUES (

NULL , 'MOD', 'technics1', MD5('super tajne'), 'Jaki mam dlugopis?', 'pentel', `25.07.2007` , `Michal`, `Kasperek` , ‘15345’, `WWw- T` , `technics`);
);

INSERT INTO `users` ( `id` , `status` ,`nazwa` , `haslo` , `pytanie`, `odpowiedz` , `rejestracja` , `imie` , `nazwisko` , ‘nr_kont’, `wydzial` , `funkcja`,)
VALUES (

NULL , 'MODstrona2', 'master', MD5('super tajne'), 'Jaką mam ksywę?', 'papkin', `20.12.2008` , `Piotrek`, `Miazga` , ‘55345’, `WWw- SG` , `master`);
);

INSERT INTO `users` ( `id` , `status` ,`nazwa` , `haslo` , `pytanie`, `odpowiedz` , `rejestracja` , `imie` , `nazwisko` , ‘nr_kont’, `wydzial` , `funkcja`,)
VALUES (

NULL , 'P', 'customer1', MD5('super tajne'), 'Jaką lubię kolor?', 'biały', `20.12.2008` , `Andrzej`, `Patafianek` , ‘44345’, `WWw- SG` , `customer`);
);

Gdzie poszczególne rangi oznaczają:

A-   uprawnienia administartora
M- uprawnienia moderatora (może zmieniać wyglad strony)
MOD-   mogą wprowadzać zmiany na stronach (wpisywanie danych, obliczanie, pobieranie obrazków z bazy danych na stronę) bez strony 2 i drukować treść stron
MODstrona2- mogą wprowadzać zmiany (wpisywać dane do tabelki, obliczać, zapisywać) i drukować na stronie2 i przeglądać i drukowac na innych stronach
PD-   mogą tylko przeglądać i drukować strony
P-  mogą tylko przeglądać stron bez ich drukowania

 

to jest powiązane z stroną wykaż użytkowników:

 

http://www.wklej.org/id/36827/

 

Następnie mam tabelę users_stan, gdzie sa informacje o aktualnie zalogowanych użytkownikach:

 

CREATE TABLE `users_stan` (
      `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
      `status` TEXT NOT NULL,      <------ranga
      `nazwa` TEXT NOT NULL,
      `haslo` TEXT NOT NULL,
      `pytanie` TEXT NOT NULL,
      `odpowiedz` TEXT NOT NULL,
      `rejestracja` DATE NOT NULL,  <-- data rejestracji użytkownika
      `imie` TEXT NOT NULL,
      `nazwisko` TEXT NOT NULL,
      `nr_kont` INT NOT NULL,
      `wydzial` TEXT NOT NULL,
      `funkcja` TEXT NOT NULL,


);
INSERT INTO `users_stan` ( `id` , `stan` , `status` ,`nazwa` , `odpowiedz` , `ostatnie_logowanie`);
VALUES (

NULL , 'zalogowany', 'A', 'admin', 'Syrenka', `15:05 / 16.12.2008`);
);

INSERT INTO `users_stan` ( `id` , `stan` , `status` ,`nazwa` , `odpowiedz` , `ostatnie_logowanie`);
VALUES (
NULL , 'zalogowany', 'PD', 'user1', 'BMX', `15:16 / 16.12.2008`);
);

INSERT INTO `users_stan` ( `id` , `stan` , `status` ,`nazwa` , `odpowiedz` , `ostatnie_logowanie`);
VALUES (
NULL , 'niezalogowany', 'M', 'moderator', 'maly', `15:07 / 16.12.2008`);
);

INSERT INTO `users_stan` ( `id` , `stan` , `status` ,`nazwa` , `odpowiedz` , `ostatnie_logowanie`);
VALUES (

NULL , 'niezalogowany', 'MOD', 'technics1', 'pentel', `15: 22 / 16.12.2008`);
);

INSERT INTO `users_stan` ( `id` , `stan` , `status` ,`nazwa` , `odpowiedz` , `ostatnie_logowanie`);
VALUES (

NULL , 'zalogowany', 'MODstrona2', 'master', 'papkin', `15:24 / 16.12.2008`);
);

INSERT INTO `users_stan` ( `id` , `stan` , `status` ,`nazwa` , `odpowiedz` , `ostatnie_logowanie`);
VALUES (

NULL , 'zalogowany', 'P', 'customer1', 'biały', `15:18 / 16.12.2008`);
);

 

Może to oprzeć raczej na grupach sesji?

 

Rangi i sesje znajdują się na wszystkich stronach, a nie tylko na jednej, jedynie w jednym przypadku użytkownik może modyfikować dane na jednej stronie a w pozostałych tylko oglądać.

 

formularz1.php

http://www.wklej.org/id/34911/

 

index.php

 

http://www.wklej.org/id/34915/

 

strona logowania:

 

http://www.wklej.org/id/34918/

 

zaloguj.php:

http://www.wklej.org/id/34919/

 

users.php:

 

http://www.wklej.org/id/34920/

 

rejestracja.html:

 

http://www.wklej.org/id/34923/

 

logout.php

 

<?php
session_start();
  if(!isSet($_SESSION['zalogowany'])) {
  $komunikat = "Nie byłes zalogowany!";
}

  else{
  unset($_SESSION['zalogowany']);
  $komunikat = "Wylogowanie prawidlowe!";
}

session_destroy();
?>

<html>
<head>
</head>
<body>
<?php echo $komunikat ?>
</body>
</html>

 

chroniona_strona.php:

 

http://www.wklej.org/id/34924/

 

rejestracjapomyslna.php:

 

<html>
  <head>
  </head>
  <body>
  Zostales zarejestrowany. Teraz mozesz sie zalogowac i w pelni korzystac z serwisu!
  </body>
  </html>

 

I na końcu chciałbym, żeby była możliwość po wciśnięciu przycisku Zapomniałeś hasła?, pojawienie się formularza z pytaniem i możliwością odpowiedzi na nie. Wysłanie danych, sprawdzenie czy wpisana odpowiedź jest taka jak w bazie danych i formularz do zmiany hasła bądź komunikat o błędnej odpowiedzi. Jeśli user prawidłowo odpowie to ponowne przekierowanie na stronę logowania, gdzie już jest w polu hasło w pisane właściwe hasło, które użytkownik zapomniał.

 

Zrobiłem coś takiego:

 

przypominanie_hasla

SELECT * FROM users WHERE username = '{$username}' or password = '{$pass}'
$username = mysql_real_escape_string($_POST['username']);
$pass = md5($_POST['password']);
print $user[0]['pytanie'];
$odpowiedz = mysql_real_escape_string($_POST['odpowiedz']); 
if ($odpowiedz == $user[0]['odpowiedz']) {
... <html><head></head><body><fieldset style="border: 6px solid black; width: 500px; height: 50%;  text-align: center; background-color: snow;">
                     <p style="color: blue;"><big>FORMULARZ ODZYSKIWANIA ZAPOMNIANEGO HASŁA</big></p>


                        <center><form action="zaloguj.php" name="przypominanie" method="post" onsubmit="return setAction(this);" style="margin:0px;">

                           <fieldset style="border: 3px solid blue; width: 460px; height: 180px; text-align: center; background-color: snow;">
                             <legend><big>Wpisz dane:</big></legend>


                                      <a> Nazwa użytkownika:           </a><input type="text" name="login" id="input" style="color: blue; background-color: yellow;"/>  </a> 



                                      <a> Odpowiedz na następujące pytanie:</a><input type="text" name="pytanie" id="input" size="20" style="color: blue; background-color: InactiveCaptionText;"/>  <a href="#" title="To jest twoje pytanie przypominające, jakie podałeś przy rejestracji użytkownika"><small>INFO</small>



                                      <a> Wpisz odpowiedź na pytanie:           </a><input type="password" name="odpowiedz" id="input" style="color: blue; background-color: InactiveCaptionText;"/> <a href="#" title="Tuataj wpisz twoja odpowiedź na powyższe pytanie przypominające, jakie podałeś przy rejestracji użytkownika"><small>INFO</small>





                                <label for><a><button name="submit" value="Zatwierdź" onClick="parent.location.href='index.html'"/>Zatwierdź</button></a></label>


                           </form></center>

                   </fieldset></body></html>

} else {
           <html><head></head><body><table border=1 align=center>
                    <tr>
                         <td bgcolor=aqua height=20 width=500>Komunikat</td>
                    </tr>
                    <tr>
                         <td bgcolor="yellow" height=40 width=500>Podałeś błędną odpowiedź na zadane pytanie. Wpisz jeszcze raz poprawną odpowiedź na zadane pytanie!</td>
                    </tr>
              
              </table></body></html>
}

 

W jaki sposób uwzględniać na stronach grupy sesji lub rangi oraz gdy będzie chciał się zalogować administartor?

 

Za pomoc będę wdzięczny

 

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Może od razu wyślij nam całą zawartość komputera? Nie czytają twojego kodu, mogę ci powiedzieć, ze dobrym sposobem logowania jest tabela z wszystkimi użytkownikami i druga z:

- id użytkownika z poprzedniej tabeli

- session_id()

- time() [ - zalogowanych użytkowników poznajemy, odejmując od wartości aktualnego time() minuty x60. Aktualizujemy tutaj przy każdym odświeżeniu strony]

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

@martinsw:

 

Za darmo? Po tej liczbie tematów odnoszę wrażenie, że podjąłeś się jakieś zadania jako freelancer, nie mając kompletnie pojęcia o webmasterce i myślisz, że ktoś Ci pomoże za darmo. Chcesz odpowiedzi na te wszystkie pytania? Albo sam się wszystkiego naucz albo zleć to komuś za pieniądze. Cwaniakom pomagać nie będziemy.

Odnośnik do komentarza
Udostępnij na innych stronach

Zastanawiam się ilu osobom pomogliście, skoro macie takie podejście do każdego, jak do mnie?

 

Wy chyba tylko sobie pomagacie.

 

Część problemów rozwiązałem już, bez waszej w cudzysłowiu "pomocy".

 

Jeśli chodzi o złośliwości to mogę też napisać ich wiele, tylko jaki to będzie miało sens? Lepiej wam się zrobi jak coś takiego napiszecie?

 

Te problemy, które zawarłem w postach same mi się nasunęły, podczas tworzenia swoich stron.

Nie robię tego na żadne zlecenie!

 

Ja dopiero zaczynam więc mam prawo do błędów. A wy powinniście to zrozumieć. Ale widzę, że to jest za trudne dla was. Kiepscy by z was byli nauczyciele.

 

Jeśli chodzi o termin cwaniak, to chyba warto poczytać kto to.

 

I ostatnia moja refleksja, jeśli ktoś nie chce pomóc to niech nie pomaga, a swoje uwagi niech pozostawi dla siebie, nikt nikogo nie zmusza do czytania tego postu.

 

A posty są po to pisane, żeby na nie odpowiadać, a nie wypisywać niemiłe uwagi.

 

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Ale ty naprawdę nie wiesz o co chodzi? Lepiej było napisać to wszystko w JEDNYM TEMACIE, a nie cudzysłowowo "naspamowałeś" i czekasz na kogoś odpowiedź. A tak w ogóle nikt nie ma OBOWIĄZKU Tobie odpowiadać tym bardziej że forum jest zdeczka innej tematyki niż PHP.

 

Btw. nie wiem ludzie, do nauki PHP wystarczy dokumentacja KTÓRA JEST BARDZO DOBRA. ... lenistwo co? A no i jeszcze, jak wklejasz jakiś kod to dawaj to na jakieś http://wklej.to what eva.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

@martinstw:

 

Na forum php.pl też widzę, że nawaliłeś tych tematów i jest mały odzew. A wiesz czemu? Bo Ty znasz tylko kompletne podstawy. Nikt za Ciebie nie będzie robił takich funkcjonalności, o jakie prosisze, bo są one czasochłonne i poziom wiedzy którą prezentujesz nie gwarantuje, że coś się z tego nauczysz. To tak jakby ktoś, kto ledwo zaczął programować w c++, ściągnał źródła jakiegoś fpsa i się pytał jak zmienić niektóre części programu. Takim osobom nie pomagam raczej, bo i po co.

Odnośnik do komentarza
Udostępnij na innych stronach

Skoro rozwiązałeś, to po co zaśmieciłeś dział i nam, za przeproszeniem, zawracasz dupę? Trzeba było wcześniej pomyśleć. Poza tym, my pomagamy DARMOWO. Kto ci teraz bez opłaty przeanalizuje tak duży kod i ci powie co jest źle/jak trzeba coś zrobić?

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...