Ik heb wat code gemaakt om mbv chkdnsrr te testen of een URL legaal is.

Echter een domeinnaam heeft soms ook directories, maar chkdnsrr geeft deze bij mij aan als FALSE.

code:



  <?php
        if ($_SERVER['REQUEST_METHOD'] == 'GET') 	{ 
if (isset($_GET['webadres'])){ 
    var_dump($_GET['webadres']);

echo $_GET['webadres'];

echo "<br><br>";
$recordexists2 = checkdnsrr($_GET['webadres'], "A");
if ($recordexists2) {
    echo $_GET['webadres'] . "<br><br>is een bestaand webadres <br>";}
    else
    {echo $_GET['webadres'] . "<br><br>typ ajb een geldig webadres in ... <br>";
    }

}
        }


    ?>



Dus www.phphulp.nl wordt zo als true weergegeven.

Echter www.phphulp.nl/forum/newtopic/3/ niet.

Welke oplossingen kennen jullie om de laatste toch als TRUE te laten doorgaan?
Johan West op 23/10/2015 12:37:43

Echter een domeinnaam heeft soms ook subdomeinen, maar chkdnsrr geeft deze bij mij aan als FALSE.

Een bestaand subdomain zal gewoon true geven

Johan West op 23/10/2015 12:37:43

Echter www.phphulp.nl/forum/newtopic/3/ niet.

Dit is dus geen subdomain, maar een verwijzing naar een directory.
Met chkdnsrr() controleer je of iets in de DNS voorkomt. Maar doordat er veel wildcards gebruikt worden voor subdomeinen, zal het best zo zijn dat veel subdomeinen dus (voor onszelf) onterecht als false worden gemarkeerd.

Dit is wat ik verwacht, zonder de functie (nog) te hebben uitgeprobeerd.
Sorry SanThe moest directories wezen ipv subdomein.

Maar subdomeinen die niet bestaan worden (helaas) ook niet gepakt en dus is een gek subdomein als jkjkjkjkiiiipopk.wordpress.com TRUE.

Voor beiden zoek ik een oplossing, waar moet ik het zoeken? Kan je directories vinden mbv regex?
Kan je niet aan de hand van headers controleren of een URL bestaat?


<?php
if (isset($_GET['website'])) {
	$array = get_headers($_GET['website']);
	$string = $array[0];
	if(strpos($string,"200")) {
    		echo 'Deze URL bestaat!';
	} else {
    		echo 'Deze URL bestaat niet.';
	}
} else {
	echo "Geen input in de URL, try again.";
}
?>
Je kunt het in twee stukken knippen:

1. Controleer eerst met filter_var() en het validatiefilter FILTER_VALIDATE_URL of de string de geldige syntaxis van een URL heeft.

2. Zo ja, open dan met get_headers() of cURL een verbinding naar die URL.

Het openen van een verbinding is prijzig (in termen van tijd en resources), dus daaraan wil je pas beginnen als de input in elk geval lijkt op een URL.
Johan West op 23/10/2015 13:16:11

Maar subdomeinen die niet bestaan worden (helaas) ook niet gepakt en dus is een gek subdomein als jkjkjkjkiiiipopk.wordpress.com TRUE.


Dan zal er een wildcard in de dns staan.
@Arien je methode werkt, erg bedankt voor je hulp.



Toevoeging op 23/10/2015 16:15:37:



Als ik Ariens code gebruik mag ik geen domein testen zonder http:// , het gekke subdomein wordt herkend als niet bestaand.
Als https-websites niet zouden werken, vrees ik dat er SSL-ondersteuning mist aan je PHP-installatie. Je kan proberen of je een fallback kan doen naar het http-protocol omdat ze in zulke gevallen zowel http als https ondersteunen. Anderzijds kan je ook gebruik maken van mogelijkheden in cURL.

Ik wil deze code uitbreiden door een reeks urls op geldigheid te testen.

Met implode heb ik deze urls in een string geplaatst omdat chkdnsrr niet in staat is een array te verwerken.

Nu ziet de string er als volgt uit: google.com nl.wordpress.com en chkdnsrr ziet dit als 1 domein en geeft false weer.

ik heb ook geprobeerd met een , te scheiden, maar dit werkte niet.

Is er een specifieke delimiter of moet ik voor een andere aanpak kiezen zoals foreach of een andere loop?
Laat die code eens zien, je kunt volgens mij gewoon voortborduren op de code die Ariën je gaf.

Ben ik toch nieuwsgierig: waarom zou je domeinnamen geconcateneerd op willen slaan? Waarom niet als aparte stukjes informatie maar als lap tekst?

Reageren