Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Kod rejestracji
ExtazyPro
post 16.08.2012, 22:02:25
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 30.07.2012

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


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 :|

Ten post edytował ExtazyPro 17.08.2012, 14:19:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
kalafior122
post 16.08.2012, 22:05:36
Post #2





Grupa: Zarejestrowani
Postów: 65
Pomógł: 1
Dołączył: 19.03.2012
Skąd: Września

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


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

Ten post edytował kalafior122 16.08.2012, 22:21:50
Go to the top of the page
+Quote Post
ExtazyPro
post 16.08.2012, 22:12:34
Post #3





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 30.07.2012

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


ok zrobione snitch.gif Proszę o szybką pomoc smile.gif
Go to the top of the page
+Quote Post
PanGuzol
post 16.08.2012, 22:42:06
Post #4





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

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


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

Ten post edytował PanGuzol 16.08.2012, 22:44:33


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
Go to the top of the page
+Quote Post
pamil
post 16.08.2012, 22:52:09
Post #5





Grupa: Zarejestrowani
Postów: 97
Pomógł: 15
Dołączył: 12.08.2012
Skąd: Zabrze

Ostrzeżenie: (10%)
X----


Stop dla mysql_*. Używaj MySQLi lub PDO. Funkcje mysql_* są w trakcie procesu deprecjonizacji (?).
Go to the top of the page
+Quote Post
ExtazyPro
post 17.08.2012, 11:55:47
Post #6





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 30.07.2012

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


wyjaśni mi ktoś jak zastosować mysql_real_escape_string wiem tylko ze w zapytaniu :| HELP!:)
Go to the top of the page
+Quote Post
pamil
post 17.08.2012, 12:44:21
Post #7





Grupa: Zarejestrowani
Postów: 97
Pomógł: 15
Dołączył: 12.08.2012
Skąd: Zabrze

Ostrzeżenie: (10%)
X----


Masz bana na manual?
Go to the top of the page
+Quote Post
ExtazyPro
post 17.08.2012, 13:41:36
Post #8





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 30.07.2012

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


Nie chciałem pisać nowego tematu więc tylko odświeżam z nowym kodem i pytaniami ...
Go to the top of the page
+Quote Post
pamil
post 17.08.2012, 14:08:31
Post #9





Grupa: Zarejestrowani
Postów: 97
Pomógł: 15
Dołączył: 12.08.2012
Skąd: Zabrze

Ostrzeżenie: (10%)
X----


Fajnie. Manual twoim przyjacielem, mówię całkiem serio!
Go to the top of the page
+Quote Post
abort
post 17.08.2012, 16:07:35
Post #10





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


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ę.
Go to the top of the page
+Quote Post
ExtazyPro
post 17.08.2012, 18:29:28
Post #11





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 30.07.2012

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


@Up Dzięki nie trzeba dawać gotowców tylko naprowadzić na funkcje ;p chociaż niektórych nie kumam ale z czasem się dowiem ;p
Go to the top of the page
+Quote Post
pamil
post 17.08.2012, 21:24:08
Post #12





Grupa: Zarejestrowani
Postów: 97
Pomógł: 15
Dołączył: 12.08.2012
Skąd: Zabrze

Ostrzeżenie: (10%)
X----


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?
Go to the top of the page
+Quote Post
ExtazyPro
post 17.08.2012, 23:15:49
Post #13





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 30.07.2012

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


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?);
Go to the top of the page
+Quote Post
PanGuzol
post 18.08.2012, 17:50:59
Post #14





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

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


functions


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
Go to the top of the page
+Quote Post
Kużdo
post 18.08.2012, 18:24:49
Post #15





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


@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...
Go to the top of the page
+Quote Post
PanGuzol
post 18.08.2012, 19:31:31
Post #16





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

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


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


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
Go to the top of the page
+Quote Post
Kużdo
post 18.08.2012, 20:27:26
Post #17





Grupa: Zarejestrowani
Postów: 181
Pomógł: 14
Dołączył: 4.06.2008

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


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...
Go to the top of the page
+Quote Post

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: 14.08.2025 - 06:16