Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapis adresu IP w bazie danych, Z użyciem PDO
SmokAnalog
post
Post #1





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Witajcie,

mam kilka pytań/wątpliwości odnośnie zapisu adresu IP w bazie danych. Wypunktuję, żeby był porządek (IMG:style_emoticons/default/smile.gif)
  1. Jakie są najlepsze praktyki jeśli chodzi o zapisywanie adresu IP w bazie danych z użyciem biblioteki PDO? Chciałbym otworzyć się na ipv6, więc powinienem użyć funkcji inet_pton - zgadza się?

    Wymyśliłem coś takiego:
    1. $sql->bindValue(':ip', inet_pton($_SERVER['REMOTE_ADDR']), PDO::PARAM_LOB);
  2. Czy PARAM_LOB to dobry wybór?
  3. Jestem też ciekaw jaki typ pola w bazie powinienem wybrać: VARBINARY(16), a może coś innego?

Liczę na gorącą dyskusję (IMG:style_emoticons/default/smile.gif)

Ten post edytował SmokAnalog 17.09.2013, 12:19:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Co prawda nie wspomniano nic o konkretnym silniku bazy danych, ale w MySQL sprawa jest o tyle nieciekawa, że bazie tej brakuje dobrego wsparcia dla przechowywania adresów IP i niestety trzeba się ratować ogólnym typem binarnym, np. VARBINARY(16). Jednak, gdy w przyszłości w końcu poprawią ten aspekt, nie będzie żadnego problemu z migracją. W innych baza danych, w miarę możliwości korzystaj z dedykowanego typu dla adresów, np. w przypadku Postgresa będzie to typ inet

1. Wszystkie adresy IPv4 konwertuj do IPv6. Łatwiej jest pracować nad pojedynczym modelem danych. Ewentualnie tuż przed wyświetleniem gdzieś tego adresu możesz sprawdzić czy jest to v4 i zaprezentować go w takiej właśnie formie.
2. Po stronie PHP przydatne będzie inet_pton oraz inet_ntop.

@Damonsson: Jeżeli interesuje Cię jedynie zapisanie i odczytanie adresu, to zapisywanie jako tekst jeszcze przejdzie, ale jeżeli chcesz z tymi danymi zrobić cokolwiek innego będzie to stwarzało sporo problemów.
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #3





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat(Crozin @ 17.09.2013, 14:00:12 ) *
1. Wszystkie adresy IPv4 konwertuj do IPv6. Łatwiej jest pracować nad pojedynczym modelem danych. Ewentualnie tuż przed wyświetleniem gdzieś tego adresu możesz sprawdzić czy jest to v4 i zaprezentować go w takiej właśnie formie.

Rozumiem, że inet_pton sam się tym zajmie, prawda?

Proszę jeszcze o odpowiedź w sprawie PDO::PARAM_LOB, bo nie ukrywam, że to mnie najbardziej intryguje.

Ten post edytował SmokAnalog 17.09.2013, 13:06:08
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 01:48