Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] Kod jednorazowej weryfikacji
Forum PHP.pl > Forum > Przedszkole
andy84
Sluchajcie nurtuje mnie takie pytanie - jak moge zrobic kod jednorazowej weryfikacji czyli mam jakas grupe powiedzmy liczb/liter/ - wszystko w bazie kazdy kod jest uniq - i jak moge teraz zrobic ze klient na stronie wpisze kod , kod zostaje wykasowany z bazy (ewentualnie jakis przelacznik ustawil bym ze kod sie dezaktywuje )np. a goscia wita wiadomosc ze jego kod zostal zatwierdzony i prosze o dalsza rejestracje - chodzi szczegolnie o to zeby moc dawac ludziom dostep ale tylko jednorazowy do danego miejsca ( wychodzi cos w rodzaju jendo razowego hasla dostepu ) - moze ktos mi sugestie podsunac jak zrobic takie jednorazowe haslo?
batman
Możesz to rozwiązać w następujący sposób. Generujesz kod na podstawie daty date('YmdHis') oraz jakiegoś klucza, którego wartość ustalasz Ty. Może to być jakiś długi ciąg złożony z "losowych" znaków, np. adRTFda43sdAQ@#ERa. Następnie traktujesz datę i ten ciąg md5: md5($data.$ciag); i otrzymujesz unikatowe hasło. Wada takiego rozwiązania - 32 znaki do wprowadzenia.

Jesli jesteś maniakiem bezpieczeństwa, możesz zamiast daty, użyć temperatury procka, ilości zajętej pamięci, itp. winksmiley.jpg Lub w wersji dla mniejszych maniaków - microsekundy wygenerowania kodu.

Pamiętaj tylko, że dodawany przez Ciebie kod nie powinien być wyrazem w stylu "haslo" winksmiley.jpg
andy84
Cytat(batman @ 23.06.2007, 17:33:26 ) *
Możesz to rozwiązać w następujący sposób. Generujesz kod na podstawie daty date('YmdHis') oraz jakiegoś klucza, którego wartość ustalasz Ty. Może to być jakiś długi ciąg złożony z "losowych" znaków, np. adRTFda43sdAQ@#ERa. Następnie traktujesz datę i ten ciąg md5: md5($data.$ciag); i otrzymujesz unikatowe hasło. Wada takiego rozwiązania - 32 znaki do wprowadzenia.

Jesli jesteś maniakiem bezpieczeństwa, możesz zamiast daty, użyć temperatury procka, ilości zajętej pamięci, itp. winksmiley.jpg Lub w wersji dla mniejszych maniaków - microsekundy wygenerowania kodu.

Pamiętaj tylko, że dodawany przez Ciebie kod nie powinien być wyrazem w stylu "haslo" winksmiley.jpg

@batman wiem jak moge wygenerowac taki unikatowy kod jak jednak napisalem chodzi o to zeby kod mogl byc uzyty jeden jedyny raz nie wazne czy to md5 czy np '22222' chodzi o to ze po jego wpisaniu na stronie , uzytkownik zostaje przeniesiony do strony z informacja , jednak jak zamnie strone i bedzie chcial jeszce raz sie zalogowac to ten numer juz go nie wpusci , nr beda unikatami ale jak zrobic ze po jednym uzyciu kodu nikt wiecej nawet osoba ktora dostala ten kod nie bedzie mogla go uzyc - kod ma byc uzywany jeden jedyny raz i niszczony ;/o to chodzilo mi
batman
W takim razie wygenerowane w ten sposób kody zapisujesz do bazy danych i ustawiasz im flagę (np. bused) na false. Użycie kodu powoduje ustawienie flagi na true i po kłopocie. Takie mechanizm mam zaimplementowany u siebie i działa bez zarzutu.
KCG
No to po zalogowaniu wykasuj go z bazy :] winksmiley.jpg
andy84
Cytat(batman @ 23.06.2007, 18:42:41 ) *
W takim razie wygenerowane w ten sposób kody zapisujesz do bazy danych i ustawiasz im flagę (np. bused) na false. Użycie kodu powoduje ustawienie flagi na true i po kłopocie. Takie mechanizm mam zaimplementowany u siebie i działa bez zarzutu.

@batman to brzmi ciekawie z tymi flagami nie bawilem sie nimi jeszce ale zaraz lece poszukac po googlu tego troche , o to wlasnie mi chodzi co piszesz wiec jak cos to bede pisal jak postep wyglada ewentualnie jka bym mial problemy dzieki pozdro smile.gif
batman
Pisząc "flaga" mam na myśli pole w bazie, w którym zapisana jest wartośc true - false lub 1 - 0. Podczas spradzania kodu pod kątem poprawności, aktualności, odsiewasz te wiersze, które mają w tym polu wartość false lub 0.
andy84
Cytat(batman @ 23.06.2007, 19:06:00 ) *
Pisząc "flaga" mam na myśli pole w bazie, w którym zapisana jest wartośc true - false lub 1 - 0. Podczas spradzania kodu pod kątem poprawności, aktualności, odsiewasz te wiersze, które mają w tym polu wartość false lub 0.

Aha ok biggrin.gif bo flagi tez sa w mysql tylko maja troche inne uzycie z tego co wiem i myslalem ze jest ich jakas inna opcja ;d
dobry pomysl z tym co napisales zaraz tak zrobie pozdrowka smile.gif

Powracam do kodu jednorazowej weryfikacji tym raziem juz z jakims kodem ;/

