Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Optymalizacja rejestracji i pytanie
Bellum
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 2.03.2010
Skąd: ta pewność?

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


Witam, chciałbym prosić o optymalizacje (a konkretnie rady co należałoby zmienić) kodu doświadczonych programistów

rejestracja.php

  1. <?php if(isset($_SESSION['session_user']))
  2. {
  3. header('location: index.php');
  4. }
  5. else
  6. {
  7. echo "<div class='h3'><h3>Rejestracja</h3></div><div class='text'>";
  8. echo "<form action='' method='POST'>
  9. <table>
  10. <tr>
  11. <td>Nazwa użytkownika:</td><td><input type='text' name='user' /></td>
  12. </tr>
  13. <tr>
  14. <td>Adres email:</td><td><input type='text' name='email' /></td>
  15. </tr>
  16. <tr>
  17. <td>Hasło:</td><td><input type='password' name='password' /></td>
  18. </tr>
  19. <tr>
  20. <td>Powtórz hasło:</td><td><input type='password' name='repassword' /></td>
  21. </tr>
  22. <tr>
  23. <td colspan=2><input type='submit' name='zarejestruj' value='Wyślij' /></td>
  24. </tr>
  25. </table>
  26. </form>";
  27. echo "</div>";
  28.  
  29. require_once'config_db.php';
  30. if(isset($_POST['zarejestruj']))
  31. {
  32. $date = time();
  33. $user = $_POST['user'];
  34. $email = $_POST['email'];
  35. $ip = $_SERVER['REMOTE_ADDR'];
  36. $password = $_POST['password'];
  37. $repassword = $_POST['repassword'];
  38.  
  39. #Sprawdzanie pól formularza
  40. if(!$_POST['user'] || !$_POST['password'] || !$_POST['repassword'] || !$_POST['email'])
  41. {
  42. echo "Jedno bądź więcej pól w formularzu jest puste...";
  43. exit;
  44. }
  45.  
  46. #Sprawdzanie wprowadzonych danych
  47. if(!eregi('^[a-zA-z]+', $user))
  48. {
  49. echo "Nazwa użytkownika może zawierać wyłącznie małe i duże litery...";
  50. exit;
  51. }
  52. elseif(!eregi('^[a-zA-z0-9]+', $password))
  53. {
  54. echo "Hasło może zawierać wyłącznie małe i duże litery oraz cyfry...";
  55. }
  56. elseif(!eregi('^[a-zA-z0-9]+', $repassword))
  57. {
  58. echo "Hasło może zawierać wyłącznie małe i duże litery oraz cyfry...";
  59. exit;
  60. }
  61. elseif(!eregi('^[a-zA-z0-9]+@[a-zA-z0-9\-]+\.[a-zA-z0-9\-\.]+$', $email))
  62. {
  63. echo "Adres email, jest niepoprawny...";
  64. exit;
  65. }
  66.  
  67. #Sprawdzanie czy hasła są identyczne
  68. if($_POST['password'] != $_POST['repassword'])
  69. {
  70. echo "Hasła nie są takie same...";
  71. }
  72.  
  73. #Sprawdzanie czy taki użytkownik już istnieje
  74. $mysqlia = "SELECT user FROM user";
  75. $mysqlib = $db->query($mysqlia);
  76. while($echo = $mysqlib->fetch_object())
  77. if(($echo->user) == $user)
  78. {
  79. echo "Użytkownik o takiej nazwie już istnieje...";
  80. }
  81.  
  82. #Sprawdzanie czy taki email już istnieje
  83. $mysqlia = "SELECT email FROM user";
  84. $mysqlib = $db->query($mysqlia);
  85. while($echo = $mysqlib->fetch_object())
  86. if(($echo->email) == $email)
  87. {
  88. echo "Ktoś się zarejestrował już z tego adresu email...";
  89. }
  90.  
  91. #################
  92. ## REJESTRACJA ##
  93. #################
  94. $mysqli = "INSERT INTO user (user, password, email, date, ip) VALUES ('$user' , '".md5($password)."', '$email', '$date', '$ip')";
  95. $echo = $db->query($mysqli);
  96. if($echo)
  97. {
  98. echo "Zostałeś pomyślnie zarejestrowany, oczekuj na aktywacje...";
  99. }
  100. else
  101. {
  102. echo "Wystąpił błąd, jeżeli błąd się powtarza skontaktuj się z administratorem...";
  103. exit;
  104. }
  105. }
  106. }
  107. ?>


