Sicherer Link

Johannes Röttger hat gesagt.:
Verzeihnung, aber ueberlass das moderieren doch bitte den Moderatoren! Dieser Beitrag zeugt auch nicht grade von einem ueberragenden Geist!
Du hast Probleme :rolleyes: Ich hab ihn nur auf die Fakesicherheit hingewisen an die er sicher noch nicht gedacht hat wenn er jetzt schon Probleme mit Urlsicherheit hat. Nebenbei hab ich ihm auch noch einen Hinweis gegebenw o er suchen muss.

Und damit dieser Post auch :nospam: ist, suh mal nach preg_match oder preg_grep sind doch sehr sinnvoll wenn man sie richtig anwendet.
 
Außerdem kannst du mit $deinstring[strlen($deinstring)] das letzte Zeichen anschauen und falls da kein "/" steht mittels $deinstring .= "/" einen anfügen
 
Divi hat gesagt.:
Außerdem kannst du mit $deinstring[strlen($deinstring)] das letzte Zeichen anschauen und falls da kein "/" steht mittels $deinstring .= "/" einen anfügen

Soweit ich weis geht das nur mit { } und nicht mit [ ]
 
Nein, es geht beides. Bei ersterem wird der String als Array mit den Zeichen drin behandelt, und im zweiten halt als String. Dennoch ist {} schon besser.
 
Das mit dem www geht jetzt, aber das mit dem / am Schluss kann ich nicht bestätigen ! Das geht auch nicht wenn es am Schluss ist ! Hier mal der Code:
Code:
function phpLinkCheck($url, $r = FALSE) 
{ 
  /*  Purpose: Check HTTP Links 
   *  Usage:   $var = phpLinkCheck(absoluteURI) 
   *           $var["Status-Code"] will return the HTTP status code 
   *           (e.g. 200 or 404). In case of a 3xx code (redirection) 
   *           $var["Location-Status-Code"] will contain the status 
   *           code of the new loaction. 
   *           See print_r($var) for the complete result 
   * 
   *  Author:  Johannes Froemter <j-f@gmx.net> 
   *  Date:    2001-04-14 
   *  Version: 0.1 (currently requires PHP4) 
   */

  $url = trim($url); 
  if (!preg_match("=://=", $url)) $url = "http://$url"; 
  $url = parse_url($url); 
  if (strtolower($url["scheme"]) != "http") return FALSE; 

  if (!isset($url["port"])) $url["port"] = 80; 
  if (!isset($url["path"])) $url["path"] = "/"; 

  $fp = fsockopen($url["host"], $url["port"], &$errno, &$errstr, 30); 

  if (!$fp) return FALSE; 
  else 
  { 
    $head = ""; 
    $httpRequest = "HEAD ". $url["path"] ." HTTP/1.1\r\n" 
                  ."Host: ". $url["host"] ."\r\n" 
                  ."Connection: close\r\n\r\n"; 
    fputs($fp, $httpRequest); 
    while(!feof($fp)) $head .= fgets($fp, 1024); 
    fclose($fp); 

    preg_match("=^(HTTP/\d+\.\d+) (\d{3}) ([^\r\n]*)=", $head, $matches); 
    $http["Status-Line"] = $matches[0]; 
    $http["HTTP-Version"] = $matches[1]; 
    $http["Status-Code"] = $matches[2]; 
    $http["Reason-Phrase"] = $matches[3]; 

    if ($r) return $http["Status-Code"]; 

    $rclass = array("Informational", "Success", 
                    "Redirection", "Client Error", 
                    "Server Error"); 
    $http["Response-Class"] = $rclass[$http["Status-Code"][0] - 1]; 

    preg_match_all("=^(.+): ([^\r\n]*)=m", $head, $matches, PREG_SET_ORDER); 
    foreach($matches as $line) $http[$line[1]] = $line[2]; 

    if ($http["Status-Code"][0] == 3) 
      $http["Location-Status-Code"] = phpLinkCheck($http["Location"], TRUE); 

    return $http; 
  } 
}

auch wenn ich gleich vor dem trim
Code:
$url .= "/";

mache geht es auch nicht, es geht immer nur bis zum de z.B.
 
*schieb*

Wäre euch sehr dankbar, wenn jemand mal über den Code kucken könnte und mir sagen wieso das mit der gesamten URL nicht funktioniert, wäre mir sehr wichtig !

Schonmal Danke im Vorraus !
 
Zurück