![]() | ||||||||
![]() |
Karte | Kalender | Suche | Bookmarks | Experte | FAQ |
ModuleDownloadSMFinder_Admin_checkAllLinksWird verwendet von:SMFinder_Main Diese Funktion versucht, die übergebene URL aufzurufen und liefert deren Rückgabecode. <?php /* published under GPL www.gnu.org/licenses/gpl.html */ function SMFinder_Admin_checkAllLinks(){ include_once("SMFinder_Query_getAllUID.php"); include("SMFinder_Config.php"); echo "<h1>Bitte Geduld, der Test dauert....</h1>"; $UIDs=array(); $URL=array(); $fns=array(); $stati=array(); list($UIDs,$stati,$fns) = SMFinder_Query_getAllUID("link","!delete","");; $dblink=mysql_connect($GLOBALS['dbserver'],$GLOBALS['dbuser'],$GLOBALS['dbpasswd']); mysql_select_db($GLOBALS['dbname'],$dblink); $dbtable=$GLOBALS['DBTlink']; $jetzt=date('Y-m-d H:i:s'); for($i=0; $i<count($UIDs); $i++){ if (strlen($UIDs[$i])>=10 AND $stati[$i]!="delete"){ $endOfURL=substr($UIDs[$i],-3,3); if ($endOfURL==".de" | $endOfURL=="com" | $endOfURL=="org" | $endOfURL==".vu" | $endOfURL=="nfo" | $endOfURL=="net" | $endOfURL==".dk" | $endOfURL==".at"){ $URL[$i]=$UIDs[$i]."/"; }else{ $URL[$i]=$UIDs[$i]; } $result=SMFinder_Admin_checkLink($URL[$i]); $anfrage="update ".$dbtable." set status='".$result[status]."' where URL='".$UIDs[$i]."';"; #echo "<b>".$anfrage."</b><br>"; if($ergebnis=mysql_query($anfrage)){}else{echo "Fehler=".mysql_error()."<br>";} $anfrage="update ".$dbtable." set lastchecked='".$jetzt."' where URL='".$UIDs[$i]."';"; #echo "<b>".$anfrage."</b><br>"; if($ergebnis=mysql_query($anfrage)){}else{echo "Fehler=".mysql_error()."<br>";} }else{ $result[status]=-10; } if ($result[status]==200){$bgcolor=" class='good' ";} if ($result[status]<0){$bgcolor=" class='notgood' ";} if ($result[status]==404){$bgcolor=" class='mostly' ";} echo $URL[$i]." <span ".$bgcolor.">".$result[status]."</span><br>"; } } function SMFinder_Admin_checkLink($url,$timeout = 10){ /* echo "Dies ist eine Kopie von <a href='http://aktuell.de.selfhtml.org/artikel/phpasp/existenz/'> selfhtml: Existenzprüfung externer HTTP-Resourcen</a><br>"; */ $timeout = (int)round($timeout/2+0.00000000001); $return = array(); ### 1 ### $inf = parse_url($url); if (!isset($inf['scheme']) or $inf['scheme'] !== 'http') return array('status' => -1); if (!isset($inf['host'])) return array('status' => -2); $host = $inf['host']; if (!isset($inf['path'])) return array('status' => -3); $path = $inf['path']; if (isset($inf['query'])) $path .= '?'.$inf['query']; if (isset($inf['port'])) $port = $inf['port']; else $port = 80; ### 2 ### $pointer = fsockopen($host, $port, $errno, $errstr, $timeout); if (!$pointer) return array('status' => -4, 'errstr' => $errstr, 'errno' => $errno); socket_set_timeout($pointer, $timeout); ### 3 ### $head = 'HEAD '.$path.' HTTP/1.1'."\r\n". 'Host: '.$host."\r\n"; if (isset($inf['user'])) $head .= 'Authorization: Basic '. base64_encode($inf['user'].':'.(isset($inf['pass']) ? $inf['pass'] : ''))."\r\n"; if (func_num_args() > 2) { for ($i = 2; $i < func_num_args(); $i++) { $arg = func_get_arg($i); if ( strpos($arg, ':') !== false and strpos($arg, "\r") === false and strpos($arg, "\n") === false ) { $head .= $arg."\r\n"; } } } else $head .= 'User-Agent: Selflinkchecker 1.0 (http://aktuell.selfhtml.org/artikel/phpasp/existenz/index.htm)'."\r\n"; $head .= 'Connection: close'."\r\n"."\r\n"; ### 4 ### fputs($pointer, $head); $response = ''; $status = socket_get_status($pointer); while (!$status['timed_out'] && !$status['eof']) { $response .= fgets($pointer); $status = socket_get_status($pointer); } fclose($pointer); if ($status['timed_out']) { return array('status' => -5, '_request' => $head); } ### 5 ### $res = str_replace("\r\n", "\n", $response); $res = str_replace("\r", "\n", $res); $res = str_replace("\t", ' ', $res); $ares = explode("\n", $res); $first_line = explode(' ', array_shift($ares), 3); $return['status'] = trim($first_line[1]); $return['reason'] = trim($first_line[2]); foreach ($ares as $line) { $temp = explode(':', $line, 2); if (isset($temp[0]) and isset($temp[1])) { $return[strtolower(trim($temp[0]))] = trim($temp[1]); } } $return['_response'] = $response; $return['_request'] = $head; return $return; } IndexFür die Funktionalität des SM-Finders sind viele kleine Tools notwendig. Alle Funktionen beginnen mit SMFinder_ um deren Ursprung zu kennzeichnen. Dem schließt sich die Funktionsgruppe, z.B. Geo_ an, gefolgt vom eigentlichen Namen, der die Aufgabe der Funktion widerspiegeln soll, z.B. PLZ2DB. Der gesamte Sourcecode darf gemäß GNU General Public License weiterverbreitet werden. |
![]() |
Die hier zur Verfügung gestellten Informationen basieren auf dem Austauschnetzwerk des SM-Finders.
Änderungen an eurem Datensatz könnt ihr z.B. beim Arbeitskreis SM-Finder vornehmen.
Bei Fragen und Problemen schreibt bitte an: sm-finderki-co.org
Der AK-SM-Finder ist korporatives Mitglied der BVSM e.V.
Für Aktualität und Richtigkeit der dargebotenen Infomationen kann keine Gewähr übernommen werden!