Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Moj skrypt rej. Proszę o porady.
Forum PHP.pl > Forum > Przedszkole
robert-0627
Witam wszystkich. Ostatnio napisałem skrypt rejestracji, logowania itp. I chciałbym prosić, was o poradę bo o ile wszystko mi działa tak nie jestem pewien czy poprawnie stosuje, niektóre rzeczy.
header , session, !tytul,

1. Czy o to mniej więcej chodzi z kodowaniem hasła przy mdl5? Podczas tworzenia użytkownika jest kodowane i podczas logowania również aby sprawdzić czy pasują.
2. Czytałem, że header i session mają być wysłane do przeglądarki przed wysłaniem jakiegokolwiek tekstu. Czy mam rozumieć, że te 2 rzeczy powinny być umieszczone jeszcze jakoś przed znacnzikiem <html>? Bo wtedy wydaje mi się, że trochę więcej zabawy by mogło być.
3. Taki fragment kodu "if(!$value_password)" z pliku rejestracja , który ma sprawdzać czy użytkownik podał hasło. Czy poprawnie to jest zrobione ? I jak zrobić, aby taki komunikat wyświetlał się po wysłaniu formularza. Tymczasem jużpo wejściu na strone widnieję ostrzeżenie.
4. I ogólnie chciałbym prosić, o jakieś wskazówki, które pomogłyby mi w dalszym rozwjou .

