Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: reCAPTCHA w formularzu rejestracji
Forum PHP.pl > Forum > PHP
Karolus
Witam

Próbuję wstawić do formularzu rejestracyjnego reCAPTCHA ale nie do końca mi wychodzi...
Oto ten formularz:

  1. <div style="margin-top: 200px; height: auto" class="contener">
  2. <div id="form"/>
  3. <form method=post action="register.php">
  4. <font color=red><b>Rejestracja</b></font>
  5. <p>
  6. <font color=white><b>Wprowadz Nick:</b></font><br> <input type=text name="nick" lenght=32><br>
  7. <font color=white><b>Wprowadz Haslo:</b></font><br> <input type=password name="pass" lenght=32><br>
  8. <font color=white><b>Powtorz Haslo:</b></font><br> <input type=password name="pass_r" lenght=32><br>
  9. <font color=white><b>Wprowadz e-Mail:</b></font><br> <input type=text name="email"><br>
  10. <font color=white><b>Przepisz Kod:</b></font>
  11. <input type=hidden name="akcja" value="tak">
  12. <input type=submit value="Zarejestruj"><br><br>
  13. </form>
  14. <?php
  15. if($_SESSION['logged_in'] != true){
  16.  
  17. // reCAPTCHA
  18. require_once('recaptchalib.php');
  19. $klucz_publiczny = "xxxxx";
  20. $klucz_prywatny = "xxxxx";
  21.  
  22. $odp = null;
  23. $blad = null;
  24.  
  25. if ($_POST["Zarejestruj"]) {
  26. $odp = recaptcha_check_answer ($klucz_prywatny,
  27. $_SERVER["REMOTE_ADDR"],
  28. $_POST["recaptcha_challenge_field"],
  29. $_POST["recaptcha_response_field"]);
  30.  
  31. if ($odp->is_valid) {
  32.  
  33. // Do tego miejsca doszedłem i nie wiem co dalej
  34.  
  35. $akcja = $_POST['akcja'];
  36. if($akcja == tak) {
  37. $ip = $_SERVER['REMOTE_ADDR'];
  38. $nick = mysql_real_escape_string($_POST['nick']);
  39. $pass = mysql_real_escape_string($_POST['pass']);
  40. $pass_r = mysql_real_escape_string($_POST['pass_r']);
  41. $email = mysql_real_escape_string($_POST['email']);
  42. $nick = trim($nick);
  43.  
  44. // sprawdzanie, czy wpisane dane sa poprawne
  45. $check1 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE nick='$nick' LIMIT 1"));
  46. $check3 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE email='$email' LIMIT 1"));
  47. $check4 = strlen($nick);
  48. $check5 = strlen($pass);
  49. $check6 = strpos($email, "@");
  50. $check7 = strpos($email, ".");
  51. $check8 = strlen($email);
  52.  
  53. ?>
  54. <?php
  55. $komunikaty = '';
  56. ?>
  57. <?php
  58. if(!$nick || !$pass || !$pass_r || !$email) {
  59. $komunikaty .= "<li>Wszystkie pola musza byc uzupelnione!</li>";
  60. }
  61. if($check4 < 3) {
  62. $komunikaty .= "<li>Nick musi zawierac wiecej niz 3 znaki.</li>";
  63. }
  64. if($chack4 > 32) {
  65. $komunikaty .= "<li>Nick nie moze byc dluzszy niz 32 znaki.</li>";
  66. }
  67. if($check5 < 6) {
  68. $komunikaty .= "<li>Haslo musi zawierac wiecej niz 6 znakow.</li>";
  69. }
  70. if($check5 > 32) {
  71. $komunikaty .= "<li>Haslo nie moze byc dluzsze niz 32 znaki.</li>";
  72. }
  73. if($check1[0] >= 1) {
  74. $komunikaty .= "<li>Ten login jest juz zajety.</li>";
  75. }
  76. if($check3[0] >= 1) {
  77. $komunikaty .= "<li>Ten e-mail jest juz zajety.</li>";
  78. }
  79. if($pass != $pass_r) {
  80. $komunikaty .= "<li>Wpisane hasla nie sa takie same.</li>";
  81. }
  82. if($check4 == false or $check5 == false) {
  83. $komunikaty .= "<li>Nieprawidlowy adres e-mail.</li>";
  84. }
  85. if($check8 < 5) {
  86. $komunikaty .= "<li>Nieprawidlowy adres e-mail.</li>";
  87. }
  88. if($komunikaty) {
  89. echo "<b><font color=white>Popraw bledy:</font></b><br><span style=\"color: red\">".$komunikaty."</span>";
  90. }
  91. else {
  92. $login = str_replace(' ', '', $nick);
  93. $pass = $_POST['pass'];
  94. $pass2 = md5($pass);
  95. $date = date("d m Y");
  96. $no = 0;
  97. mysql_query ("INSERT INTO users (nick, email, pass, ip, date_register, points, bought_points, spent_points, isadmin) VALUES('$nick', '$email', '$pass2', '$ip', '$date', '$no', '$no', '$no', '$no')") or die("Nie moglem Cie zarejestrowac");
  98. echo "<font color=white><font color=green><b>Konto zostalo pomyslnie zarejestrowane!</b></font><br>Mozesz sie teraz <a href=\"http://sklep.xpiration.pl\"><font color=white>zalogowac</font></a>.</font>";
  99. mysql_close($connection);
  100. }
  101. }
  102. ?>
  103. </div>
  104. </div>
  105. <?php
  106. } else {
  107. echo '<font color=red>Jestes wlasnie zalogowany...<br>Wiec nie mozesz sie zarejestrowac!</br>';
  108. echo '<br><a class="link2" href="index.php"><font color=white><< Wstecz</font></a>';
  109. }
  110. ?>


Nie wiem jak miałbym dokończyć implementację, nie użyłem pozostałego kodu:
  1. echo "You got it!";
  2. } else {
  3. # set the error code so that we can display it
  4. $error = $resp->error;
  5. }
  6. }
  7. echo recaptcha_get_html($publickey, $error);
