Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Formularz + adres IP
Forum PHP.pl > Forum > Przedszkole
marcin0077
Witam

Czy można do zwykłego formularza zrobić aby dodawało adresy IP?

  1. <?php
  2. /*********************************************
  3. * plik formularz.php
  4. *********************************************/
  5.  
  6. $pole1 = trim($_POST['pole1']);
  7. $pole2 = trim($_POST['pole2']);
  8. $pole3 = trim($_POST['pole3']);
  9. $pole4 = trim($_POST['pole4']);
  10. $pole5 = trim($_POST['pole5']);
  11.  
  12. if(empty($pole1) and empty($pole2)) {
  13.  
  14. // prosty formularz
  15. [...Tekst formularza...]
  16. </form>';
  17. }
  18. else {
  19.  
  20. // dane pochodz?ce z formularza
  21. $dane = " 1:".$pole1." 2:".$pole2." 3:".$pole3." 4:".$pole4." 5:".$pole5."<br>";
  22. // przypisanie zmniennej $file nazwy pliku
  23. $file = "baza.txt";
  24. // uchwyt pliku, otwarcie do dopisania
  25. $fp = fopen($file, "a");
  26. // blokada pliku do zapisu
  27. flock($fp, 2);
  28. // zapisanie danych do pliku
  29. fwrite($fp, $dane);
  30. // odblokowanie pliku
  31. flock($fp, 3);
  32. // zamknięcie pliku
  33. fclose($fp);
  34.  
  35. echo "thx<br />";
  36. }
  37.  
  38. ?>


Z góry dziękuje za pomoc
MateuszS
  1. $ip = $_SERVER["REMOTE_ADDR"];
marcin0077
super, dzięki za ekspresową odpowiedź smile.gif

Jak do tego dodać blokowanie powtórnego głosowania po IP i cookie?
Wicepsik
Po wysłaniu formularza dodaj do drugiego pliku tekstowego adresy ip które już głosowały. A potem odczytuj ten plik i sprawdzaj czy osoba o podanym IP już głosowała.
marcin0077
ok zapisuje mi adresy w ip.txt, ale teraz jak odczytywać i sprawdzać te IP?
d3f3nd3r
można na kilka sposobów, np. tak:
http://www.php.net/manual/pl/function.fread.php
http://pl.php.net/strpos
Quantum
ja bym to rozwiązał w ten sposób:

  1. // aktualny adres ip odwiedzającego
  2. $current_ip = $_SERVER['REMOTE_ADDR'];
  3.  
  4. // nazwa pliku przechowującego adresy
  5. $ip_filename = 'ip.txt';
  6.  
  7. // odczyt pliku i rozbicie na tablicę po znaku nowej linii
  8. $ip_addresses = file($ip_filename);
  9.  
  10. // dopisanie nowego adresu jeżeli nie istnieje jeszcze na liście
  11. if (!in_array($current_ip, $ip_addresses))
  12. file_put_contents($ip_filename, PHP_EOL.$current_ip, FILE_APPEND);
marcin0077
ok, dopisuje adresy ale jak teraz blokować głosowanie osobą które już oddały swój głos bo nie mogę do tego dojść ;/
Quantum
  1.  
  2. if (!in_array($current_ip, $ip_addresses))
  3. {
  4. // zapisywanie głosu
  5.  
  6. file_put_contents($ip_filename, PHP_EOL.$current_ip, FILE_APPEND);
  7.  
  8. echo 'głos oddany pomyślnie!';
  9. }
  10. else
  11. {
  12. echo 'już głosowałeś!';
  13. }
  14.  


wystarczy chwilę pomyśleć..
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.