Naplatane jest i sie gubie po wszystkich stronach, ponizszy kod powinien dodac uzytkownika ktory poda dane z kodem i przy jego danych powinien pokazac sie kod, jezeli kod zostal zweryfikowany to zostaje zaznaczony jako 1 i nie moze zostac uzyty po raz kolejny, jezeli nie istnieje albo nie zostal wpisany pownien nic nie podawac albo napisac ze cos jest nie tak
  1. <?php 
  2.  
  3. if(isset($_POST['upload']))
  4. {
  5. $firstname = $_POST['firstname'];
  6. $surname = $_POST['surname'];
  7. $compname = $_POST['compname'];
  8. $address1 = $_POST['address'];
  9. $postcode = $_POST['postcode'];
  10. $towncity = $_POST['towncity'];
  11. $email = $_POST['email'];
  12. $tel = $_POST['tel'];
  13. $day=$_POST['day'];
  14. $mth=$_POST['mth'];
  15. $year=$_POST['year'];
  16. $vouchernoform = $_POST['voucherno'];
  17.  
  18. //list vouchare
  19. $sql = "SELECT * FROM vouchers";
  20. $result=mysql_query($sql);
  21. $num=mysql_num_rows($result);
  22. $i=0;
  23. while($i < $num){
  24. $id=mysql_result($result,$i,"id");
  25. $vouchernumber=mysql_result($result,$i,"voucherno");
  26. $voucherid=mysql_result($result,$i,"voucherid");
  27.  
  28. if($voucherid==0)
  29. {
  30. $vouchernoform = $_POST['voucherno'];
  31. }
  32.  
  33. $i++;
  34. }
  35.  
  36.  
  37.  
  38. if($voucherid==1)
  39. {
  40. echo "sorry this number is invilid";
  41. $vouchernoform ='999999';
  42. }
  43.  
  44.  
  45. //end//
  46.  
  47.  
  48. $query = "INSERT INTO voucherusers VALUES ('0','".$firstname."','".$surname."','".$compname."','".$address1."','".$postcode."','".$towncity."','".$email."','".$tel."','".$vouchernoform."','".$day."','".$mth."','".$year."')";
  49. mysql_query($query) or die (mysql_error());
  50. echo ("Your data has been submited");
  51. }
  52.  
  53. //if voucher correct voucher is disable 
  54.  
  55. $sqla = "SELECT * FROM vouchers";
  56. $resulta=mysql_query($sqla);
  57. $numa=mysql_num_rows($resulta);
  58. $i=0;
  59. while($i < $numa){
  60. $id=mysql_result($resulta,$i,"id");
  61. $vouchernumber=mysql_result($resulta,$i,"voucherno");
  62. $voucherid=mysql_result($resulta,$i,"voucherid");
  63. if($voucherno==$vouchernoform)
  64. {
  65. $query1a = "UPDATE vouchers SET voucherid='1' WHERE id='$id'";
  66. mysql_query($query1a) or die (mysql_error());
  67. }
  68. $i++;
  69. }
  70.  
  71. ?>


Przy roznych przestawieniach on dziala albo dla zapisu uzytkownika z kodem do bazy albo z weryfikacja kodu i zaznaczeniem go jako 1 moze ktos zucic okiem wiem ze to wyglada koszmarnie, moze ktos by mi pomogl to wyprostowac i do radzil jak to ustawic ;/

widac czesto mozna sie uczyc na wlasnych bledach i pomylkach oto i moje ktore dzialaja smile.gif
  1. <?php 
  2.  
  3. if(isset($_POST['upload']))
  4. {
  5. $firstname = $_POST['firstname'];
  6. $surname = $_POST['surname'];
  7. $compname = $_POST['compname'];
  8. $address1 = $_POST['address'];
  9. $postcode = $_POST['postcode'];
  10. $towncity = $_POST['towncity'];
  11. $email = $_POST['email'];
  12. $tel = $_POST['tel'];
  13. $day=$_POST['day'];
  14. $mth=$_POST['mth'];
  15. $year=$_POST['year'];
  16. $vouchernoform = $_POST['voucherno'];
  17.  
  18. $query = "INSERT INTO voucherusers VALUES ('0','".$firstname."','".$surname."','".$compname."','".$address1."','".$postcode."','".$towncity."','".$email."','".$tel."','".$vouchernoform."','".$day."','".$mth."','".$year."')";
  19. mysql_query($query) or die (mysql_error());
  20. echo ("Your data has been submited");
  21.  
  22.  
  23. //if voucher correct voucher is disable 
  24.  
  25. //list vouchare
  26. $sql = "SELECT * FROM vouchers";
  27. $result=mysql_query($sql);
  28. $num=mysql_num_rows($result);
  29. $i=0;
  30. while($i < $num){
  31. $id=mysql_result($result,$i,"id");
  32. $vouchernumber=mysql_result($result,$i,"voucherno");
  33. $voucherid=mysql_result($result,$i,"voucherid");
  34.  
  35. if($vouchernumber==$vouchernoform)
  36. {
  37. $query1a = "UPDATE vouchers SET voucherid='1' WHERE id='$id'";
  38. mysql_query($query1a) or die (mysql_error());
  39. }
  40. $i++;
  41. }
  42. }
  43. ?>


Jeszce tylko sprawdzanie jezeli jeszcze raz zostanie wpisany ten sam kod i skonczony projekt smile.gif - z tym juz sobie dam rade 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.