Pyton_000
Przecież to co zostawiłeś wyświetla Ci właśnie obrazek :| Czytałeś inst. jak się to wrzuca na stronie autora ?
Karolus
Cytat(Pyton_000 @ 29.05.2014, 09:17:47 ) *
Przecież to co zostawiłeś wyświetla Ci właśnie obrazek :| Czytałeś inst. jak się to wrzuca na stronie autora ?


Tak czytałem i poradziłbym sobie z tym gdyby nie to że formularz jest dla mnie skomplikowany poprzez sprawdzanie poprawności wpisanych w nim danych.
Nie wstawiłem bo nie wiem GDZIE i jak.
Pyton_000
Kod
echo recaptcha_get_html($publickey, $error);

To Ci wyświetli obrazek więc do formularza
Karolus
Cytat(Pyton_000 @ 29.05.2014, 09:35:38 ) *
Kod
echo recaptcha_get_html($publickey, $error);

To Ci wyświetli obrazek więc do formularza


Jak mam niby odwołać się do funkcji która następuję potem.

Kod
Fatal error: Call to undefined function recaptcha_get_html() in
Pyton_000
przenieść require i dane o kluczach na początek pliku
Karolus
Ok.. Udało mi się - działa!

Ale jest jeszcze jedna rzecz, kiedy źle wpiszę captche to brakuję mi komunikatu odnośnie tego że została źle wpisana. Jak go dodać?