I największe moje pytanie, które już dawno chciałem zadać "Jak przypisać id użytkowników do sesji, obecnie loguję po nazwie użytkownika" tak:

  1. <?php
  2. if(isset($_SESSION['session_user']))
  3. {
  4. header('location: index.php');
  5. }
  6. else
  7. {
  8. echo "<div class='h3'><h3>Logowanie</h3></div><div class='text'>";
  9. echo "<form action='' method='POST'>
  10. <table>
  11. <tr>
  12. <td>Nazwa użytkownika:</td><td><input type='text' name='user' /></td>
  13. </tr>
  14. <tr>
  15. <td>Hasło:</td><td><input type='password' name='password' /></td>
  16. </tr>
  17. <tr>
  18. <td colspan=2><input type='submit' name='zaloguj' value='Zaloguj' /></td>
  19. </tr>
  20. </table>
  21. </form>";
  22. echo "</div>";
  23.  
  24. require_once'config_db.php';
  25. if(isset($_POST['zaloguj']))
  26. {
  27. $user = $_POST['user'];
  28. $password = $_POST['password'];
  29.  
  30. #Sprawdzanie pól formularza
  31. if(!$_POST['user'] || !$_POST['password'])
  32. {
  33. echo "Jedno bądź więcej pól w formularzu jest puste...";
  34. exit;
  35. }
  36.  
  37. #Sprawdzanie wprowadzonych danych
  38. if(!eregi('^[a-zA-z]+', $user))
  39. {
  40. echo "Nazwa użytkownika może zawierać wyłącznie małe i duże litery...";
  41. exit;
  42. }
  43. elseif(!eregi('^[a-zA-z0-9]+', $password))
  44. {
  45. echo "Hasło może zawierać wyłącznie małe i duże litery oraz cyfry...";
  46. }
  47. ###############
  48. ## LOGOWANIE ##
  49. ###############
  50. if(isset($_POST['user']) && isset($_POST['password']))
  51. {
  52. $mysqlia = "SELECT * FROM user WHERE user='".$user."' AND password='".md5($password)."'";
  53. $echo = $db->query($mysqlia);
  54. if($echo->num_rows > 0)
  55. {
  56. $_SESSION['session_user'] = $user;
  57. header('location: index.php');
  58. }
  59. else
  60. {
  61. echo "Login lub hasło, jest niepoprawne...";
  62. }
  63. $db->close();
  64. }
  65. }
  66. }
  67. ?>


To wszystko co potrafię w php mnie to wystarczy ale czy jest dobrze zoptymalizowane czy też można by coś dodać bądź zmienić to byłoby miło. Najbardziej jednak nurtuje mnie pytanie, które napisałem wyżej (IMG:style_emoticons/default/smile.gif)

@kolejne z pytań: przy rejestracji jest tak, że dla kodu użytkownik Bellum i użytkownik bElLuM to inne osoby wystarczy inne hasło i email by się zarejestrować, ponad to przy logowaniu zamiast bElLuM mogę wpisać Bellum i hasło ale nie do Bellum tylko do bElLuM i się normalnie zaloguję, proszę o radę myślę, że chodzi tutaj o uwzględnianie wielkości liter.

Ten post edytował Bellum 23.04.2011, 14:35:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Bellum
post
Post #2





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 2.03.2010
Skąd: ta pewność?

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


Cytat(kadlub @ 23.04.2011, 15:48:34 ) *
jeśli chodzi o bezpieczeństwo to
ja bym filtrował dane przesyłane z formularza np tak
http://php.net/manual/pl/function.mysql-re...cape-string.php
jak zapisać id użytkownika do sesji to jak sprawdzasz czy istnieje dany login i hasło tym zapytaniem
  1. $mysqlia = "SELECT * FROM user WHERE user='".$user."' AND password='".md5($password)."'";

to możesz pobrać id użytkownika i zapisać je do sesji

kadkub ale ja tego nie rozumiem właśnie, zmienna $user trzyma login a zapytanie do bazy danej idzie po zmiennej, później tą zmienną przekazuję do sesji. Powtarzam dla mnie php, jest trudne nie mam głowy, bardzo długo pisze skrypty, nienawidzę kopiować. Co muszę tu zrobić by to $id (które jakoś muszę przypisać do) do $user i zmienną $id przekazać do sesji, bo inaczej to po czym miałoby to identyfikować kto się loguję, przecież nie losowo?

Ten post edytował Bellum 23.04.2011, 15:01:16
Go to the top of the page
+Quote Post

Posty w temacie


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: 5.10.2025 - 06:25