webForumDet fria alternativet

Gilltig URL?

8 svar · 312 visningar · startad av Alpha II

Alpha IIMedlem sedan maj 20002 993 inlägg
#1

Hur kollar man om en URL är gilltig?

------------------
Alpha II med rätt att döda

U2KMedlem sedan jan. 2000224 inlägg
#2

du kan ju alltid kolla om det viktigaste i en hyperlänk är med som t.ex
http:// och .se/.net/.com

Det gör du med preg_replace tror jag.. Sök och kolla

------------------
//Du ska inte slänga vatten över ån.
PHP vs ASP (10 - 0)

ahaMedlem sedan okt. 200057 inlägg
#3

Vad menar du med gilltig?
om du skall kolla om servern finns kan du ju pinga den
system(ping www.fyndtorg.nu);

om nu din server tillåter dig använda system(); eller exec();

------------------
www.fyndtorg.nu/alex

Alpha IIMedlem sedan maj 20002 993 inlägg
#4

Jag har gjort så att besökaren ska kunna skicka in en länk. Och jag vill kolla om det är en fungerande länk. :)

------------------
Alpha II med rätt att döda

ahaMedlem sedan okt. 200057 inlägg
#5

if(file("http://www.fyndtorg.nu/index.php3")) { print("Adressen funkar"); } else { print("Något knasar sig"); }

kanske?

------------------
www.fyndtorg.nu/alex

ThomsonMedlem sedan feb. 200177 inlägg
#6

$file = fopen("din url", "r");
if (!$file) {
echo "nepp. url:en gick inte att hitta";
}

ungefär samma idé som aha var inne på, men detta funkar garanterat!

------------------
"Snälla människor kommer till himmlen, andra kommer hur långt som helst"

Alpha IIMedlem sedan maj 20002 993 inlägg
#7

Thomson,
det funkar inte :(
kolla http://www.alfa2.f2s.com/links.htm

------------------
Alpha II med rätt att döda

herqMedlem sedan aug. 2000238 inlägg
#8

tips; använd @ före, ex
@fopen("din url", "r");
så slipper du felmeddelandet som ploppar upp ifall urlen inte är giltig

sgtpepperMedlem sedan apr. 20007 588 inlägg
#9

Här är en liten halvful funktion som jag gjorde förut, den kollar dels att adressen är korrekt skriven och att det är en server som svarar i andra änden:

	function checkURL($url)
	{
		if (eregi("http://(.*)/(.*)", $url, $out))
		{
			$serverName = $out[1];
			$documentName = "/".$out[2];
		}
		else if (eregi("http://(.*)", $url, $out))
		{
			$serverName = $out[1];
			$documentName = "/";
		}
		else return 1;	

		if (eregi("(.*):(.*)", $serverName, $out))
		{
			$serverName = $out[1];
			$port = $out[2];
		}
		else { $port = 80; }
	
		$fp = @fopen($url, "r");
			
		if(!$fp) return 2;
		
		fclose($fp);
		
		return 0;
	}

Returnerar 0 om allt är ok, 1 om adressen är felformad och 2 om servern inte svarar.

Det som borde läggas till är en koll av vad servern returnerar, är det ett HTTP-fel (t.ex 404) så borde funktionen känna av det.

------------------
"Med ett schysst järnrör slår man hela världen med häpnad" - Socker-Conny

136 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)