webinteger powered by Trojan Online Marketing
Schnellsuche:
Check HTTP Status
Backlink Checker







 
Navigation: StartseiteSEO ToolsBacklink CheckerDokumentationDie Klasse

Backlink Checker - Dokumentation - Die Klasse

Nun zu unsere Klasse:

Klasse _class_backlink_checker.php
  1.  
  2.  
  3. //*****************************************************************************************************************
  4. // Copyright by webinteger.net
  5. // Author: Günther Trojan / 2007
  6. //*****************************************************************************************************************
  7.  
  8. class seo_tools{
  9.  
  10. var $url;
  11. var $partner_url;
  12. var $ziel_url;
  13. var $linktext;
  14. var $array_parse_url = array();
  15. var $user_agent = "webinteger.net/backlinkchecker";
  16. var $array_http_status = array();
  17. var $partner_quelltext;
  18. var $link_array = array();
  19. var $link_array_all = array();
  20. var $externe_links;
  21. var $interne_links;
  22.  
  23. //*****************************************************************************************************************
  24. // partner_url
  25. //*****************************************************************************************************************
  26.  
  27. function partner_url($partner_url){
  28. $this->partner_url = $this->url_aufbereiten($partner_url);
  29. }
  30.  
  31. //*****************************************************************************************************************
  32. // partner_url
  33. //*****************************************************************************************************************
  34.  
  35. function ziel_url($ziel_url){
  36. $this->ziel_url = $this->url_aufbereiten($ziel_url);
  37. }
  38.  
  39. //*****************************************************************************************************************
  40. // linktext
  41. //*****************************************************************************************************************
  42.  
  43. function linktext($linktext){
  44. $this->linktext = trim(strtolower($linktext));
  45. }
  46.  
  47. //*****************************************************************************************************************
  48. // url_aufbereiten
  49. //*****************************************************************************************************************
  50.  
  51. function url_aufbereiten($url){
  52. $url = trim($url);
  53. if(empty($url)) return FALSE;
  54. $array_parse_url = parse_url($url);
  55. if(!isset($array_parse_url["scheme"])) $url = "http://".$url;
  56. return $url;
  57. }
  58.  
  59. //*****************************************************************************************************************
  60. // check_backlink
  61. //*****************************************************************************************************************
  62.  
  63. function check_backlink(){
  64. $this->get_http_status($this->partner_url);
  65. if($this->array_http_status["Status-Code"][0] == 2){
  66. $this->get_link($this->partner_url, $this->ziel_url, $linktext, $linktitle);
  67. }else{
  68. return false;
  69. }
  70. }
  71.  
  72. //*****************************************************************************************************************
  73. // get_http_status
  74. //*****************************************************************************************************************
  75.  
  76. function get_http_status($url, $abbruch=false){
  77.  
  78. if(empty($url)) return FALSE;
  79. $this->url = $url;
  80. $this->array_parse_url = parse_url($this->url);
  81. if(!isset($this->array_parse_url["scheme"])) $this->array_parse_url["scheme"] = "http";
  82. if(!isset($this->array_parse_url["port"])) $this->array_parse_url["port"] = 80;
  83. if(!isset($this->array_parse_url["path"])) $this->array_parse_url["path"] = "/";
  84.  
  85. $fp = fsockopen($this->array_parse_url["host"], $this->array_parse_url["port"], $errno, $errstr, 15);
  86.  
  87. if(!$fp){
  88. if($abbruch){
  89. $this->array_http_status["Location-Status-Code"] = "Seite nicht gefunden - Zeitüberschreitung";
  90. }else{
  91. $this->array_http_status["Status-Line"] = "Angegebene Seite nicht gefunden";
  92. $this->array_http_status["HTTP-Version"] = "-";
  93. $this->array_http_status["Status-Code"] = "408";
  94. $this->array_http_status["Reason-Phrase"] = "Zeitüberschreitung";
  95. }
  96. return;
  97. }else{
  98. $head = "";
  99. fputs($fp, "GET ".$this->array_parse_url["path"]." HTTP/1.1\r\n");
  100. fputs($fp, "Host: ".$this->array_parse_url["host"]."\r\n");
  101. fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
  102. fputs($fp, "Content-length: ".strlen($parameters). "\r\n");
  103. fputs($fp, "User-Agent: ".$this->user_agent."\r\n");
  104. fputs($fp, "Connection: close\r\n\r\n");
  105.  
  106. $this->partner_quelltext = "";
  107. while(!feof($fp)) $this->partner_quelltext.= fgets($fp, 1024);
  108. fclose($fp);
  109.  
  110. preg_match("=^(HTTP/\d+\.\d+) (\d{3}) ([^\r\n]*)=", $this->partner_quelltext, $treffer);
  111.  
  112. if($abbruch){
  113. $this->array_http_status["Location-Status-Code"] = $treffer[2];
  114. }else{
  115. $this->array_http_status["Status-Line"] = $treffer[0];
  116. $this->array_http_status["HTTP-Version"] = $treffer[1];
  117. $this->array_http_status["Status-Code"] = $treffer[2];
  118. $this->array_http_status["Reason-Phrase"] = $treffer[3];
  119.  
  120. $http_klassen = array("Informational", "Successful", "Redirection", "Client Error", "Server Error");
  121. $this->array_http_status["Response-Class"] = $http_klassen[$this->array_http_status["Status-Code"][0] - 1];
  122. preg_match_all("=^(.+): ([^\r\n]*)=m", $this->partner_quelltext, $treffer, PREG_SET_ORDER);
  123. foreach($treffer as $zeile){
  124. $this->array_http_status[$zeile[1]] = $zeile[2];
  125. }
  126. if($this->array_http_status["Status-Code"][0] == 3){
  127. $this->get_http_status($this->array_http_status["Location"], true);
  128. }
  129. }
  130. }
  131. }
  132.  
  133. //*****************************************************************************************************************
  134. // get_link
  135. //*****************************************************************************************************************
  136.  
  137. function get_link($url, $zielurl, $linktext, $linktitle){
  138.  
  139. $domain = $this->partner_quelltext;
  140. $domain = str_replace("\r", "", $domain);
  141. $domain = str_replace("\t", "", $domain);
  142. $domain = str_replace("\n", "", $domain);
  143. $domain = preg_replace("/ +/", " ", $domain);
  144. $domain = strtolower($domain);
  145.  
  146. if(preg_match('/<body(?:.*?)>(.*)<\/body>/is', $domain, $matches)) {
  147. $content_body = $matches[1];
  148. }
  149.  
  150. $pattern = "/<a(.*?)>(.*?)<\/a>/is";
  151. $anzahl_links = preg_match_all($pattern, $content_body, $links);
  152.  
  153. $this->anzahl_interne_externe_links($links);
  154.  
  155. for($i=0; $i < count($links[1]); $i++){
  156.  
  157. $link_tmp = htmlspecialchars($links[1][$i]);
  158. $link_tmp = str_replace("&quot;", "", $link_tmp);
  159. $link_tmp = str_replace("'", "", $link_tmp);
  160. if(eregi($this->ziel_url, $link_tmp)){
  161. $array_a_attribut = array();
  162. $parse_link = explode(" ", $link_tmp);
  163. for($x=0; $x < count($parse_link); $x++){
  164. if(eregi("=", $parse_link[$x])){
  165. $parse_link2 = explode("=", $parse_link[$x]);
  166. $array_key = $parse_link2[0];
  167. $array_value = trim($parse_link2[1]);
  168. $array_komplett = array($array_key=>$array_value);
  169. $this->link_array = array_merge($this->link_array, $array_komplett);
  170. }
  171. }
  172. $array_linktext = array("linktext"=>strip_tags($links[2][$i]));
  173. $this->link_array = array_merge($this->link_array, $array_linktext);
  174. array_push($this->link_array_all, $this->link_array);
  175. }
  176. }
  177. }
  178.  
  179. //*****************************************************************************************************************
  180. // anzahl_interne_externe_links
  181. //*****************************************************************************************************************
  182.  
  183. function anzahl_interne_externe_links($links){
  184.  
  185. $this->externe_links = 0;
  186. $this->interne_links = 0;
  187.  
  188. for($i=0; $i < count($links[1]); $i++){
  189. $link_tmp = htmlspecialchars($links[1][$i]);
  190. $url_host = parse_url($this->partner_url);
  191. if(eregi($url_host["host"], $link_tmp)){
  192. $this->interne_links++;
  193. }else{
  194. if(eregi("http://", $link_tmp)){
  195. $this->externe_links++;
  196. }else{
  197. $this->interne_links++;
  198. }
  199. }
  200. }
  201. }
  202. }
  203.  

Der einstieg in die Klasse efolgt in Zeile 63 mit der Methode 'check_backlink()'. Nch Ermittlung des HTTP Status in Zeile 65 wird nur weitergemacht, wenn der Status der Partnerseite ein 200 bzw. 2xx hat. Natürlich besteht auch die Möglichkeit bei einer 301 oder 302 Weiterleitung dessen Ziel zu Überprüfen. Die Werte stehen dann in '$this->array_http_status["Location-Status-Code"]' bzw. in '$this->array_http_status["Location"]'.