Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] sesja + logowanie cd.
Forum PHP.pl > Forum > Przedszkole
gebp
nawiązując do mojego wcześniejszego posta.
Mam index.htm gdzie loguje się. Nastepnie w index2.php porownuje login i haslo z zapisanymi w bazie. Jezeli OK to wyswietla resze (linki, ect.).
No i pojawi sie kolejny problem.
Mam strone na którą można zalogować się jako Admin (a przynajmniej chciałbym aby tak było sad.gif ) ale cosik nie gra. Szczerze mowiąc może zalogowa
  1.  sie każdy kto jest zapisany w bazie.
  2. Czy ja coś źle zrobiłem questionmark.gif
  3. Bo chyba nie rozumien sesji.
  4.  
    1. </div></li><li class="li2"><div class="de2"><span class="kw2"><?php</span></div></li><li class="li1"><div class="de1"><a href="http://www.php.net/session_start"><span class="kw3">session_start</span></a><span class="br0">(</span><span class="br0">)</span></div></li><li class="li2"><div class="de2"><a href="http://www.php.net/mysql_connect"><span class="kw3">mysql_connect</span></a><span class="br0">(</span><span class="st0">"mysql.yoyo.pl"</span><span class="sy0">,</span><span class="st0">"ahb"</span><span class="sy0">,</span><span class="st0">"*********"</span><span class="br0">)</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><a href="http://www.php.net/mysql_select_db"><span class="kw3">mysql_select_db</span></a><span class="br0">(</span>ahb<span class="br0">)</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2"><span class="re0">$l1</span><span class="sy0">=</span><span class="re0">$_SESSION</span><span class="br0">[</span><span class="st0">'user'</span><span class="br0">]</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="re0">$s1</span> <span class="sy0">=</span> <span class="st0">"SELECT pass FROM sklepy WHERE (nazwa like '$l')"</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2"><span class="re0">$w</span><span class="sy0">=</span> <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">(</span><span class="re0">$s1</span><span class="br0">)</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="re0">$w1</span><span class="sy0">=</span><a href="http://www.php.net/mysql_fetch_array"><span class="kw3">mysql_fetch_array</span></a><span class="br0">(</span><span class="re0">$w</span><span class="br0">)</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2"><span class="re0">$ppass</span><span class="sy0">=</span><span class="re0">$w1</span><span class="br0">[</span><span class="st0">'pass'</span><span class="br0">]</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"> </div></li><li class="li2"><div class="de2"><span class="kw1">if</span> <span class="br0">(</span><span class="br0">(</span><span class="re0">$_SESSION</span><span class="br0">[</span><span class="st0">'user'</span><span class="br0">]</span> <span class="sy0">===</span> Admin<span class="br0">)</span> AND <span class="br0">(</span><span class="re0">$_SESSION</span><span class="br0">[</span><span class="st0">'pass'</span><span class="br0">]</span> <span class="sy0">===</span> <span class="re0">$ppass</span><span class="br0">)</span><span class="br0">)</span></div></li><li class="li1"><div class="de1"> <span class="br0">{</span><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="br0">(</span><span class="st0">"Zalogowany:"</span><span class="sy0">.</span><span class="re0">$_SESSION</span><span class="br0">[</span><span class="st0">'user]);}</span></div></li><li class="li2"><div class="de2"><span class="st0"> else</span></div></li><li class="li1"><div class="de1"><span class="st0"> {echo("NIE masz uprawnień");</span></div></li><li class="li2"><div class="de2"><span class="st0"> echo("<a href=index2.php>Strona główna</a>");</span></div></li><li class="li1"><div class="de1"><span class="st0"> exit();}</span></div></li><li class="li2"><div class="de2"><span class="st0">?></span></div></li><li class="li1"><div class="de1"><HTML></div></li><li class="li2"><div class="de2"> </div></li><li class="li1"><div class="de1"><FORM ACTION="dsklepy.php" method="post"></div></li><li class="li2"><div class="de2"><TABLE></div></li><li class="li1"><div class="de1"><TR></div></li><li class="li2"><div class="de2"><TD> Login: </TD></div></li><li class="li1"><div class="de1"><TD><INPUT type="TEXT" name=nazwa VALUE="" ></TD></div></li><li class="li2"><div class="de2"></TR></div></li><li class="li1"><div class="de1"><TR></div></li><li class="li2"><div class="de2"><TD> Hasło: </TD></div></li><li class="li1"><div class="de1"><TD><INPUT type="PASSWORD" name=pass ></TD></div></li><li class="li2"><div class="de2"></TR></div></li><li class="li1"><div class="de1"><TR></div></li><li class="li2"><div class="de2"><TD></TD></div></li><li class="li1"><div class="de1"><TD><INPUT type="SUBMIT" VALUE="zapisz"></TD></div></li><li class="li2"><div class="de2"></TR></div></li><li class="li1"><div class="de1"></TABLE></div></li><li class="li2"><div class="de2"></FORM></div></li><li class="li1"><div class="de1"> </div></li><li class="li2"><div class="de2"></HTML></div></li><li class="li1"><div class="de1">
  5.  
  6.  
  7. TU można przetestować jak to nie działa. Login: Admin hasło ahb
  8.  
  9.  
  10. edit
  11.  
  12. TomASS Prosileś o plik index2.php
  13. [php]
  14. <?php
  15. $_SESSION['user'] = $_POST['login'];
  16. $_SESSION['pass'] = $_POST['pass'];
  17. $_SESSION['authuser'] = 0;
  18. $l=$_POST['login']; //przypisanie do porównań
  19. $p=$_POST['pass']; //przypisanie do porównań
  20.  
  21. mysql_connect("mysql.yoyo.pl","ahb","********");
  22. //wybieram z tabeli sklepy do porównania
  23. $s1 = "SELECT nazwa, pass FROM sklepy WHERE (nazwa like '$l')AND (pass like '$p')";
  24. $w= mysql_query($s1);
  25. $pnazwa= $w1['nazwa']; // przypisuje 'nazwe' zmiennej
  26. $ppass=$w1['pass']; // przypisuje 'pass' zmiennej
  27.  
  28. // porównuje; jezeli zgadza się 'authuser'=1 wyswietla link; jeżeli nie - link do logowania
  29. if (($_SESSION['user'] ===$pnazwa) and ($_SESSION['pass'] === $ppass))
  30. { $_SESSION['authuser']=1;
  31. echo ("Zalogowany:.$l1");
  32. }
  33.  else {
  34.  echo ('
  35.  <TABLE>
  36.  <TR><TD>Niepoprawny login i hasło</TD></TR>
  37.  <TR><TD><a href="index.html">Strona główna</a></TD></TR>
  38.  </TABLE>)');
  39.  exit();}
  40. ?>
  41. <HTML>
  42. <a href="dsklepy.html">Dodanie Sklepów.</a>
  43. </HTML>