Pozdrawiam i z góry dziękuje za odpowiedź.
Logowanie
  1. //LOG IN
  2.  
  3. <table border="2" font size="2">
  4. <tr align="right" valign="top" height="10%" ><td align="right" valign="top">
  5.  
  6. <form method = "post" action = "index.php">
  7.  
  8. <input type="text" name="login">
  9. <br>LOGIN
  10. </td>
  11.  
  12. <td>
  13.  
  14. <input type="password" name="password">
  15. <br>PASSWORD
  16. </td></tr>
  17.  
  18. <tr align = "right"><td colspan="2">
  19. <input type="submit" value="SEND">
  20. </td></tr>
  21.  
  22. </form>
  23.  
  24. </table>
  25.  
  26.  
  27. <?php
  28.  
  29.  
  30.  
  31. require 'connection.php';
  32.  
  33. $login = $_POST['login'];
  34. $password_insert = $_POST['password'];
  35.  
  36. $hash_log = md5($password_insert);
  37.  
  38.  
  39. $q = mysql_query("SELECT * FROM `users` where `login` = '$login' AND `password` = '$hash_log' ")
  40. or die('BLAD LOGOWANIA: '.mysql_error());
  41.  
  42.  
  43. $wynik = mysql_fetch_array($q);
  44. $check_password = $wynik['password'];
  45.  
  46.  
  47. if($wynik)
  48. {
  49. $_SESSION['logged'] = $wynik['login'];
  50. $_SESSION['id'] = $wynik['id'];
  51. echo "zalogowales sie: <br>".$_SESSION['logged'];
  52. echo "<br><a href='log_out.php'>LOG OUT</a>";
  53. header("Location: <a href="http://iamorganized.cba.pl/index.php&quot%3b%29;" target="_blank">http://iamorganized.cba.pl/index.php");</a>
  54. }
  55. else
  56. {
  57. if(!$password_insert || !$login)
  58. echo "insert the password or loggin<br>";
  59. else
  60. echo "WRONG password or loggin<br>";
  61. }
  62.  
  63.  
  64. @mysql_close($connection);
  65.  
  66. ?>
  67.  


Rejestracja:
  1. <table>
  2. <tr align="right"><td>
  3.  
  4. <form method = "post" action = "index.php">
  5. LOGIN: <input type="text" name="login_reg"><br>
  6. </tr></td>
  7. <tr align = "right"><td>
  8.  
  9. PASSWORD: <input type="password" name="password_reg"><br>
  10. </tr></td>
  11. <tr align = "right"><td>
  12. RETYPE PASSWORD: <input type="password" name="password2_reg"><br>
  13. </tr></td>
  14. <tr align = "right"><td>
  15. AGE: <input type="text" name="age"><br>
  16. </tr></td>
  17. <tr align = "right"><td>
  18. <input type="submit" value="SEND">
  19. </tr></td>
  20. </form>
  21. </table>
  22.  
  23. <?php
  24.  
  25.  
  26. include 'connection.php';
  27.  
  28. $value_login = $_POST['login_reg'];
  29.  
  30. $value_password = $_POST['password_reg'];
  31.  
  32. $hash_reg = md5($value_password);
  33.  
  34. $password2 = $_POST['password2_reg'];
  35.  
  36. $age = $_POST['age'];
  37.  
  38. $exist = @mysql_query("SELECT * FROM `users` WHERE `login` = '$value_login' ") //Sprawdzenie czy dany użytkownik już znajduję sie w bazie
  39. or die('BLAD REJESTRACJA: '. mysql_error());
  40.  
  41. $number_users = @mysql_query("SELECT * FROM `users` ");
  42. echo 'Registered users: '.@mysql_num_rows($number_users);
  43.  
  44. $result = mysql_fetch_assoc($exist);
  45.  
  46.  
  47. if($result['login'])
  48. echo $result['login']." already exist in my data base";
  49. else
  50. {
  51. if(!$value_password)
  52. echo "Enter the password!<br>";
  53. if(!$value_login)
  54. echo "Enter the login!<br>";
  55. if($password2 != $value_password)
  56. echo "Passwords must match !";
  57.  
  58. if($password2 == $value_password && $value_password && $value_login)
  59. {
  60. echo "uzytkownik dodany";
  61. $add = @mysql_query("INSERT INTO `users` (`id`,`login`,`password`,`age`) VALUES ('','$value_login','$hash','$age')");
  62. }
  63. }
  64.  
  65.  
  66. @mysql_close($connection);
  67. ?>
Lorum3
Przelatując oczami, wydaje mi się, że jest okej.

Odnośnie komunikatów, robisz sobie np. coś takiego -

  1. $info = NULL;
  2.  
  3. if( $sratata == $sratata1){
  4.  
  5. $info = 'Sratata';
  6.  
  7. }
  8. else{
  9.  
  10. $info = 'Blablalla';
  11.  
  12. }


Wtedy wywołujesz sobie zmienną $info tam gdzie uważasz.
robert-0627
Mam problemy z tym jeżykiem. Jak pisałem w inncyh to jakiś znaczek był źle i już kod nie działał. A tutaj bardzo często czy dam '' czy "" to i tak działa i mam serie dylematów wink.gif. "Usuń również wszystkie małpy (@) z kodu. Powodują one wyciszenie błędów i ich po prostu nie widać " To wychodzi na to, że lepiej pisać bez @ bo przynajmniej można dostać komunikaty o błędach. Nie wiem czy dobrze rozumiem.
Lorum3
Cytat(robert-0627 @ 10.04.2012, 21:37:54 ) *
Mam problemy z tym jeżykiem. Jak pisałem w inncyh to jakiś znaczek był źle i już kod nie działał. A tutaj bardzo często czy dam '' czy "" to i tak działa i mam serie dylematów wink.gif. "Usuń również wszystkie małpy (@) z kodu. Powodują one wyciszenie błędów i ich po prostu nie widać " To wychodzi na to, że lepiej pisać bez @ bo przynajmniej można dostać komunikaty o błędach. Nie wiem czy dobrze rozumiem.


Małpki stosuj w wersji produkcyjnej tylko i wyłącznie.
tolomei
Witaj.

Odpowiadając na pytania:
1. Uznaje się powszechnie, że czysty md5 nie jest w pełni bezpieczny. Poprawę bezpieczeństwa zapewni Ci już SHA1. Dodatkowo polecam poczytanie o generowaniu "soli" do hasła.
2. Inicjalizację sesji oraz funkcję header() stosujemy przed jakimikolwiek znakami przesłanymi do klienta. To oznacza, że także przed jakimkolwiek HTML-em.

Twój skrypt posiada luki SQL Injection. Jeśli chcesz używać PHP to musisz nauczyć się co to jest i jak się zabezpieczać(sprawdź także XSS).
Użyta przez Ciebie funkcja header() zawiera błędny nagłówek poczytaj o niej w manualu(header).
Nie powinieneś zbyt pochopnie używać kodu w stylu if(!$zmienna). Czasami wynik może być zaskakujący. Więcej tutaj.

Kod jest dobry jeśli dopiero się uczysz, ale nie wystarczający, aby budować coś dużego za jego pomocą.
Poczytaj o MVC.

Powodzenia.
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.