Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Kod rejestracji
Forum PHP.pl > Forum > Przedszkole
ExtazyPro
Witam!:)
Nie chciałem robić nowego tematu a kod troszkę zmieniłem i nasunęły mi się kolejne problemy :|
Od razu przejdę do rzeczy mam taki kodzik rejestracyjny i pytania z nim związane
Kod Rejestracyjny:

  1. <?php
  2. include ("ustaw/database_cfg.php");
  3. ?>
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-type" content="text/html; charset=SHA256" />
  7. <link href="CSS/Style.css" rel="stylesheet" type="text/css">
  8. </head>
  9. <body>
  10. <center>
  11. <form action="?action=register" method="post">
  12. <font color="#black" size="2,3px">Login:<br><br> <input type="text" name='username' class='pole'><br>
  13. <br>Hasło:<br><br> <input type="password" name="passwd" class='pole'><br>
  14. <br>Powtórz hasło:<br><br> <input type="password" name="rpt_passwd" class='pole'><br>
  15. <br>Imię:<br><br> <input type="text" name="real_name" class='pole'><br>
  16. <br>E-mail<br><br> <input type="text" name="email" class='pole'><br>
  17. <br><br> </font>
  18. <input type="reset" value="Wyczysc pola!" class='button'> <input type="submit" value="Zarejestruj!" class='button'>
  19. </form></center>
  20. <?php
  21. $message['success'] = "Konto zostało pomyślnie założone!Za chciwle zostaniesz przekierowany na stronę główną :)";
  22. $message['err_acc'] = "Wystąpił bł?d podczas zakładania konta!Zgłoś to Administracij";
  23. $message['err_pass'] = "Poadne hasła nie pasują do siebie!";
  24. $message['exist'] = "Takie konto już istnieje!";
  25. $message['polpass'] = "Pole Hasło Nie Może Być Puste!";
  26. $message['polelog'] = "Pole Login Nie Może Być Puste!";
  27. $message['rename'] = "Pole Imie Nie Może Być Puste!";
  28. $message['email'] = "Pole E-Mail Nie Może Być Puste!";
  29.  
  30. if(isset($_REQUEST['action']) && $_REQUEST['action']=="register") {
  31. if($_REQUEST['action']=="register")
  32. {
  33. $error = FALSE;
  34. $username = $_REQUEST['username'];
  35. if (empty($username)) { //reszta analogicznie i nie ł?cz wszystkich, dla każdego daj osobne
  36. $error = TRUE; //kluczowym jest tutaj ustawienie true dla error, inaczej konto będzie się zakładać zawsze
  37. echo '<script type="text/javascript">alert("'.$message['polelog'].'");</script>';
  38. }
  39. $error = FALSE;
  40. $passwd = $_REQUEST['passwd']; //pamię?aj, żeby sprawdzać czy hasło nie jest puste, a nie tylko czy zgadza się z powtórzonym
  41. if (empty($passwd)) {
  42. $error = TRUE;
  43. echo '<script type="text/javascript">alert("'.$message['polpass'].'");</script>';
  44. }
  45. $error = FALSE;
  46. $rpt_passwd = $_REQUEST['rpt_passwd'];
  47. if ($passwd == $rpt_passwd) {
  48. $error = TRUE;
  49. echo '<script type="text/javascript">alert("'.$message['err_pass'].'");</script>';
  50. }
  51. $error = FALSE;
  52. $real_name = $_REQUEST['real_name'];
  53. if (empty($real_name)) {
  54. $error = TRUE;
  55. echo '<script type="text/javascript">alert("'.$message['rename'].'");</script>';
  56. }
  57. $error = FALSE;
  58. $email = $_REQUEST['email'];
  59. if (empty($email)) {
  60. $error = TRUE;
  61. echo '<script type="text/javascript">alert("'.$message['email'].'");</script>';
  62. }
  63. $db = mysql_select_db("authme");
  64. if($passwd == $rpt_passwd && !$error) //dodane sprawdzanie czy error jest FALSE
  65. {
  66. if(mysql_num_rows(mysql_query("SELECT * FROM authme WHERE username='$username'")) > 0)
  67. {
  68. echo '<script type="text/javascript">alert("'.$message['exist'].'");</script>';
  69. }
  70. else
  71. {
  72. $passwd = hash('sha256',$passwd);
  73. $mq = mysql_query("INSERT INTO authme (`username`, `password`, `real_name`, `email`) VALUES('".$username."','".$passwd."','".$real_name."','".$email."');") or die(mysql_error());
  74. if($mq = true)
  75. {
  76. echo '<script type="text/javascript">alert("'.$message['success'].'");</script>';
  77. }
  78. else
  79. {
  80. echo '<script type="text/javascript">alert("'.$message['err_acc'].'");</script>';
  81. }
  82. }
  83. }
  84. else
  85. {
  86. echo '<script type="text/javascript">alert("'.$message['err_pass'].'");</script>';
  87. }
  88. }}
  89. ?>



No ok
1.Jak zabezpieczyć ten kod i inne przed atakami SQL injection.//nie wiem jak zastosować mysql_real_esxape_string :| wiem tylko ze w zapytaniu do bazy.
2.eh.. wszystko jest ok do momentu gdy wszystko wpisze nacisnę rejestru i otrzymuje odp "Poadne hasła nie pasują do siebie!" jest to związane chyba z
echo '<script type="text/javascript">alert("'.$message['err_pass'].'");</script>'; //jest to prawie na końcu kodu smile.gif
3.Jak zrobić że jak wpisze sie w polu email np lol.pl lub emai bez @ to aby wywalało błąd "E-mail jest niepoprawny!" tak samo z polem Imie aby w nim nie można było wpisywać cyfer,kropek i takich innych znaków :|
Z góry Dziękuje smile.gif