Cały plik:
  1. <?php
  2. require("config/polacz.php");
  3. require_once('recaptchalib.php');
  4. $klucz_publiczny = "6LeuTvQSAAAAAJJr-THnpLDQ8baaaVpiHINuDIkv";
  5. $klucz_prywatny = "6LeuTvQSAAAAAKnb7GPUpgZVo2ul7MatOnAHmWov";
  6. ?>
  7. <html>
  8. <head>
  9. <link rel=stylesheet href="stylefree.css" TYPE="text/css" media="screen"/>
  10. <meta http-equiv="Content-Type" content="text/html; charset=Windows-1250" />
  11. <meta name="Description" content="Sklep SMS - Xpiration" />
  12. <meta name="Keywords" content="sklep, sms, minecraft, xpiration, xp" />
  13. <title>Xpiration - Twoj Świat inspiracji Minecraft</title>
  14. <link rel="shortcut icon" href="http://forum.xpiration.pl/images/xc_favicon3.png" type="image/x-icon" />
  15. <style type="text/css">
  16. body {
  17. background:url('images/tlo.jpg');
  18. color: #e0e0e0;
  19. font-family: Minecraft;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <div class="youarehere">
  25. <center><a href="http://xpiration.pl"><font color=white>Portal</font></a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://forum.xpiration.pl"><font color=white>Forum</font></a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://sklep.xpiration.pl"><font color=white>Sklep SMS</font></a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://sklep.xpiration.pl/regulamin.php"><font color=white>Regulamin Sklepu</font></a></center>
  26. </div>
  27. <div style="margin-top: 200px; height: auto; width: 350;" class="contener">
  28. <div id="form"/>
  29. <form method=post action="register2.php">
  30. <font color=red><b>Rejestracja</b></font>
  31. <p>
  32. <font color=white><b>Wprowadz Nick:</b></font><br> <input type=text name="nick" lenght=32><br>
  33. <font color=white><b>Wprowadz Haslo:</b></font><br> <input type=password name="pass" lenght=32><br>
  34. <font color=white><b>Powtorz Haslo:</b></font><br> <input type=password name="pass_r" lenght=32><br>
  35. <font color=white><b>Wprowadz e-Mail:</b></font><br> <input type=text name="email"><br>
  36. <font color=white><b>Przepisz Kod:</b></font>
  37. <?php
  38. echo recaptcha_get_html($klucz_publiczny, $blad);
  39. ?>
  40. <input type=hidden name="akcja" value="tak">
  41. <br><input type=submit value="Zarejestruj"><br><br>
  42. </form>
  43. <?php
  44. if($_SESSION['logged_in'] != true){
  45.  
  46. $odp = null;
  47. $blad = null;
  48.  
  49. if ($_POST["recaptcha_response_field"]) {
  50. $odp = recaptcha_check_answer ($klucz_prywatny,
  51. $_SERVER["REMOTE_ADDR"],
  52. $_POST["recaptcha_challenge_field"],
  53. $_POST["recaptcha_response_field"]);
  54. }
  55.  
  56. if ($odp->is_valid) {
  57.  
  58. $akcja = $_POST['akcja'];
  59. if($akcja == tak) {
  60. $ip = $_SERVER['REMOTE_ADDR'];
  61. $nick = mysql_real_escape_string($_POST['nick']);
  62. $pass = mysql_real_escape_string($_POST['pass']);
  63. $pass_r = mysql_real_escape_string($_POST['pass_r']);
  64. $email = mysql_real_escape_string($_POST['email']);
  65. $nick = trim($nick);
  66.  
  67. // sprawdzanie, czy wpisane dane sa poprawne
  68. $check1 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE nick='$nick' LIMIT 1"));
  69. $check3 = mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM users WHERE email='$email' LIMIT 1"));
  70. $check4 = strlen($nick);
  71. $check5 = strlen($pass);
  72. $check6 = strpos($email, "@");
  73. $check7 = strpos($email, ".");
  74. $check8 = strlen($email);
  75.  
  76. ?>
  77. <?php
  78. $komunikaty = '';
  79. ?>
  80. <?php
  81. if(!$nick || !$pass || !$pass_r || !$email) {
  82. $komunikaty .= "<li>Wszystkie pola musza byc uzupelnione!</li>";
  83. }
  84. if($check4 < 3) {
  85. $komunikaty .= "<li>Nick musi zawierac wiecej niz 3 znaki.</li>";
  86. }
  87. if($chack4 > 32) {
  88. $komunikaty .= "<li>Nick nie moze byc dluzszy niz 32 znaki.</li>";
  89. }
  90. if($check5 < 6) {
  91. $komunikaty .= "<li>Haslo musi zawierac wiecej niz 6 znakow.</li>";
  92. }
  93. if($check5 > 32) {
  94. $komunikaty .= "<li>Haslo nie moze byc dluzsze niz 32 znaki.</li>";
  95. }
  96. if($check1[0] >= 1) {
  97. $komunikaty .= "<li>Ten login jest juz zajety.</li>";
  98. }
  99. if($check3[0] >= 1) {
  100. $komunikaty .= "<li>Ten e-mail jest juz zajety.</li>";
  101. }
  102. if($pass != $pass_r) {
  103. $komunikaty .= "<li>Wpisane hasla nie sa takie same.</li>";
  104. }
  105. if($check4 == false or $check5 == false) {
  106. $komunikaty .= "<li>Nieprawidlowy adres e-mail.</li>";
  107. }
  108. if($check8 < 5) {
  109. $komunikaty .= "<li>Nieprawidlowy adres e-mail.</li>";
  110. }
  111. if($komunikaty) {
  112. echo "<b><font color=white>Popraw bledy:</font></b><br><span style=\"color: red\">".$komunikaty."</span>";
  113. }
  114. else {
  115. $login = str_replace(' ', '', $nick);
  116. $pass = $_POST['pass'];
  117. $pass2 = md5($pass);
  118. $date = date("d m Y");
  119. $no = 0;
  120. mysql_query ("INSERT INTO users (nick, email, pass, ip, date_register, points, bought_points, spent_points, isadmin) VALUES('$nick', '$email', '$pass2', '$ip', '$date', '$no', '$no', '$no', '$no')") or die("Nie moglem Cie zarejestrowac");
  121. echo "<font color=white><font color=green><b>Konto zostalo pomyslnie zarejestrowane!</b></font><br>Mozesz sie teraz <a href=\"http://sklep.xpiration.pl\"><font color=white>zalogowac</font></a>.</font>";
  122. mysql_close($connection);
  123. }
  124. }
  125. }
  126. ?>
  127. </div>
  128. </div>
  129. <?php
  130. } else {
  131. header( 'Location: <a href="http://www.sklep.xpiration.pl'" target="_blank">http://www.sklep.xpiration.pl'</a> ) ;
  132. }
  133. ?>
  134. </body>
  135. </html>
Pyton_000
127 linijkę zamień na
  1. } else {
  2. # set the error code so that we can display it
  3. var_dump($resp->error);
  4. }
Karolus
Pomijając fakt że cały czas jest null nawet jeżeli przypiszę inną wartość to i tak jest coś nie tak bo wyświetla się cały czas a nie dopiero po złym wpisaniu.

@EDIT
Właśnie zauważyłem że w ogóle nie wyświetlają mi się komunikaty gdy źle wpiszę e-mail itd.
Jest to sprawdzane ale komunikaty w ogóle się nie wyświetlają.

@EDIT#2
Ok, przeniosłem kod niżej. I działa ale nadal nie wiem jak uzyskać komunikat o złej captche.

@EDIT#3
Ok poradziłem sobie chyba ze wszystkim.

Kod
mysql_query ("INSERT INTO users (nick, email, pass, ip, date_register, points, bought_points, spent_points, isadmin) VALUES('$nick', '$email', '$pass2', '$ip', '$date', '$no', '$no', '$no', '$no')") or die("Nie moglem Cie zarejestrowac");
echo "<font color=white><font color=green><b>Konto zostalo zalozone!</b></font><br><a href=\"http://sklep.xpiration.pl\"><font color=white>Zaloguj sie!</font></a></font>";
mysql_close($connection);
}
else
{
echo "<b><font color=white>Wykryto bledy:</font></b><br><font color=red><li>Bledny kod reCAPTCHA!</li></font>";
}
}
}


Końcówka kodu która działa smile.gif
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.