Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Autoryzacja php+MySQL, Prosty schemat autoryzacji najprostrzy z możliwych
spootnik
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 1.06.2006

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


Witam, dzięki pomocy na forum skonstrułowałem juz na moim serwisie zarządzanie menu. Następnym krokiem jaki chciałbym wykonać a zabardzo nie wiem jak sie za to zabrać jest system autoryzacji. prtzeglądając forum znalazłem troche gotowych skryptów do wykorzystania z systemem logowania itd, jednak chciałbym napisać to samemu żeby to zrozumieć. do dyspozycji mam serwer z php i obsługą bazy danych mysql więc postanowiłem pokusić się o system autoryzacji na stronie. Teraz pytanie, jak je zrobić ? mam utworzoną bazę danych w php MyAdmin stworzyłem tabele ale trzeba tam mnóstwo rzeczy wpisać odnoście pół w tabeli mimo tego ze są tylko dwa pola :] baza userków to będzie tylko nazwa usera i jego hasło można to w php zrobić żeby mi taką tabele utworzyło jak powienienem zacząć tworzenie swojego systemu ? wszyscy chcą na forum w zasadzie gotowe skrypty a mi jednak chodzi o samą idee jak to ma wyglądać, jak sie zabrać za to, czyli ogólnie z czym to sie je. Po co mi gotowy skrypt którego nie będe rozumiał... chciałbym sie nauczyć... może macie jakieś kursy odnośnie problemu autoryzacji ? informacje jak utworzyć baze itd to znajde, tylko jak sie za to zabrać od czego zacząć
Go to the top of the page
+Quote Post
revyag
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