Trochę nie rozumie jak zastosować mysql_real_escape_string :| wiem ze w zapytaniu na pewno

@Pamil nie wiem o co ci chodzi jestem troszkę początkujący snitch.gif
@Pamil nie nie mam żadnego bana
@Pamil zamiast pisać jakieś G%$#o napisał byś coś rozsądnego bo twoja wypowiedz nie pasuje do tematu :|
kalafior122
dodaj kod w znaczniki php bo słabo widać o co chodzi tongue.gif [ php ][ /php ].

według zapytania powinno zapisywać poprawnie tu ci je lekko poprawiłem
  1. $mq = mysql_query("INSERT INTO authme (`username`, `password`, `real_name`, `email`) VALUES ('$username','$passwd','$real_name','$email')");


problem nr2:
  1. if($_REQUEST['action']=="register"){ //tutaj się pojawia błąd, bo ten indeks istnieje tylko, gdy formularz zostnie wysłany, dlatego trzeba dodać sprawdzsanie istnienia klucza
  2. if(isset($_REQUEST['action']) && $_REQUEST['action']=="register")
  3. {
  4. //kodzik
  5. }
  6. }



co do nr3 masz w tabeli coś z id i jest auto_increment nie wiem może być od tego nigdy takiego błędu nie miałem
ExtazyPro
ok zrobione snitch.gif Proszę o szybką pomoc smile.gif
PanGuzol
ad 3. Prawdopodobnie zapomniałeś ustawić auto_increment dla id w tabeli, wejdź do phpMyAdmin i sprawdź.

ad4 mysql_real_escape_string

aby pozbyć się tego notice najpierw użyj isset
pamil
Stop dla mysql_*. Używaj MySQLi lub PDO. Funkcje mysql_* są w trakcie procesu deprecjonizacji (?).
ExtazyPro
wyjaśni mi ktoś jak zastosować mysql_real_escape_string wiem tylko ze w zapytaniu :| HELP!:)
pamil
Masz bana na manual?
ExtazyPro
Nie chciałem pisać nowego tematu więc tylko odświeżam z nowym kodem i pytaniami ...
pamil
Fajnie. Manual twoim przyjacielem, mówię całkiem serio!
abort
Nie edytuj pierwszego posta. To jest SAMO ZŁO.
1. jak się wątek rozrośnie na wiele stron, nikomu nie będzie się chciało czytać np. 1 i 4 strony.
2. forum to także baza wiedzy - można go przeszukać i dowiedzieć się pytania i odpowiedzi. Ale jak ktoś zmodyfikuje pytanie, to odpowiedź (już nie zmodyfikowana) będzie bez sensu.

Co do sprawdzania emaila... Jeśli chcesz robić to na zasadzie sprawdzania istnienia znaku "@", to są do tego odpowiednie funkcje, znajdziesz je tu:
http://www.php.net/manual/en/ref.strings.php

I nie oczekuj gotowego kodu (przynajmniej ode mnie). Ja daję wędkę, a nie rybę.
ExtazyPro
@Up Dzięki nie trzeba dawać gotowców tylko naprowadzić na funkcje ;p chociaż niektórych nie kumam ale z czasem się dowiem ;p
pamil
Cytat(ExtazyPro @ 17.08.2012, 12:55:47 ) *
wyjaśni mi ktoś jak zastosować mysql_real_escape_string wiem tylko ze w zapytaniu :| HELP!:)

Dobrze.
Zrobię to tylko raz.

http://www.php.net/manual/pl/function.mysq...cape-string.php
Przykład #1 - nawet masz dokumentację po polsku, cud, miód i orzeszki!
Czy to takie trudne sprawdzić w manualu?
ExtazyPro
no ok Pamil czytałem już to ale ja mam trochę inne zapytanie!
  1. $mq = mysql_query("INSERT INTO authme (`username`, `password`, `real_name`, `email`) VALUES('".$username."','".$passwd."','".$real_name."','".$email."');") or die(mysql_error());

Więc jak mam je zabezpieczyć?
  1. $mq = mysql_query("INSERT INTO authme (`username`, `password`, `real_name`, `email`) VALUES('".$username."','".$passwd."','".$real_name."','".$email."');") or die(mysql_error());
  2. mysql_real_escape_string (i wszystko po kolei czy jak?);
PanGuzol
functions
Kużdo
@ExtazyPro, używasz tej funkcji przy samych zmiennych, nie przy całym zapytaniu. I przed zapytaniem, czyli zamiast:
  1. $username = $_REQUEST['username'];

dajesz np.:
  1. $username = mysql_real_escape_string($_REQUEST['username']);

a na samym końcu wykonuejsz zapytanie do bazy normalnie tak jak robiłeś.

@PanGuzol, odpuść sobie takie posty, bo co on ma z niego zrozumieć? Jak działają funkcje? To chyba wie, bo niektórych umie używać, a po prostu nie rozumie jednej konkretnej. Więc jak chcecie komuś pomagać, to pomagajcie, a nie spamujcie bezsensownie...
PanGuzol
One wszystkie działają tak samo, wywołujesz funkcję podając parametry i odbierasz wartość zwracaną.
  1. $wynik = funkcja($parametry);
dla zdecydowanej większości funkcji.
Z paroma wyjątkami gdzie podajesz jakiś parametr przez referencję.
Kużdo
To trzeba było podać link do php.net, google.pl albo napisać tylko, żeby uruchomił przeglądarkę, bo efekt byłby taki sam - bez sensowny post. On wie jak używa się funkcji, nie wiedział w jaki sposób ją wykorzystać. Ale oczywiście znajdą się tacy, co zamiast pomagać tylko nabijają posty...
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.