Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Kod obrazkowy - antyspamowy
Rewil
post
Post #1





Grupa: Zarejestrowani
Postów: 175
Pomógł: 0
Dołączył: 19.09.2009

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


Pomimo gdy wyswietle poprzednia zgodnosc tzn. wrzucam dla sprawdzania do sesji kod wygenerowany i zpola POST, pomimo to skrypt pisze ze wystapil blad wpisania kodu. (Pomimo ze sie zgadzaja)
  1. <?
  2. include('sesja_uzytkownika.php');
  3.  
  4. $kod_obrazka = substr(md5(date("d.m.Y.H.i.s").rand(1,1000000)) , 0 , 8);
  5.  
  6. echo $_SESSION['kod_obrazka_str']."#ses_obrazka";
  7. echo $kod_obrazka."#kod_obrazka";
  8. echo $_POST['kod_potw']."#kod_post";
  9.  
  10. $_SESSION['kod_obrazka_str'] = $kod_obrazka;
  11. if(is_numeric($ses_id)){
  12. $id_uzyt = $ses_id;
  13. }else{
  14. $id_uzyt = 0;
  15. }
  16. if($_POST['sub']){
  17. $_SESSION['kod_obrazka_post'] = $_POST['kod_potw'];
  18. if($_SESSION['kod_obrazka_post'] == $_SESSION['kod_obrazka_str']){
  19. $adres = $_POST['adres_strony'];
  20. preg_match('@^(?:http://)?([^/]+)@i',$adres, $matches);
  21. $adres_sp = $matches[1];
  22. $time = time();
  23. mysql_query("insert into strony (link, time, id_uzytkownika, status) values ('$adres_sp', '$time', '$id_uzyt', 'Oczekuje')");
  24. }else{
  25. $blad = "Podałeś zły kod";
  26. }
  27. }
  28.  
  29. ?>

Fragment odpowiadajacy za walidacje, jedyny pomysl to blad gdzies w logice. ;/
Go to the top of the page
+Quote Post
Wicepsik
post
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

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


session_start

Ten post edytował Wicepsik 11.06.2010, 17:46:40
Go to the top of the page
+Quote Post
Rewil
post
Post #3





Grupa: Zarejestrowani
Postów: 175
Pomógł: 0
Dołączył: 19.09.2009

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


Cytat(Wicepsik @ 11.06.2010, 18:46:22 ) *

sesja_uzytkownika.php chyba po coś raczej jest...
Jednym słowem pudło.
Go to the top of the page
+Quote Post
tehaha
post
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


nie rozumiem tu jednej rzeczy, jak ma zachodzić równość w:
  1. $_SESSION['kod_obrazka_post'] == $_SESSION['kod_obrazka_str']
skoro do zmiennej $_SESSION['kod_obrazka_str'] przypisujesz losowy ciąg znaków
  1. $_SESSION['kod_obrazka_str'] = $kod_obrazka;


Ten post edytował tehaha 12.06.2010, 20:40:54
Go to the top of the page
+Quote Post
Rewil
post
Post #5





Grupa: Zarejestrowani
Postów: 175
Pomógł: 0
Dołączył: 19.09.2009

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


  1. $kod_obrazka = substr(md5(date("d.m.Y.H.i.s").rand(1,1000000)) , 0 , 8);

Losuje raz kod który ma wyświetlić w obrazku i wrzuca do sessji.
  1. $_SESSION['kod_obrazka_str'] = $kod_obrazka;


Po kliknieciu w buttona:
  1. $_SESSION['kod_obrazka_post'] = $_POST['kod_potw'];

