2013-12-20 5 views
0

필자는 PHP를 처음 사용하고 있으며이 함수가 생성하는 출력을 위생적으로 처리하는 데 어려움을 겪고 있습니다. 모든 의견을 주시면 감사하겠습니다.이 기능의 URL을 어떻게 위생 처리합니까?

기능은 다음과 같습니다 다음 FILTER_SANITIZE_URL flag

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().

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

링크가 있으면 코드에 'FILTER_VALIDATE_URL'이 표시됩니다. –

+1

@DigitalChris oops. 결정된. –

+0

정말 고마워요. FILTER_SANITIZE_URL에서 문제가 해결되었습니다. 많은 감사합니다! – user3123395

1

u는 내가 사용 var_dump() echo, print_r()를 사용하여 디버깅 할 수 있습니다 : 당신이 사용할 수있는 방법의

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>';