Coś z tym BBCode Coś nie tak.
TomASS
Zakładam, że to jest plik index2.php:
  1. <?php
  2. mysql_connect("mysql.yoyo.pl","ahb","*********");
  3. $l1=$_SESSION['user'];
  4. $s1 = "SELECT pass FROM sklepy WHERE (nazwa like '$l')";
  5. $w= mysql_query($s1);
  6. $ppass=$w1['pass'];
  7.  
  8. if (($_SESSION['user'] === Admin) AND ($_SESSION['pass'] === $ppass))
  9. {echo ("Zalogowany:".$_SESSION['user]);}
  10. else
  11. {echo("NIE masz uprawnień");
  12. echo("<a href=index2.php>Strona główna</a>");
  13. exit();}
  14. ?>


Ja bym poprawił błędy składni (już w pierwszej linijce) i dalej bym to raczej zrobił:
  1. <?php
  2. mysql_connect('localhost','ahb','*********');
  3.  
  4. $login = mysql_escape_string($_POST['login']);
  5. $pass = mysql_escape_string($_POST['pass']);
  6.  
  7. $query = "SELECT ID, Rodzaj FROM sklepy WHERE Login='$login' AND Pass='$pass';";
  8. $result = mysql_query($query);
  9. $row=mysql_fetch_array($result);
  10. if($row['ID']>0){
  11. $_SESSION['rodzaj'] = $row['Rodzaj'];
  12.     $_SESSION['zalogowany']=1;
  13. }
  14. else{
  15.     $_SESSION['zalogowany']=0;
  16. }
  17. if($_SESSION['zalogowany']){
  18.     echo 'zalogowany jako: ';
  19. if($_SESSION['rodzaj']=='Admin') echo 'Admin';
  20. else echo 'Powszechny zjadacz chelba';
  21. }
  22. else{
  23.     echo 'niezalogowany';
  24. }
  25. ?>


Popraw action!
  1. <FORM ACTION="dsklepy.php" method="post">


  1. <FORM ACTION="index2.php" method="post">
  2. <TR>
  3. <TD> Login: </TD>
  4. <TD><INPUT type="TEXT" name="login"  ></TD>
  5. </TR>
  6. <TR>
  7. <TD> Hasło: </TD>
  8. <TD><INPUT type="PASSWORD" name="pass" ></TD>
  9. </TR>
  10. <TR>
  11. <TD></TD>
  12. <TD><INPUT type="SUBMIT"  VALUE="zapisz"></TD>
  13. </TR>
  14. </FORM>
Master Miko
1. Użyj poprawnego bbcode.


Cytat
Szczerze mowiąc może zalogować sie każdy kto jest zapisany w bazie.


2. Proponowałbym Ci dodać do tabeli "sklepy" tzw. "moc" użytkowników. Np. admin miałby 2, a zwykły użytkownik 1.

W czasie logowania do panelu administracyjnego, skrypt sprawdzałby, czy user napewno ma "moc" równą 2. Zwykły użytkownik w ten sposób nie mógłby wejść smile.gif

Widziałem ten sposób w wielu skryptach i powiem szczerze, że się sprawdza.

3. Pokaż ten plik index.php, bo nie wiem jak ustawiasz dane do sesji.

4. Lepiej używaj innych nazw niż "$l1" "$s1" "$w1", bo potem ciężko Ci będzie się połapać (zazwyczaj tak jest). Lepsze jest używanie zmiennych jak "$query", "$result", "$row".

Jeśli masz jakieś problemy z sesjami... ref.session" title="Zobacz w manualu php" target="_manual

5. Widzę że TomASS wyprzedził mnie snitch.gif
kpwig
Witam,
A jakbyś tak zmienił pliczek dsklepy.html na dsklepy.php ?snitch.gif

Pozdrawiam
TomASS
Cytat
A jakbyś tak zmienił pliczek dsklepy.html na dsklepy.php ?

A co to da ? tongue.gif
gebp
Widze że coś sie skisiło wieć jeszcze raz.
inex.html
  1.  
  2. <FORM ACTION="index2.php" method="post">
  3. <TR>
  4. <TD> Login: </TD>
  5. <TD><INPUT type="TEXT" name=login  ></TD>
  6. </TR>
  7. <TR>
  8. <TD> Hasło: </TD>
  9. <TD><INPUT type="PASSWORD" name=pass ></TD>
  10. </TR>
  11. <TR>
  12. <TD></TD>
  13. <TD><INPUT type="SUBMIT"  VALUE="zapisz"></TD>
  14. </TR>
  15. </FORM>
  16. </BODY>
  17. </HTML>

Index2.php
  1. <?php
  2. $_SESSION['user'] = $_POST['login'];
  3. $_SESSION['pass'] = $_POST['pass'];
  4. $_SESSION['authuser'] = 0;
  5. $l=$_POST['login']; //przypisanie do porównań
  6. $p=$_POST['pass']; //przypisanie do porównań
  7.  
  8. mysql_connect("mysql.yoyo.pl","ahb","*****");
  9. //wybieram z tabeli sklepy do porównania
  10. $s1 = "SELECT nazwa, pass FROM sklepy WHERE (nazwa like '$l')AND (pass like '$p')";
  11. $w= mysql_query($s1);
  12. $pnazwa= $w1['nazwa']; // przypisuje 'nazwe' zmiennej
  13. $ppass=$w1['pass']; // przypisuje 'pass' zmiennej
  14.  
  15. // porównuje; jezeli zgadza się 'authuser'=1 wyswietla link; jeżeli nie - link do logowania
  16. if (($_SESSION['user'] ===$pnazwa) and ($_SESSION['pass'] === $ppass))
  17. { $_SESSION['authuser']=1;
  18. echo ("Zalogowany:.$l1");
  19. }
  20.  else {
  21.  echo ('
  22.  <TABLE>
  23.  <TR><TD>Niepoprawny login i hasło</TD></TR>
  24.  <TR><TD><a href="index.html">Strona główna</a></TD></TR>
  25.  </TABLE>)');
  26.  exit();}
  27.  
  28. ?>
  29. <HTML>
  30. <a href="dsklepy.html">Dodanie Sklepów.</a>
  31. </HTML>


dsklepy.html
  1. <?php
  2. session_start();
  3. mysql_connect("mysql.yoyo.pl","ahb","******");
  4. mysql_select_db(ahb);
  5. $l1=$_SESSION['user'];
  6. $s1 = "SELECT pass FROM sklepy WHERE (nazwa like '$l')";
  7. $w= mysql_query($s1);
  8. $w1=mysql_fetch_array($w);
  9. $ppass=$w1['pass'];
  10.  
  11. if (($_SESSION['user'] === Admin) AND ($_SESSION['pass'] === $ppass))
  12. {echo ("Zalogowany:".$_SESSION['user]);}
  13. else
  14. {echo("NIE masz uprawnień");
  15.  echo("<a href=index2.php>Strona główna</a>");
  16.  exit();}
  17. ?>
  18.  
  19. <FORM ACTION="dsklepy.php" method="post">
  20. <TR>
  21. <TD> Login: </TD>
  22. <TD><INPUT type="TEXT" name=nazwa VALUE="" ></TD>
  23. </TR>
  24. <TR>
  25. <TD> Hasło: </TD>
  26. <TD><INPUT type="PASSWORD" name=pass ></TD>
  27. </TR>
  28. <TR>
  29. <TD></TD>
  30. <TD><INPUT type="SUBMIT"  VALUE="zapisz"></TD>
  31. </TR>
  32. </FORM>
  33.  
  34. </HTML>

no i na końcu dsklepy.php
  1. <?php
  2. $a=$_POST['nazwa'];
  3. $p=$_POST['pass'];
  4. mysql_connect("mysql.yoyo.pl","ahb","******");
  5. echo($a);
  6. echo($p);
  7.  
  8. $zapytanie = "INSERT INTO sklepy VALUES('','$a','$p')";
  9. $wynik = mysql_query($zapytanie);
  10. if($wynik) echo "dodano!";
  11. else {echo "Błąd !!! rekord nie został dodany ";
  12. ?>
  13.  
  14. <html>
  15. <a href="index2.php">Strona główna</a>
  16. </html>


Nio i chciałbym aby na dsklepy.htkl módł wejść tylko Admin.

Master Miko możesz dać jakiś link lub coś więcej o tej "MOCY". Bo MySQL ucze się z stron internetowych a tam jedynie jak stworzyć , dodać ect .

A do manuala zagladalem i czytalem i dla mnie to nie po polskiemu jest na pisane tongue.gif

Ale tak na serio. Strasznie techniczny jezyk. Ktos kto w tym biega to pewnie lapia. ja moze już za stary na to jestem. Ale ciezko mi sie to czyta. Brak konkretnych przykła dów a na takich się uczę.
Master Miko
Cytat
Master Miko możesz dać jakiś link lub coś więcej o tej "MOCY". Bo MySQL ucze się z stron internetowych a tam jedynie jak stworzyć , dodać ect .


Masz teraz powiedzmy tabelę

Cytat
nazwa|pass|dane|dane|dane


To teraz do niej dodajemy kolejną kolumnę:

Cytat
nazwa|pass|dane|dane|dane|prawa


Przy rejestracji użytkowników wszystkim dajesz w prawach 1 (może być liczba). A sobie (adminowi) dajesz 2 (albo przez phpmyadmina, albo zrobisz sobie odpowiedni skrypcik smile.gif )

Teraz gdy robisz np. admin.php

  1. <?php
  2.  
  3.  
  4. mysql_connect("mysql.yoyo.pl","ahb","*****");
  5. //wybieram z tabeli sklepy do porównania
  6. $s1 = "SELECT nazwa, pass,prawa FROM sklepy WHERE (nazwa like '$l')AND (pass like '$p')";
  7. $w= mysql_query($s1);
  8. $pnazwa= $w1['nazwa']; // przypisuje 'nazwe' zmiennej
  9. $ppass=$w1['pass']; // przypisuje 'pass' zmiennej
  10.  
  11. $pprawa=$w1['prawa']; // tu jest ta "moc" :)
  12.  
  13. if($pprawa === 2) {
  14.  
  15. echo "Witaj adminie :)";
  16.  
  17. } else {
  18.  
  19. echo "Nie masz praw admina!";
  20.  
  21. }
  22.  
  23.  
  24. ?>


W ten sposób możesz mieć wiele adminów, i nie musisz wtedy sztucznie wpisywać tego w kod, sprawdzając czy user to admin.

Te prawa róznież możesz przechowywać w sesji.

Tutaj masz więcej o sesjach:
http://webcity.pl/webcity/artykuly.php/t/3
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.