Wrzuca sie z pola post wpisany tekst, po czym if sprawdza czy zmienne sie zgadzaja by pozwolić na dodanie do bazy.
  1. if($_SESSION['kod_obrazka_post'] == $_SESSION['kod_obrazka_str']){


Tak to przynajmniej rozumuje.
Go to the top of the page
+Quote Post
Pawel_W
post
Post #6





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


może dlatego, że zanim porównasz te ciągi to już jest generowany nowy? ...
Go to the top of the page
+Quote Post
tehaha
post
Post #7





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


no ale skoro jedna wartość pochodzi z $_POST['kod_potw'];, a druga jest losowana to jak mają być sobie równe?

bo losujesz ciąg znaków zapisujesz go do sesji i rozumiem że z tej zmiennej tworzysz napis na obrazku, no ale po wysłaniu formularza znowu losujesz ciąg i go nadpisujesz

odpal ten kod: i powiedz co wyświetla:
  1. <?
  2. include('sesja_uzytkownika.php');
  3.  
  4. $kod_obrazka = substr(md5(date("d.m.Y.H.i.s").rand(1,1000000)) , 0 , 8);
  5.  
  6. echo $_SESSION['kod_obrazka_str']."#ses_obrazka";
  7. echo $kod_obrazka."#kod_obrazka";
  8. echo $_POST['kod_potw']."#kod_post";
  9.  
  10. $_SESSION['kod_obrazka_str'] = $kod_obrazka;
  11. if(is_numeric($ses_id)){
  12. $id_uzyt = $ses_id;
  13. }else{
  14. $id_uzyt = 0;
  15. }
  16. if($_POST['sub']){
  17. $_SESSION['kod_obrazka_post'] = $_POST['kod_potw'];
  18.  
  19. echo $_SESSION['kod_obrazka_post']. " - ". $_SESSION['kod_obrazka_str'];
  20.  
  21. if($_SESSION['kod_obrazka_post'] == $_SESSION['kod_obrazka_str']){
  22. $adres = $_POST['adres_strony'];
  23. preg_match('@^(?:http://)?([^/]+)@i',$adres, $matches);
  24. $adres_sp = $matches[1];
  25. $time = time();
  26. mysql_query("insert into strony (link, time, id_uzytkownika, status) values ('$adres_sp', '$time', '$id_uzyt', 'Oczekuje')");
  27. }else{
  28. $blad = "Podałeś zły kod";
  29. }
  30. }
  31.  
  32. ?>


Ten post edytował tehaha 12.06.2010, 22:04:30
Go to the top of the page
+Quote Post
Rewil
post
Post #8





Grupa: Zarejestrowani
Postów: 175
Pomógł: 0
Dołączył: 19.09.2009

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


eb2118fc#ses_obrazka
34e14430#kod_obrazka
eb2118fc#kod_post
eb2118fc - 34e14430

Wychodzi na to że sesja się zapisuje, tyle że zanim dojdzie do ifa to zamienia się już na nową. Kombinuje z kolejnością, ale godzina nie ta i mi nie wychodzi ;/
Jednak nie jest tak źle ;]

  1. include('sesja_uzytkownika.php');
  2.  
  3. echo $_SESSION['kod_obrazka_str']."#ses_obrazka";
  4. echo $kod_obrazka."#kod_obrazka";
  5. echo $_POST['kod_potw']."#kod_post";
  6.  
  7. if(is_numeric($ses_id)){
  8. $id_uzyt = $ses_id;
  9. }else{
  10. $id_uzyt = 0;
  11. }
  12. if($_POST['sub']){
  13. $_SESSION['kod_obrazka_post'] = $_POST['kod_potw'];
  14. echo $_SESSION['kod_obrazka_str']. " - ". $_POST['kod_potw'];
  15.  
  16. if($_SESSION['kod_obrazka_str'] == $_POST['kod_potw']){
  17. $adres = $_POST['adres_strony'];
  18. preg_match('@^(?:http://)?([^/]+)@i',$adres, $matches);
  19. $adres_sp = $matches[1];
  20. $time = time();
  21. mysql_query("insert into strony (link, time, id_uzytkownika, status) values ('$adres_sp', '$time', '$id_uzyt', 'Oczekuje')");
  22. }else{
  23. $blad = "Podałeś zły kod";
  24. }
  25. }
  26.  
  27. $kod_obrazka = substr(md5(date("d.m.Y.H.i.s").rand(1,1000000)) , 0 , 8);
  28. $_SESSION['kod_obrazka_str'] = $kod_obrazka;
  29. include('sesja_uzytkownika.php');
  30.  
  31. echo $_SESSION['kod_obrazka_str']."#ses_obrazka";
  32. echo $kod_obrazka."#kod_obrazka";
  33. echo $_POST['kod_potw']."#kod_post";
  34.  
  35. if(is_numeric($ses_id)){
  36. $id_uzyt = $ses_id;
  37. }else{
  38. $id_uzyt = 0;
  39. }
  40. if($_POST['sub']){
  41. $_SESSION['kod_obrazka_post'] = $_POST['kod_potw'];
  42. echo $_SESSION['kod_obrazka_str']. " - ". $_POST['kod_potw'];
  43.  
  44. if($_SESSION['kod_obrazka_str'] == $_POST['kod_potw']){
  45. $adres = $_POST['adres_strony'];
  46. preg_match('@^(?:http://)?([^/]+)@i',$adres, $matches);
  47. $adres_sp = $matches[1];
  48. $time = time();
  49. mysql_query("insert into strony (link, time, id_uzytkownika, status) values ('$adres_sp', '$time', '$id_uzyt', 'Oczekuje')");
  50. }else{
  51. $blad = "Podałeś zły kod";
  52. }
  53. }
  54.  
  55. $kod_obrazka = substr(md5(date("d.m.Y.H.i.s").rand(1,1000000)) , 0 , 8);
  56. $_SESSION['kod_obrazka_str'] = $kod_obrazka;


Ten post edytował Rewil 12.06.2010, 23:25:45
Go to the top of the page
+Quote Post

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: 25.12.2025 - 03:08