poizn Posted September 21, 2006 Share Posted September 21, 2006 Hi everybody I need to check if a URL is up, so i searched the net and people suggested that you send a HEAD request to the server and check the result (code to follow) [code] function url_exists($url) { //could have used urlencode - but this works better ;) $url = preg_replace("# #" , "%20" , $url); $a_url = parse_url($url); //break the url into scheme, host, post ect... if(!isset($a_url["port"])) { if(strtolower($a_url["scheme"]) == "https") $a_url["port"] = 443; else $a_url["port"] = 80; } if(isset($a_url["host"]) && $a_url["host"] != gethostbyname($a_url["host"])) { //open socket to host X on port Y if(!$fid = fsockopen($a_url["host"] , $a_url["port"])) return false; $page = isset($a_url["path"])?$a_url["path"]:"/"; $page .= isset($a_url["query"])?"?".$a_url["query"]:""; //send request to server fputs($fid , "HEAD $page HTTP/1.0\r\nHost: ".$a_url["host"]."\r\n\r\n"); $head = fread($fid , 4096); fclose($fid); //return true or false based on what the server returns return preg_match("#^HTTP/.*\s+[200|302]+\s#i" , $head); } else { return false; } } [/code]This function works pretty cool, except for when you try a HTTPS server. This is what i get if i print $head on some HTTPS url's [server_response] Your browser sent a request that this server could not understand. Reason: You're speaking plain HTTP to an SSL-enabled server port. Instead use the HTTPS scheme to access this URL, please. [/server_respone] Does anyone know "how to speak HTTPS"? Any help will be appreciated Thanks in advance Link to comment https://forums.phpfreaks.com/topic/21537-checking-if-a-https-server-is-available/ Share on other sites More sharing options...
Daniel0 Posted September 21, 2006 Share Posted September 21, 2006 Sorry, wrong forum :) Link to comment https://forums.phpfreaks.com/topic/21537-checking-if-a-https-server-is-available/#findComment-96209 Share on other sites More sharing options...
poizn Posted September 22, 2006 Author Share Posted September 22, 2006 to everybody looking at this post now, i finally got the answer from another forum[quote]You have to put ssl:// before the hostname for it to work properly. Here is an example using pfsockopen, but it should work with fsockopen.http://www.php.net/manual/en/functi...kopen.php#67395[/quote]thanks Link to comment https://forums.phpfreaks.com/topic/21537-checking-if-a-https-server-is-available/#findComment-96603 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.