Avatar billede boholdt Mester
15. april 2020 - 19:50 Der er 4 kommentarer

Udvidelse af funktioner så der detekteres om IP-adresse er IPv4 eller IPv6 samt om forbindelse er sikker eller ej

Hej her på forum

Forleden dag fik jeg hjælp til nogle scripts i PHP, som detekterede den besøgendes IP-adresse og hostnavn. Dette er jeg rigtig taknemmelig for.

Koden ser efter modificering således ud:
<?php
$remote_id = $_SERVER['REMOTE_ADDR'];
$hostname = gethostbyaddr($remote_id);
echo "<h1>1. Din IP-adresse er:</h1><br> " . $remote_id ."<p>";

echo "<h1>2. Dit hostnavn er:</h1><br> " . $hostname ."<p>";
?>
---
Nu til mine spørgsmål:
1. Kan der kodes, så brugeren får vist om vedkommende benytter en IPv4 eller en IPv6-adresse, og ligeledes med hostnavnet, og hvis ja, hvordan?

Output kan se således ud:
Du benytter en IPv4-adresse
Du benytter et IPv4 hostnavn
Eller
Du benytter en IPv6-adresse
Du benytter et IPv6 hostnavn

Jeg har forsøgt at kigge lidt i PHP-manualen, men bliver ikke rigtigt klogere.

2. Kan der kodes, så der på samme måde som med eksemplerne oven for vises, om forbindelsen til serveren er sikret (via SSL/HTTPS) eller ej?

Output kan se således ud:
Din forbindelse er ikke sikker, og du kommunikerer via HTTP-protokollen på port 80
Din forbindelse er sikker, og du kommunikerer via SSL/HTTPS-protokollen på port 443.

På forhånd tak for svaret, og god dag.

Mvh Anders.
Avatar billede arne_v Ekspert
15. april 2020 - 20:07 #1
IPv4 vs IPv6 adresse er nem at skelne imellem da formatet er forskelligt.

Et navn er ikke nødvendighvis hverken v4 eller v6, så det kan du næppe vise.

$_SERVER['SERVER_PROTOCOL'] indeholder den brugte protokol (inkl. versions nummer!)
Avatar billede boholdt Mester
15. april 2020 - 20:28 #2
Hej igen

1. Så koden $remote_id = $_SERVER['REMOTE_ADDR'] finder selv ud af, om der er tale om en IPv4 eller en IPv6-adresse?

2. Igen, finder koden $_SERVER['SERVER_PROTOCOL') selv ud af, om der kommunikeres via SSL eller ej - blot, så jeg forstår det rigtigt?

Mvh Anders.
Avatar billede arne_v Ekspert
15. april 2020 - 20:49 #3
Serveren finder selv ud af at bruge den rigtige IP version og den rigtige protokol.

$remote_id = $_SERVER['REMOTE_ADDR'] ;

henter IP adressen og gemmer i variablen $remote_id. Den gør ikke noget med det.

Du kan skrive kode som checker hvilket format addressen er i og derfra konkludere om det er v4 eller v6 og gøre hvad du ønsker i de to tilfælde.

$protocol ´$_SERVER['SERVER_PROTOCOL');

henter protokollen og gemmer i variablen $protocol. Den gør ikke nogte med det.

Du kan skrive kode som checker den variabel og g'r hvad du vil alt efter om det er HTTP eller HTTPS.
Avatar billede boholdt Mester
15. april 2020 - 21:04 #4
Kære Arne_V

Helt i orden.

1. Hvordan vil en simpel kode se ud der via variablen $remote_id informere om der er tale om en IPv4 eller en IPv6-adresse?

2. Hvordan vil en simpel kode se ud der via variablen $protocol informerer om forbindelsen benytter HTTPS eller ej?

Jeg er selv teknisk, så kan som eksempel godt kende forskel på IPv4 og IPv6-adresser. Jeg har imidlertid tænkt mig, at mit lille system skal benyttes af personer der ikke har så meget teknisk kendskab. Derfor skal de stadig få vist IP-adressen, men i en parentes få vist om der er tale om IPv4 eller IPv6 og så videre.

På forhånd tak for dit svar.

Mvh Anders.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester