Perykles Napisano Marzec 3, 2010 Zgłoś Share Napisano Marzec 3, 2010 Czemu tu nikt nie tworzy tematów? Mam więc takie małe pytanko, proszę o szybką odpowiedź (wogóle o odpowiedź proszę ;P) - jak zrobić, żeby po trzech nieudanych próbach uzytkownika, następowała blokada IP? Z blokadą może sobie jakoś poradze, chodzi mi o to, żeby następowała po 3 nieudanych próbach. Wykombinowałem coś takiego: if($ile1==1) { $_SESSION['zalogowany'] = $id; echo ("<b>Zostałeś zalogowany jako '".$_POST['login']."'. Jeśli przekierowanie nie nastąpi w ciągu 5 sekund, kliknij <a href=\"index.php\">tutaj</a>."); } elseif ($ile1!==1) { for($i=0; $i<3; $i++) { echo $i; echo("Nieprawidłowe dane"); continue; if($i == 3) { $_POST['ip'] = 1; $_POST['data'] = time() + (10 * 60); $query = "INSERT INTO bans VALUES('".$_POST['login']."', '".$_POST['ip']."', '".$_POST['data']."')"; $wynik = mysqli_query($conn, $query); echo ('aaa'); exit(); } } } Tylko że w tym kodzie jak jest nieudana próba logowania to pisze: Nieprawidłowe dane.Nieprawidłowe dane.Nieprawidłowe dane. A co zrobić, żeby było po kolei? Z góry dzięki za odpowiedź i pozdawiam Link do komentarza Udostępnij na innych stronach More sharing options...
Wosiedem Napisano Marzec 3, 2010 Zgłoś Share Napisano Marzec 3, 2010 Musisz utworzyć sobie jakąś tabelę w której będziesz przechowywał adresy IP, ilość nieudanych prób i czas ostatniej próby. 1. wyszukaj w tabeli adres IP jeśli ilość prób == 3 i czas ostatniej próby mniejszy niż 15 min wstecz to wyświetl błąd i zakończ. w przeciwnym wypadku dalej: 2. użytkownik podaje dane do logowania. jeśli są dobre to zaloguj w przeciwnym przypadku: 3. sprawdź czy istnieje w danej tabeli dane IP jeśli tak zwiększ licznik i uaktualnij czas ostatniej próby jeśli nie istnieje to utwórz odpowiedni wpis teraz jeszcze powinieneś przemyśleć jak zrobić czyszczenie tej tabeli. Możesz np. raz w tygodniu wykonywać polecenie usuwania adresów IP jeśli są starsze niż 15 min. Możesz wykonywać to po każdym logowaniu się któregoś z użytkowników (tylko że wtedy może wszystko zwolnić, a w sumie nie potrzebujesz czyścić tej tabeli akurat w czasie pracy użytkowników - możesz to robić w nocy ) Pozdrawiam, vo7 (; Link do komentarza Udostępnij na innych stronach More sharing options...
Perykles Napisano Marzec 4, 2010 Autor Zgłoś Share Napisano Marzec 4, 2010 Wymodziłem coś takiego: <?php session_start(); $salt = sha1(...); $conn = mysqli_connect(...); $query1 = "SELECT * FROM Users WHERE Login='".mysqli_real_escape_string($conn, sha1($_POST['login'].$salt))."' and Haslo='".mysqli_real_escape_string($conn, sha1($_POST['haslo'].$salt))."'"; $wynik1 = mysqli_query($conn, $query1); $ile1 = mysqli_num_rows($wynik1); $query2 = "SELECT ID FROM Users WHERE Login='".mysqli_real_escape_string($conn, sha1($_POST['login'].$salt))."'"; $wynik2 = mysqli_query($conn, $query2); $ile2 = mysqli_fetch_row($wynik2); $_POST['id'] = $row[0]; $_POST['ip'] = $_SERVER['REMOTE_ADDR']; $query3 = "SELECT * FROM bans WHERE ip='".$_POST['ip']."'"; $wynik3 = mysqli_query($conn, $query3); $ile3 = mysqli_fetch_array($wynik3); $proby = $row[1]; $data = $row[2]; if($proby == 3 && $data > 10) { echo ('Przekroczyłeś ilość dozwolonych błędów w logowaniu. Spróbuj ponownie za 10 minut.'); exit(); } if($ile1 == 1) { $_SESSION['zalogowany'] = $_POST['id']; echo ("<b>Zostałeś zalogowany jako '".$_POST['login']."'.Jeśli przekierowanie nie nastąpi w ciągu 5 sekund, kliknij<a href=\"index.php\">tutaj</a>."); } elseif ($ile1!==1) { echo ('Nieprawidłowe dane.'); $query4 = "INSERT INTO bans VALUES('".$_POST['ip']."', '".$_POST['proby']."', '".$_POST['data']."')"; $wynik4 = mysqli_query($conn, $query4); $query5 = "SELECT * FROM bans WHERE ip='".$_POST['ip']."'"; $wynik5 = mysqli_query($conn, $query5); $ile5 = mysqli_num_rows($wynik5); if($ile5 == 1) { $_POST['proby'] = $_POST['proby'] +1; $_POST['data'] = 10; $query6 = "UPDATE bans SET proby='".$_POST['proby']."', czas='".$_POST['data']."' WHERE ip='".$_POST['ip']."')"; $wynik6 = mysqli_query($conn, $query6); exit(); } } ?> Zapisuje do bazy wszystko, tylko że w ostatniej części kodu, zmienna $ile5 jest równa 0, dlaczego? Link do komentarza Udostępnij na innych stronach More sharing options...
mischellephp Napisano Kwiecień 26, 2010 Zgłoś Share Napisano Kwiecień 26, 2010 Witam, Jestem tu nowa więc na początku chciałam się przywitać: Cześć wszystkim Swojego czasu stworzyłam stronkę w html a teraz chciałabym umieścić na niej ankietę w php.Przyznam się, że jestem trochę zielona z PHP... Chciałabym aby formularz ankiety składał się z 10 pytań (pisząc ankieta mam na myśli formularz do którego wprowadzamy informacje i są one zapisywane do bazy- jak to zrobić help bo nie wiem...;/ ), z wykorzystaniem np. wyrażeń regularnych.na stronie powinien znajdować się także skrypt wyświetlający dane wypełnionych ankiet. Jeśli jest to możliwe i ktoś kto mógłby mi odpowiedziec i podac jakas lekture zwiazna z tematem. Z góry dzięki... Link do komentarza Udostępnij na innych stronach More sharing options...
Jason Napisano Kwiecień 27, 2010 Zgłoś Share Napisano Kwiecień 27, 2010 www.google.pl - najlepsza lektura pod słońcem. Jest wyposażona w wyszukiwarkę, więc jak dobrze wpiszesz szukaną treść, to nie będziesz musiała nawet czytać całości!!! Tylko wybraną część. Ciekaw tylko jestem, jak na to forum trafiłaś... Link do komentarza Udostępnij na innych stronach More sharing options...
5corpio Napisano Kwiecień 27, 2010 Zgłoś Share Napisano Kwiecień 27, 2010 Zamiast pisać od początku sondę w php poszukałbym na Twoim miejscu jakiegoś gotowego skryptu, który mniej więcej mi pasuje a potem go ew. dopasował wyglądem do swoich upodobań ew. designu strony. Nie ma sensu wynajdować koła od początku i pisać takie coś jak można znaleźć sporo takich rzeczy w necie. Ew. jeśli chcesz pokusić się i pomęczyć rzeczywiście chwile i sama skodzić to jakieś proste początki pisania sondy są tu: http://www.antylameriada.net/wsonda/ Albo skorzystaj ze strony: http://www.sonda.pl/ nie trzeba nic robić tylko założyć tam konto przeklepać kod na swoją stronę i cieszyć się z sondy (jedynie problem jest, że wyświetlana jest tam gdzieś reklama) ale to zależy czego oczekujesz. Ot taka mini-strona moja po godzinach http://www.wnetrzekuchni.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Jason Napisano Kwiecień 28, 2010 Zgłoś Share Napisano Kwiecień 28, 2010 Jak ta sonda ma być na zaliczenie, to podejrzewam, że musi ją napisać ręcznie, a na studiach wynajdywanie koła od nowa jest popularne... Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.