Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql]skrypt logowania-kilka pytań, pytania odnośnie tego kodu
predator
post 15.04.2008, 17:28:23
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 20.02.2008

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


Przerobiłem troche znaleziony w internecie kod i wygląda on następująco:

index.php
  1. <?php
  2.  
  3. $login = $_POST["login"];
  4. $haslo = $_POST["haslo"];
  5.  
  6.  
  7. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  8.  
  9. mysql_connect("", "", "")or die("Nie można nawiązać połączenia z bazą");
  10. mysql_select_db("")or die("Wystąpił błąd podczas wybierania bazy danych");
  11.  
  12. function ShowLogin($komunikat=""){
  13. echo "$komunikat<br>";
  14. echo "<form action='index.php' method=post>";
  15. echo "Login: <input type=text name=login><br>";
  16. echo "Hasło: <input type=text name=haslo><br>";
  17. echo "<input type=submit value='Zaloguj!'>";
  18. echo "</form>";
  19. echo "Jeśli nie jesteś zarejestrowany, <a href='rejestruj.php'>tu znajdziesz formularz</a>";
  20. }
  21.  
  22. ?>
  23. <!DOCTYPE html 
  24. PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
  25.  <html>
  26. <head>
  27. <title>logowanie</title>
  28. </head>
  29. <body>
  30. <?php
  31. if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany";}
  32. if($_SESSION["zalogowany"]!=1){
  33. if(!empty($login) && !empty($haslo)){
  34. {
  35. if(preg_match('#^[A-Za-z0-9_-]+$#', $login)){
  36.  
  37.  
  38. if(mysql_num_rows(mysql_query("select * from users where user_login = '".htmlspecialchars($login)."' AND user_haslo = '".htmlspecialchars(md5($haslo))."'"))){
  39. echo "Zalogowano poprawnie. <a href='index.php'>Przejdź na stronę główną</a>";
  40. $_SESSION["zalogowany"]=1;
  41. $_SESSION['nick'] = htmlspecialchars($login);
  42. } 
  43. else echo ShowLogin("zle haslo!!!");
  44.  
  45. }
  46. else echo ShowLogin("nie dozwolone znaki");
  47. }
  48.  
  49. }
  50. else ShowLogin();
  51. }
  52. else{
  53. ?>
  54. Zalogowałeś się pomyślnie!
  55. <br><a href='index.php?wyloguj=tak'>wyloguj się</a>
  56. <?php
  57. }
  58. ?>
  59.  
  60. </body>
  61.  </html>
  62. <?php mysql_close(); ?>


rejestruj.php
  1. <?php
  2. mysql_connect("", "", "")or die("Nie można nawiązać połączenia z bazą"); //połączenie z bazą danych
  3. mysql_select_db("")or die("Wystąpił błąd podczas wybierania bazy danych");
  4.  
  5. $login = $_POST["login"];
  6. $haslo = $_POST["haslo"];
  7.  
  8. function ShowForm($komunikat=""){ //funkcja wyświetlająca formularz rejestracyjny
  9. echo "$komunikat<br>";
  10. echo "<form action='rejestruj.php' method=post>";
  11. echo "Login: <input type=text name=login><br>";
  12. echo "Hasło: <input type=text name=haslo><br>";
  13. echo "<input type=hidden value='1' name=send>";
  14. echo "<input type=submit value='Zarejestruj'>";
  15. echo "</form>";
  16. }
  17. ?>
  18. <!DOCTYPE html 
  19. PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
  20.  <html>
  21. <head>
  22. <title>Formularz rejestracyjny</title>
  23. </head>
  24. <body>
  25. <?php
  26. if($_POST["send"]==1){ //sprawdzanie czy formularz został wysłany
  27. if(!empty($login) && !empty($haslo)) //oraz czy uzupełniono wszystkie dane
  28.  
  29. {
  30. if(preg_match('#^[A-Za-z0-9_-]+$#', $login)){ //sprawdzenie poprawnosci znaków
  31.  
  32. if(mysql_num_rows(mysql_query("select * from users where user_login='".htmlspecialchars($login."'"))))ShowForm("Użytkownik o podanym loginie już istnieje!!!");// sprawdzanie czy użytkownik o podanej nazwie już istnieje
  33. else 
  34. {
  35. mysql_query("insert into users values(NULL, '".htmlspecialchars($login)."', '".htmlspecialchars(md5($haslo))."')"); // zapisywanie rekordu do bazy
  36. echo "Rejestracja przebiegła pomyślnie. Możesz teraz przejść do <a href='index.php'>strony głównej</a> i się zalogować.";
  37. }
  38. }
  39. else ShowForm("nie dozwolone znaki");
  40. }
  41.  
  42. else ShowForm("Nie uzupełniono wszystkich pól!!!");
  43. }
  44. else ShowForm();
  45. mysql_close(); //zamykanie połączenia z bazą
  46. ?>
  47. </body>
  48. </html>


