- PHP


Sprawdzanie informacji na temat komputera, IP i poczty


PHP oferuje zbiór funkcji, które mogą być stosowane do sprawdzania informacji na temat nazwy komputera, adresów IP i wymiany poczty.

Zobaczmy to w praktyce. Oto skrypt weryfikujący URL i adres poczty elektronicznej:

<?php
 
  // Wyodrębnienie z pól
 
  $url = $_REQUEST['url'];
  $email = $_REQUEST['email'];
 
  // Sprawdzenie URL-a
 
  $url=parse_url($url);
  $komp=$url['host'];
  if(!($ip=gethostbyname($komp)))
  {
    echo 'Komputer macierzysty URL-a nie posiada prawidłowego adresu IP';
    exit;
  }
 
  echo "Komputer macierzysty znajduje się pod adresem IP $ip <br>";
 
  // Sprawdzenie adresu poczty elektronicznej
 
  $email=explode('@', $email);
  $kompemail=$email[1];
 
  // należy pamiętać, że funkcja dns_get_mx() *nie jest zaimplementowana*
  // w PHP w wersji dla Windows
  if(!dns_get_mx($kompemail, $kompmx))
  {
    echo 'Adres pocztowy nie posiada prawidłowego komputera macierzystego';
    exit;
  }
 
  echo 'Poczta elektroniczna dostarczana jest przez: ';
  foreach($kompmx as $mx)
    echo '$mx ';
 
  // Jeżeli skrypt dotarł do tego miejsca to wszystko jest w porządku
 
  echo '<br>Wszystkie przekazane szczegóły są prawidłowe.<br>';
?>


Skrypt wykonujący działania sprawdzające korzysta z dwóch funkcji PHP - gethostbyname() i dns_get_mx(). Na początku zostaje pobrany URL, po czym wykonana zostaje na nim funkcja parse_url(). Funkcja ta zawiera tablicę asocjacyjną zawierającą poszczególne części URL'a. Dostępne dane to: scheme (schemat), user (użytkownik), pass (hasło), host (komputer), port (port), path (ścieżka), query (zapytanie) i fragment. Poniżej przedstawiam przykład wyniku funkcji.

Przy danym URL'u

http://tomek.fgs76@codebase.pl:80/submit.php?type=a#kotwica

wartości każdej z części tablicy będą następujące:

   scheme:http
   user:tomek
   pass:fgs76
   host:codebase.pl
   port:80
   path:submit.php
   query:type=a
   fragment:kotwica

W naszym skrypcie potrzebna jest jedynie informacja host, która zostaje uzyskana w następujący sposób:

  $url=parse_url($url);
  $komp=$url['host'];

Teraz próbujemy uzyskać adres IP komputera który znajduje się w DNS'ie

$ip=gethostbyname($komp);

Funkcja gethostbyname() zwraca adres IP, jeśli występuje lub false w przeciwnym wypadku. Można również wykonać odwrotne działanie poprzez zastosowanie funkcji gethostbyaddr(), która pobiera jako parametr IP a zwraca nazwę komputera. Wyniki zwracane przez te funkcje mogą się różnić jeśli jeden komputer posiada więcej niż jedną nazwę domenową.

Jeżeli URL jest prawidłowy, można sprawdzić adres poczty elektronicznej. Na początku należy go rozbić na nazwę użytkownika i komputera przez wywołanie funkcji explode().

  $email=explode('@', $email);
  $kompemail=$email[1];

Teraz możemy sprawdzić, czy wiadomości będą docierać na miejsce. Zastosujemy do tego celu funkcję dns_get_mx()

dns_get_mx($kompemail, $kompmx);

Funkcja ta dla danego adresu zapisuje zbiór rekordów MX (Mail Exchange) do tablicy $kompmx. Rekord ten przechowuje nazwę komputera, do którego trafi poczta. Jako że komputerów może być więcej niż jeden wykorzystywana jest tablica.

Uwaga! Funkcja dns_get_mx() nie działa w systemie Windows. Jeżeli używany jest ten system należy użyć pakietu PEAR::Net_DNS.

Oprócz funkcji przedstawionych powyżej, można skorzystać z bardziej ogólnej funkcji checkdnsrr(), która pobiera nazwę komputera i zwraca true, jeżeli w DNS'ie istnieje jakikolwiek rekord na jego temat.




InformacjeRaportuj | Drukuj

Data dodania: 25-10-2017 14:56Autor:admin
Ilość wyświetleń:1480Komentarzy: 0
Komentarze
Brak komentarzy.
Dodaj komentarz
Zaloguj się, żeby móc dodawać komentarze.