2013-12-20 1 views
0

Я новичок в PHP и с трудом пытаюсь дезинформировать вывод, создаваемый этой функцией. Любая обратная связь будет оценена.Как бы вы санировали URL-адреса этой функции?

Функция ниже:

function getTemplateBreadcrumbs($path, $title){ 

    $path = str_replace("/", "/", $path); 

    $breadcrumbs = "<ul>\n"; 
    $breadcrumbs .= " <li><a href=\"/\">Home</a></li>\n"; 

    $directories = explode("/", $path); 
    $tempPath = "/"; 

    for($x=1; $x < count($directories)-2; $x++){ 
    if($directories[$x] != null){ 

     $tempPath .= $directories[$x] . "/"; 

     $linkText = getPageVariable("pageTitle", $_SERVER["DOCUMENT_ROOT"] . $tempPath . "index.php"); 
     if($linkText == null){ 
     $linkText = ucwords(str_replace("-", " ", $directories[$x])); 
     } 

     $breadcrumbs .= " <li><a href=\"" . $tempPath . "\">$linkText</a></li>\n"; 
    } 
    } 

    $breadcrumbs .= " <li>" . $title . "</li>\n"; 
    $breadcrumbs .= "</ul>\n"; 

    return $breadcrumbs; 
} 
+0

дезинфицировать для чего? Вы должны дезинфицировать среду, в которой будут использоваться данные. Дезинфекция - это не то, что вы можете посыпать такими данными, как соль на еде. –

ответ

1

Использование filter_var() с FILTER_SANITIZE_URL flag.

$url = filter_var($tempPath , FILTER_SANITIZE_URL); 
+0

вы получили ссылку справа, тогда ваш код говорит 'FILTER_VALIDATE_URL' –

+1

@DigitalChris oops. Исправлена. –

+0

Большое вам спасибо. FILTER_SANITIZE_URL исправил проблему, с которой я столкнулся. Большое спасибо! – user3123395

1

и можно отлаживать с помощью echo, print_r(), var_dump() я использую:

echo htmlspecialchars(print_r($var)); 

пример того, как вы можете использовать:

function getTemplateBreadcrumbs($path, $title){ 

    //rest of the code 
    echo '<pre>'; 
    echo htmlspecialchars(print_r($breadcrumbs)); 
    echo '</pre>'; 
    return $breadcrumbs; 
} 

если вы хотите проверить, с другой стороны код:

$teste = getTemplateBreadcrumbs('/home/index', 'Home Page'); 
echo '<pre>'; 
echo htmlspecialchars(print_r($teste)); 
echo '</pre>'; 
Смежные вопросы