Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]IP, Host i Przeglądarka w polu formularza
Forum PHP.pl > Forum > Przedszkole
ReBeLs513
Szukałem skryptu do pokazania hosta, ip i przeglądarki uzytkownika. To wszysttko chciałemumieścić w formularz:

<input type="hidden" name="IP" value="<? echo $_SERVER['REMOTE_ADDR'] ?>">
<input type="hidden" name="Host" value="<? gethostbyaddr($_SERVER['REMOTE_ADDR']) ?>">
<input type="hidden" name="Przeglądarka" value="<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>">

Taki sposób nie działa... Błędny kod??
modern-web
Tak; powinno być w ten sposób:

  1. ... value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" ...
  2. ... value="<?php echo gethostbyaddr($_SERVER['REMOTE_ADDR']); ?>" ...
  3. ... value="<?php echo $_SERVER['HTTP_USER_AGENT']; ?>" ...


Zapomniałeś o kilku średnikach... wink.gif

Tak by the way; poczytaj o możliwości edycji pól hidden i disabled za pomocą kodu JS.
Te pola użytkownik może sobie sam edytować, a tego byś chyba nie chciał...
wNogachSpisz
Kod
<input type="hidden" name="IP" value="<?=$_SERVER['REMOTE_ADDR'] ?>">
<input type="hidden" name="Host" value="<?=gethostbyaddr($_SERVER['REMOTE_ADDR']) ?>">
<input type="hidden" name="Przeglądarka" value="<?=$_SERVER["HTTP_USER_AGENT"] ?>">

krzystyn
Cytat(modern-web @ 12.04.2011, 15:46:31 ) *
Tak; powinno być w ten sposób:

  1. ... value="<?php echo $_SERVER['REMOTE_ADDR']; ?>" ...
  2. ... value="<?php echo gethostbyaddr($_SERVER['REMOTE_ADDR']); ?>" ...
  3. ... value="<?php echo $_SERVER['HTTP_USER_AGENT']; ?>" ...


Zapomniałeś o kilku średnikach... wink.gif

Tak by the way; poczytaj o możliwości edycji pól hidden i disabled za pomocą kodu JS.
Te pola użytkownik może sobie sam edytować, a tego byś chyba nie chciał...

a jak to mozna zabezpieczyc?
modern-web
W zasadzie wszystko co dotyczy js i html użytkownik może dowolnie edytować u siebie w przeglądarce więc potrzebujesz zabezpieczenia po stronie serwera.
Jeśli jest to formularz kontaktowy który wysyła te dane mailem to sugerowałbym zastosowanie tych pól tylko do wyświetlenia owych danych użytkownikowi, a przesyłanie tych 3 wartości (IP, Host i Przegladarka) bezpośrednio z skryptu PHP.

Podsumowując:
Nie odbieraj z formularza do skryptu tych 3 wartości tylko odczytaj je od użytkownika na nowo, bo wszystko co zostanie odebrane z formularza może być fałszywe - nawet dane z pól disabled i hidden.

Przeczytaj jeśli jesteś zainteresowany jak działa omijanie zabezpieczeń hidden i disabled:

http://mynthon.net/howto/-/JavaScript%20-%...%20readonly.txt

Pozdrawiam!
bastard13
Tylko mam jedno pytanie, po co dodajesz do formularza pola z tymi wartościami skoro zawsze będziesz je mógł pobrać w skrypcie obsługującym formularz.
Te wartości każdy kto ma jakiekolwiek pojęcie o firebugu będzie mógł zmienić i wysłać co innego.
modern-web
@up
Ma swoje powody. Też to praktykuję w prostym celu - by uświadomić internaucie, że nie jest anonimowy. Pełni to tylko rolę informacyjną...
bastard13
Zgadzam się, że informacja może się przydać użytkownikowi, ale to są pola typu hidden, więc przypuszczam, że założenie jest takie, żeby użytkownik ich nie zobaczyłsmile.gif
modern-web
(fakt ;D)
Ja mówiłem o readonly i disabled ;p
Ale faktycznie; masz rację... hidden tutaj nie ma zastosowania
ReBeLs513
Przy formularzu jest info o nieanonimowości. A nawet jeśli zmieni dane to nie zmieni statystyk:-) Bo dla mnie ochrona od serwera to czarna magia:D
modern-web
Niewiele osób czyta to co jest nad/pod formularzem.
Lepiej na przykładzie im to zaprezentować - jak zobaczą swoje IP i hosta stwierdzą, że jak zaczną się wygłupiać zablokujesz ich po IP albo zgłosisz na policję i będą mieli przesrane wink.gif (ale to w skrajnych przypadkach gdy wystąpi np. groźba).
Niektórzy będą chcieli zmienić zawartość tych pól dlatego warto przekazywać dane prosto ze skryptu; a nie formularza.
ReBeLs513
Czyli czas otworzyć nowy temat lol:D
modern-web
Jak uważasz wink.gif
Nie zmieniajmy tematu tego tematu ^
ReBeLs513
hmmm...
Jak nie w formularzu to w skrypcie go wysylajacym
  1. <?php
  2. if (count($_POST))
  3. {
  4. ////////// USTAWIENIA //////////
  5. $email = 'mail@host.domena'; // Adres e-mail adresata
  6. $subject = 'Temat'; // Temat listu
  7. $message = 'Wiadomosc wyslana'; // Komunikat
  8. $error = 'Wystąpił błąd, spróbuj ponownie.'; // Komunikat błędu
  9. $charset = 'windows-1250'; // Strona kodowa
  10. //////////////////////////////
  11.  
  12. $head =
  13. "From: $_POST[Email]\r\n" .
  14. "MIME-Version: 1.0\r\n" .
  15. "Content-Type: text/plain; charset=$charset\r\n" .
  16. "Content-Transfer-Encoding: 8bit";
  17. $body = '';
  18.  
  19. foreach ($_POST as $name => $value)
  20. if (!empty($value))
  21. $body .= "$name: " . (get_magic_quotes_gpc() ? stripslashes($value) :
  22.  
  23. $value) . "\r\n";
  24.  
  25. echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head)
  26.  
  27. ? $message : $error;
  28.  
  29. }
  30. else
  31. {
  32. ?>

Tylko gdzie te ip itd. wstawić?Próbowałem w body, pod charset ale to nie to...
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.