Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Kod obrazkowy - antyspamowy
Forum PHP.pl > Forum > Przedszkole
Rewil
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. ;/
Wicepsik
session_start
Rewil
Cytat(Wicepsik @ 11.06.2010, 18:46:22 ) *

sesja_uzytkownika.php chyba po coś raczej jest...
Jednym słowem pudło.
tehaha
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;
Rewil
  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.
Pawel_W
może dlatego, że zanim porównasz te ciągi to już jest generowany nowy? ...
tehaha
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. ?>
Rewil
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;
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.