1. czy jest ten skrypt bezpieczny? jeśli nie to jakie zmiany proponujecie
2. jak zabezpieczyć najlepiej w md5() hasło do bazy danych?
  1. <?php
  2. mysql_connect("", "", "")or die("Nie można nawiązać połączenia z bazą");
  3. mysql_select_db("")or die("Wystąpił błąd podczas wybierania bazy danych");
  4. ?>

3. użyłem funkcji preg_match do zabezpieczenia formularza ale działa on tylko dla jednej zmiennej $login lub $haslo:
  1. <?php
  2. if(preg_match('#^[A-Za-z0-9_-]+$#', $login))
  3. ?>

gdy próbuje napisać tak(by obydwa pola formularza zabezpieczyć, bo co mi da że pole loginu zabezpiecze tylko jeśli w polu hasła można wpisać co sie chce..):
  1. <?php
  2. if(preg_match('#^[A-Za-z0-9_-]+$#', $login, $haslo))
  3. ?>

to pojawia sie błąd.

jak tego użyć by zabezpieczyć obydwa pola?

PS nie mam pojęcia dlaczego nie koloruje składni :/ być może kod html to powoduje ale nie wiem...

Ten post edytował predator 16.04.2008, 16:35:51
Go to the top of the page
+Quote Post

Posty w temacie
- predator   [php][mysql]skrypt logowania-kilka pytań   15.04.2008, 17:28:23
- - erix   Zamiast htmlentities" title="Zobacz w manualu PHP"...   16.04.2008, 09:06:49
- - predator   CytatPoczytaj o preg_match Szukałem dług...   16.04.2008, 11:07:16
- - erix   CytatSzukałem długo jak zrobić, kom...   16.04.2008, 15:21:40
- - predator   CytatDa się, jeśli masz po zalogowaniu d...   16.04.2008, 16:52:05
- - erix   CytatNie mam takiego katalogu . Jak inaczej zabez...   16.04.2008, 17:05:29
- - predator   CytatA innego rodzaju błędy są wypi...   19.04.2008, 19:09:17
- - erix   CytatNie wiem jak takie błędy wywo...   20.04.2008, 20:03:59
- - pyro   jezeli serwer bedzie mial wylaczone magic_quotes t...   20.04.2008, 20:14:09
- - erix   http://pl2.php.net/manual/en/function.mysq...tring...   20.04.2008, 20:31:36
- - Crozin   index.php:[PHP] pobierz, plaintext <? session_...   20.04.2008, 21:46:33
- - predator   CytatTak sie zastanawiam i przecież te polece...   21.04.2008, 09:08:52
- - erix   Cytatte pola (obydwa pętlami zabezpieczyłem) mimo ...   21.04.2008, 13:35:47
- - predator   Kod<?php (string)$zmienna ?> ...   21.04.2008, 15:22:15
- - erix   Cytatnie rozumiem, jak mam tego użyć? Tak, jak pok...   21.04.2008, 15:28:03
|- - -predator-   Cytat(erix)[PHP] pobierz, plaintext <?phpempty...   22.04.2008, 11:32:48
- - predator   CytatChoć nie rozumiem trochę, po co... ...   21.04.2008, 16:21:01
- - erix   Cytatteraz jest ok ale tylko to że sie pojawi...   21.04.2008, 16:57:14
- - predator   nie, nie już poradziłem sobie z tamtym CytatNapi...   21.04.2008, 17:11:05
- - erix   [PHP] pobierz, plaintext <?phpif($_POST...   21.04.2008, 17:20:46
- - Mlodycompany   i jeszcze jedna moja uwaga. Przy wylogowywaniu zam...   21.04.2008, 17:22:17
- - predator   Chodziło o index.php bo tam jest to echo. Poprawił...   21.04.2008, 17:49:40
- - erix   Ja bym proponował Ci poprawić wszystkie klamry (na...   21.04.2008, 17:58:03
- - predator   Już rozumiem jak to działa, musi by...   21.04.2008, 18:50:35
- - potreb   [PHP] pobierz, plaintext <?phpif(!$login ...   22.04.2008, 14:57:09
- - predator   Cytati jeszcze jedna moja uwaga. Przy wylogowywani...   22.04.2008, 15:14:53
- - erix   Cytatale parse errory dalej sie pojawiają :/ ...   22.04.2008, 17:45:39
- - predator   CytatSwoją drogą, tak trochę zbacza...   22.04.2008, 18:18:25
- - erix   CytatAle ta funkcja (error_reporting(0) nie blokuj...   22.04.2008, 18:54:11
- - predator   CytatTo Ci podałem przepis z isset. też nie dział...   22.04.2008, 19:22:07
- - erix   A jaki kod Ci teraz wyszedł...? Co masz na myśli ...   22.04.2008, 19:52:18
- - predator   CytatA jaki kod Ci teraz wyszedł...? Kod $l...   22.04.2008, 20:13:55


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.07.2025 - 07:29