Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Sprawdz IP i wpuść jeśli dobre
Forum PHP.pl > Forum > Przedszkole
Cwirek1987
Mam strone od niedawna zaczołem przerabiać ja i pisać w jezyku php.

Chciałbym teraz na strone www dać nowy skrypt który by sprawdzał IP i dopuszczał badz nie dopuszczał ludzi z danego zakresu IP.

Problem mam z tym ze na moim serverze nie działa ten sposób z wykozytsaniem .htaccess. Chyba ze coś zle robie i otym nie wiem. Server mam na komputerze domowym postawiony na programie WebServ.

Może znacie jakieś inne sposoby lub jakieś gotowe skrypty które by mi mogły pomóc w jakiś sposób.

Z góry dzięki za pomoc!
fiszol
tak:
  1. <?
  2. $dozwolone_ip = array ('127.0.0.1','127.0.0.2'); // po przecinku kolejne
  3.  
  4. if(!in_array($_SERVER['REMOTE_ADDR'],$dozwolone_ip))
  5. die('Brak dostępu');
  6. ?>
Cwirek1987
A moge uzyć w tym skrypcie czegoś takiego np. 192.168.1.* zamiast wypisywać kazdy adres osobno?

Ten skrypt mi nie działa ;/ wyskakuje mi cos takiego

"Parse error: parse error, unexpected T_EXIT
in D:\Servery\WebServ\httpd\strony\strefa\strefa2.txt on line 6"

hmm jak postawiłem na koncu ; to wyskauje mi cały czas brak dostepu mimo ze mój adres ip jest wpisany

  1. <?
  2. $dozwolone_ip = array ([b]'192.168.0.1'[/b],'192.168.1.1','192.168.1.2');
  3.  
  4. (!in_array($_SERVER[REMOTE_ADDR],$dozwolone_ip))[b];[/b]
  5.  
  6. die ('Brak dostępu');
  7. ?>
fiszol
192.168.0.1 to wenętrzny adres sieci w której jestes. wildcard w tym wypadku nie zadziała

wpisz do tablicy adres który wyświetli Ci http://whatsmyip.org
Cwirek1987
no ok ale na zewnetrznym ip też to nie działa.
Glarden
Ostatnio zrobiłem kontrolę ze względu na IP opartą na plikach:
index.php
  1. <?php
  2. $ip = $_SERVER["REMOTE_ADDR"];
  3. $kupa = file('ip.txt');
  4. if (in_array ($ip, $kupa)) {
  5. echo ("Wynocha, Twoje ip nie jest mile widziane!");
  6. echo ("<br>Twoje ip: $ip.");
  7. }
  8. else {
  9. echo ("<h1>Witamy na stronie!</h1>");
  10. }
  11. ?>

To jest sama strona. Teraz strona do dodawania IP do listy zablokowanych, dopisz.php:
  1. <?php
  2. if (isset ($_POST['ip'])) {
  3. $ip = $_POST['ip'];
  4. $plik = fopen('ip.txt', 'r+');
  5. $tit = fseek($plik, 0, SEEK_END);
  6. $zapisz = fwrite($plik, "n".$ip."");
  7. fclose($plik);
  8. echo ("Ip zostalo zablokowane!");
  9. echo ("<hr>");
  10. $kupa = file('ip.txt');
  11. print_r($kupa);
  12. }
  13. ?>

I jeszcze do usuwania IP z zablokowanych (trochę amatorsko zrobione, ale nie chciało mi się myśleć):
  1. Odblokuj ip<br>
  2. <form action='odblokuj.php' method='post'>
  3. <select name="odblokuj" size=1>
  4. <?php
  5. $tab = file('ip.txt');
  6. $ile = count($tab);
  7. $n = 0;
  8. while ($n<$ile) {
  9. echo ("<option>".$tab[$n]."</option>");
  10. $n++;
  11. }
  12. ?>
  13. </select>
  14. <input type='submit' value='oblokuj'/>
  15. </form>
  16. <hr>
  17. <?php
  18. if (isset ($_POST['odblokuj'])) {
  19. $ip = $_POST['odblokuj'];
  20. $nazwa = 'ip.txt';
  21. $plik=fopen('ip.txt','r+');
  22. $dane=fread($plik,filesize($nazwa));
  23. $nowy = str_replace ("n".$ip, "", $dane);
  24. $nowy1 = str_replace ($ip."n", "", $nowy);
  25. fclose ($plik);
  26. $plik2 = fopen('ip.txt', 'w');
  27. $zapis = fwrite($plik2, $nowy1);
  28. fclose($plik2);
  29. echo ("Zmiany zapisane.");
  30. }
  31. ?>


Oczywiście musisz mieć jeszcze plik ip.txt w tym samym folderze.
Aha, przed wszystkimi "n" musisz wstawić "\", bo - jak widzę - ucięło i pokazać nie chce.
Cwirek1987
Jak dla mnie te index.php działa (tylko w tedy gdy w ip.txt jest podany jeden adres ip jak jest wicej to to nie działa). Odblokuj i zablokuj to jest jakieś dziwne raz że nie działa a dwa skad przy blokowaniu on ma wziąśc adres ip przeciesz nigdze niema zeby wprowadzić adres ip!?
Glarden
Formularza nie wkleiłem, bo myślałem, że każdy jest w stanie sam sobie napisać.
Odblokowanie może Ci nie działać, jeśli nie dodałeś ukośników przed "n". Przecież pisałem, że musisz to zrobić.
Na inne "błędy" nie wiem, jak odpowiedzieć - u mnie wszystko działa bez zarzutu...
Cwirek1987
no ok to umie ale nie zmienia faktu ze to nie działa mi jak chce wpisać wicej adresów ip niz 1. doałem przed "n" te "\" pozatym mniejsza o to czy to odblokuj działa czy nie ja chce zeby wicej adresów ip tam było i zeby to działało tongue.gifsmile.gif
szmerak
Napisałem na szybko skrypcik to powinno rozwiązać twoje problemy! W pliku ip.txt zapisujesz jeden pod drugim ip które chcesz aby wchodziły!
  1. <?
  2. $ip = $_SERVER['REMOTE_ADDR'];
  3. $open = file("ip.txt");
  4. foreach($open as $open){
  5. $asd=trim($open);
  6. }
  7. if($asd == $ip){
  8. echo "Możesz wejść";
  9. } else {
  10. echo "Nie możesz";
  11. }
  12.  
  13. ?>
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.