2013-08-21 2 views
1

저는 슬림을 사용하여 욕설 필터링 API를 작성하려고합니다. 여기에 그 API의 링크가 있습니다.PHP SLIM이 uri 인수에 점 (.)을 허용하지 않습니다.

Link : http://www.employeeexperts.com/Profanity/index.php/rest/check/hello 

링크가 끝날 때 나는 모독 검사를 위해 'hello'라는 단어를 추가합니다. 지금까지 제대로 작동하고 있습니다. 하지만, 단어 (예 : 안녕하세요 ..)의 끝에 점 (.)을 추가 한 순간 슬림이 컨트롤을 인덱스 페이지로 리디렉션했습니다.

내 GET 라우터 코드는 다음과 같습니다 ..

$app->get('/service/:method/:str', function ($method, $str) use ($app) {  
    // Internal codes goes here 
}); 

어느 한 날 내가이 막을 수있는 방법을 알아 무화과 도움이 될 수 있습니다.

감사

답변

0

을 그것은 당신이 점으로 끝나는 URL을 사용하지 않는 기본 GET 라우터를 보인다. 점 뒤에 문자가 있으면 페이지가 정상적으로 작동합니다. 다음과 같이 다른 방법으로 사용자 정의 경로 상태를 시도 할 수 : http://docs.slimframework.com/#Route-Conditions

예를 귀하의 경우에 :

<?php 
$app = new \Slim\Slim(); 
$app->get('/service/:method/:str', function ($year) { 
    echo "You are viewing archives from $year"; 
})->conditions(array('str' => '([a-z]+)', 'str' => '(.*)')); 

당신이 (전체 기사 또는 이와 유사한 같은) 당신의 API를 사용하여 복잡한 데이터를 처리에서 기획하는 경우 내가 POST를 통해 데이터를 전송하는 것이 좋습니다 것입니다. 그것은 당신에게 많은 두통을 저장합니다. 내가 URL에 액세스 할 때 또한

array(
    'foo', 
    'bar', 
) 

: 나는 /service/foo/bar를 URL로 액세스 할 때

$app->get('/service/+args', function ($args) use ($app) {  
    $arguments = str_replace("/service/", $app->request->getPathInfo()); 
    $args = explode('/', $arguments); 
    var_dump($args); 
}); 

에서, $args는 다음과 같이 될 것입니다 :

+0

해당 조건 n은 작동하지 않습니다. POST 메서드에서 데이터를 보내는 것에 대해서도 더 나은 솔루션이라고 생각합니다. – mi6crazyheart

0

나도이 문제가,이 내 솔루션입니다 /service/foo/bar/baz/qux 일 경우 $args은 다음과 같습니다.

array(
    'foo', 
    'bar', 
    'baz', 
    'qux', 
) 
관련 문제