2014-12-26 4 views
0

나는 컨트롤러Laravel 코드는 로컬 호스트에서 작동하지만 서버에 실패


//Controller articleManagement 
    function editArticle(){ 
     $a=$this->inputs; 
     $response=DB::table('articles') 
      ->where('id', $a["id"]) 
      ->update(array($a["column"] => $a["val"])); 
     return $response; 
    } 

//routes.php 
Route::post('/xarticle', "[email protected]"); 

에 다음 라우팅 편집 된 문서 데이터를 게시하는 간단한 아약스 JQuery와 기능이
//ajax Jquery 
      $.ajax({ 
       type: "POST", 
       url: "/xarticle", 
       data: { 
        id:id, 
        val:eval("CKEDITOR.instances.content"+id+".getData()"), 
        column:"content" 
       }, 
       success:function(data){ 
        data=Number(data); 
        Boolean(data)?alertify.success("Data successfully updated."):alertify.error("Nothing was updated."); 
       } 
      }); 

위의 코드는 localhost에 모든 종류의 012가있을 때 완벽하게 작동합니다. 하지만 원격 서버의 제작 과정에서 작은 값 (예 : "Hello World" "bla bla bla bla bla")을 사용하지만 기사를 게시하고 404 오류를 찾을 때 오류가 발생합니다.

이 오류는 laravel.log에 표시됩니다

나는 이미지 코드 및 그것은 아파치에서 일부 구성 될 수있는 작업을 시작 다른 문자를 삭제하면 편집이

내가 발견 한

[2014-12-26 23:20:07] production.ERROR: exception 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException' 
Stack trace: 
#0 /home/yahyouha/html/bootstrap/compiled.php(3238): Illuminate\Foundation\Application->abort(404) 
#1 /home/yahyouha/html/app/routes.php(53): Illuminate\Support\Facades\Facade::__callStatic('abort', Array) 
#2 /home/yahyouha/html/app/routes.php(53): Illuminate\Support\Facades\App::abort(404) 
#3 [internal function]: {closure}('xarticle') 
#4 /home/yahyouha/html/bootstrap/compiled.php(5331): call_user_func_array(Object(Closure), Array) 
#5 /home/yahyouha/html/bootstrap/compiled.php(4998): Illuminate\Routing\Route->run(Object(Illuminate\Http\Request)) 
#6 /home/yahyouha/html/bootstrap/compiled.php(4986): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) 
#7 /home/yahyouha/html/bootstrap/compiled.php(715): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) 
#8 /home/yahyouha/html/bootstrap/compiled.php(696): Illuminate\Foundation\Application->dispatch(Object(Illuminate\Http\Request)) 
#9 /home/yahyouha/html/bootstrap/compiled.php(7746): Illuminate\Foundation\Application->handle(Object(Illuminate\Http\Request), 1, true) 
#10 /home/yahyouha/html/bootstrap/compiled.php(8353): Illuminate\Session\Middleware->handle(Object(Illuminate\Http\Request), 1, true) 
#11 /home/yahyouha/html/bootstrap/compiled.php(8300): Illuminate\Cookie\Queue->handle(Object(Illuminate\Http\Request), 1, true) 
#12 /home/yahyouha/html/bootstrap/compiled.php(10962): Illuminate\Cookie\Guard->handle(Object(Illuminate\Http\Request), 1, true) 
#13 /home/yahyouha/html/bootstrap/compiled.php(657): Stack\StackedHttpKernel->handle(Object(Illuminate\Http\Request)) 
#14 /home/yahyouha/public_html/index.php(49): Illuminate\Foundation\Application->run() 
#15 {main} [] [] 

주사를 방지하기 위해 게시 할 특수 문자를 허용하지 않습니까?

+0

eval 성명서에서 버그를 배제 했습니까? @eru ("CKEDITOR.instances.content"+ id + ". getData()")' – roo2

+0

@EruPenkman 이미이 코드를 console.log()에 전달했습니다. 단순히 " bla bla bla" – user3135757

+0

@ EruPenkman과 비슷한 것을 반환했지만 새로운 행을 입력하지 않으면 ", '코드가 작동하므로 아약스 게시 거부 사실과 관련이 있다고 생각합니다. 그 문자가 존재합니다. 그 코드가 내 localhost에서 완벽하게 작동합니다 언급 할 가치가 – user3135757

답변

0

나는 서버가 HTML을 포함하는 POST bodys를 필터링하고 있다고 생각한다. 아마도 mod_security rules을 사용했을 것이다. 당신은 (아마도 PHP는 당신을 위해이 작업을 수행 자동하지만)을 디코딩 할 것이다 당신은 아마 PHP에서

val: encodeURIComponent(htmlFragment) 

으로 HTML 조각을 인코딩하여이 문제를 얻을 수 있습니다

urldecode($a["val"]) 

http://php.net/manual/en/function.urldecode.php http://www.w3schools.com/jsref/jsref_encodeuricomponent.asp

+0

귀하의 답변을 주셔서 감사하지만 내 ID는 단순히 숫자가 왜 인코딩이 필요하겠습니까? – user3135757

+0

흠, 나는 그 게시물 bodys도 인코딩이 필요하지 않습니다, 다른 문제가되어야한다고 생각합니다 – roo2

+0

어쩌면 누군가가 그렇게 데이터를 주입했다 더 이상 단순한 숫자가 무엇입니까? – hakre

관련 문제