Idea (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

1.html
Strona logowania:
formularz z dwoma inputami: username i userpass oraz buttonem zaloguj (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

2. mysql
Tabela:

id | username | userpass

userpass ustawiasz żeby było kodowane/hashowane czy jak tam sobie wymyślisz (md5,sha,password)

3. php

W momencie naciśnięcia buttona w formularzu logowania, robisz zapytanie do bazy, pobierasz nazwę usera, na podstawie danych z formularza, jeśli user nie ma to przekierowanie z powrotem do strony logowania.
Jako mechanizm przekazywania danych wybierasz sesje.
Go to the top of the page
+Quote Post
adeq_PL
post
Post #3





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 25.01.2006
Skąd: Oświęcim

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


Fajnie ze trafilem wlansie na taki post poniewaz mam problem z sesjami. Tzn mam panel logowaniaskladajacy sie z dwoch plikow logowanie.php i admin.php.

admin.php:
  1. <?php 
  2. include_once('katalog/logowanie.php');
  3.  
  4.  
  5.  if($_SESSION['logadm'] == 'ok') {
  6.  
  7.  } 
  8.  
  9.  else {
  10.  
  11.  echo '<br><br><table align=center width="350" class=top border="0" cellpadding="0" cellspacing="0">
  12.  <tr>
  13.  <td valign="top">
  14.  <img align="top" src="pliki/dot.gif" cellpadding="0" cellspacing="0" border="0"></td><td valign="center">
  15.  <p align="left" class=title><b>Witaj w panelu administracyjnym - zaloguj się <BR>aby uzyskać pełen dostęp do serwisu</b></p></td></tr></table>
  16.  <table align=center width="350" class=botton border="0" cellpadding="0" cellspacing="0">';
  17.  
  18.  
  19.  }
  20.  
  21.  echo logadm();
  22.  
  23. ?>


logowanie.php:
  1. <?php
  2.  
  3. if(!isset($_SESSION['logadm'])) { 
  4. $_SESSION['logadm'] = ''; 
  5. } 
  6.  
  7. include('conf_adm.php');
  8. include('kalendarz.php');
  9.  
  10. if(isset($_POST['login']) AND isset($_POST['pass'])) {
  11.  
  12. $name = strtolower($_POST['login']); 
  13. $pass = md5($_POST['pass']); 
  14.  
  15.  $dane = mysql_query("SELECT 'login' AND 'password' FROM `admin` WHERE `login`='".$name."' AND `password`='".$pass."';"); 
  16.  
  17. if(mysql_num_rows($dane) == 1) {
  18. $_SESSION['logadm'] = 'ok';
  19. } 
  20. else {
  21. $_SESSION['logadm'] = '<P class=blad>Błędny login lub hasło!';
  22. }
  23.  
  24. unset($_POST['logadm']);
  25. }
  26.  
  27.  
  28. if(isset($_POST['unlogadm'])) {
  29.  
  30. unset($_SESSION['logadm']);
  31.  
  32. unset($_POST['unlogadm']);
  33.  
  34. }
  35.  
  36.  
  37. function logadm() {
  38.  
  39.  
  40. if($_SESSION['logadm'] == 'ok') {
  41.  
  42. echo '
  43.  <table align=center class=main cellpadding="0" cellspacing="0"><tr><td bgcolor="#EEF8FF" align=left> 
  44.  <p class=normal><b>&nbsp;&nbsp;Witaj: '.$_POST['login'].' - </b><i>godz:'; 
  45.  echo godzina();
  46.  echo ', dnia: ';
  47.  echo data(); 
  48.  echo ', imieniny: ';
  49.  echo imieniny(); 
  50.  echo '</i></p></td>
  51.  <td bgcolor="#EEF8FF" align=right><p class=normal><i>po zakończeniu pracy <a name="unlogadm"
  52.  href='.getenv(REQUEST_URI).'>wyloguj się</a>&nbsp;</i>
  53.  </td></tr></table>
  54.  
  55.  <table align=left class=main cellpadding="0" cellspacing="0"><tr><td align=center>
  56.  <form class="gora" action="zwiedz_adm.php" method="post"> 
  57.  
  58.  <table align="left" width="138" cellpadding="0" cellspacing="0"><tr>
  59.  <td background="pliki/table-title.gif" width="138" height="20">
  60.  <P class="menu-title"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>Aktualności:</b>
  61.  </td></tr></table>
  62.  
  63.  <input class="gora" name="str_gl" type="submit" value="Strona Główna">
  64.  <input class="gora" name="przegl_edyt" type="submit" value="Przeglądaj / Edytuj">
  65.  <input class="gora" name="dod_wiersz" type="submit" value="Dodaj wiersz">
  66.  <input class="gora" name="us_wiersz" type="submit" value="Usuń wiersz">
  67.  <input class="gora" name="wyszuk" type="submit" value="Wyszukaj">
  68.  </td></tr></table>
  69.  
  70.  
  71.  
  72. </td></tr><tr><td>
  73.  
  74.  
  75.  <table align=left class=main cellpadding="0" cellspacing="0"><tr><td valign=top>';
  76.  
  77. include("menu_adm.php");
  78.  
  79. echo'</td><td valign=top>
  80.  
  81. <table align="left" cellpadding="4" cellspacing="0"><tr><td>';
  82.  
  83.  
  84.  if(isset($_POST['przegl_edyt'])) {
  85.  include('show_zwiedz_adm.php');
  86.  echo tresc(); }
  87.  
  88.  else if(isset($_POST['aktualnosci2'])) {
  89.  include('aktualnosci2_adm.php');
  90.  echo tresc(); }
  91.  
  92.  else{
  93.  echo'aaa';}
  94.  
  95.  
  96.  echo '</td></tr></table>
  97.  
  98. </td></tr></table>';
  99.  
  100.  
  101. } 
  102.  
  103. else {
  104.  echo '<TR ALIGN=CENTER><TD><BR><form action="'.getenv(REQUEST_URI).'" method="post">
  105.  <ul style="list-style-type: none; margin: 0; padding: 0;">';  
  106.  
  107. if(isset($_SESSION['logadm']))
  108.  
  109.  echo '<li>'.$_SESSION['logadm'].'</li>
  110. <li><P class=normal>Login: <input type="text" name="login" style="width: 130px"/></li>
  111. <li><P class=normal>Haslo: <input type="password" name="pass" style="width: 130px"/></P></li>
  112. <li><input type="submit" name="logadm" value="Logowanie" /></li></ul>
  113.  </form></TD></TR>';
  114.  
  115.  
  116.  }
  117.  
  118. }
  119.  
  120. ?>


Jesli chodzi o te dwa pliki wszystko chodzi ok, ale ja chce do tego panelu podpiac jeszcze ok 25 innych plikow, ktore wchodza w sklad panelu administracyjnego i nie wiem jak mam to zrobic. mam juz caly panel administracyjny i zostalo mi tylko to logowanie.... pomozcie please :roll2:
Go to the top of the page
+Quote Post
spootnik
post
Post #4





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 1.06.2006

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


a mam pytanko, gdzie zamieściłęś instrukcje odnośnie tworzenia bazy itd ? trzeba ją samemu utworzyć ? przecie skrypt może ją utworzyć tabele z polami, ale teraz ten skrypt wczytany drugi raz będzie tworzył jesczze raz tą tabele ? czy poprostu sotawi ją w spokoju i przejdzie do dalszej części skryptu ?
Go to the top of the page
+Quote Post
adeq_PL
post
Post #5





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 25.01.2006
Skąd: Oświęcim

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


Bazy danych i tabele tworzy sie za pomoca osobnego pliku lub za pomoca phpmyadmin (ja korzystam z niego). W moim skryptach nie ma instrukcji tworzenia tabel tylko wyciagania z nich danych. Jesli uzyjesz dwa razy tego zamego skryptu do tworzenia tabel to prawdopodobnie wyrzuci komunikat (nie jestem pewny).
Go to the top of the page
+Quote Post
spootnik
post
Post #6





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 1.06.2006

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


A jak powinna wyglądać odpowiednio skonfigurowana tabela z polami na ID usera i hasło ? są zapewne obowiązkowe wartości pól do zdefiniowania jak i takie parametry bez których się obejdzie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
revyag
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


@spootnik:
Przykładowa tabela 3 kolumnowa:
id | username | userpass

Pole id ustawiasz jako INT, dodatkowo wybierasz aby było auto_increment i zaznaczasz je jako podstawowy.
username to varchar, tak samo jak userpass.
Bardzo łatwo robi się to w phpmyadmin.

@adeq_PL - logowanie odseparuj od reszty panelu. Skrypt waliduje dane, jeśli są poprawne to robisz przekierowanie do panelu, jeśli nie to powrót na stronę logowania, tyle.
Go to the top of the page
+Quote Post
adeq_PL
post
Post #8





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 25.01.2006
Skąd: Oświęcim

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


revyag baaardzo mi pomogles, wlasnie takiej odpowiedzi oczekiwalem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) , ale mam jeszcze jedno pytanie czy skrypt odseparowany od panelu logowania jest bezpieczny, każdy bedzie mogl wejsc do niego wpisujac odpowiedni adres URL....
Go to the top of the page
+Quote Post
spootnik
post
Post #9





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 1.06.2006

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


ok, mam jest ok (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) a teraz do czego będzie mi służyło pole ID ? pisze jeszcze że musze utworzyć indexy po co one są ?
Go to the top of the page
+Quote Post
spootnik
post
Post #10





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 1.06.2006

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


napisałem coś takiego:
  1. <FORM METHOD="POST" ACTION="dodaj.php">
  2. <INPUT TYPE="text" NAME="login">&nbsp;&nbsp;
  3. <INPUT TYPE="text" NAME="haslo">&nbsp;
  4. <INPUT TYPE="submit" value="Dodaj">
  5.  
  6. </FORM>

Plik dodaj.php:
  1. <?
  2. mysql_connect (mysql.yoyo.pl, xxlogin, xxhaslo);
  3. $polacz = mysql_connect (mysql.yoyo.pl, xxlogin, xxhaslo);
  4. $dodaj = "INSERT INTO users_DB VALUES($login, $haslo)";
  5. mysql_close($polacz);
  6. ?>


Co tu jest nie tak ? żadnego błędu mi nie zwraca a do bazy i tak nic nie jest dodane :/

Ten post edytował spootnik 2.06.2006, 16:41:57
Go to the top of the page
+Quote Post
Michasko
post
Post #11





Grupa: Zarejestrowani
Postów: 283
Pomógł: 31
Dołączył: 10.01.2006
Skąd: Działoszyn

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


~spootnik:

Popsułeś zapytanie:
  1. <?php
  2. $dodaj = "INSERT INTO users_DB VALUES($login, $haslo)";
  3. ?>


powinno raczej być (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) :

  1. <?php
  2. $dodaj = "INSERT INTO users_DB (nazwa_pola_1, nazwa_pola_2) VALUES($login, $haslo)";
  3. ?>
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: 22.08.2025 - 14:19