2014-12-26 63 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]"); 

一个编辑的文章数据的简单的Ajax 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."); 
       } 
      }); 

上面的代码工作完美,当我在本地主机与各种val。但是在远程服务器上的生产中,它的值很小,例如“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} [] [] 

编辑

如果我删除图像代码,并开始工作它可能是从Apache某些配置一些其他的字符我已经注意到不接受特殊字符来阻止注射?

+0

你有没有排除eval声明中的错误?我会为每个请求记录这个值'eval(“CKEDITOR.instances.content”+ id +“。getData()”)' – roo2

+0

@EruPenkman我已经将这段代码传递给console.log();它简单地返回类似“唧唧歪歪” – user3135757

+0

@EruPenkman但是当我不输入任何新的生产线,“,”代码工作,所以我认为这与事实阿贾克斯后拒绝有关的东西发送因为这些人物的存在。值得一提的是,代码工作完全在我的本地 – user3135757

回答

0

我认为你是正确的,因为服务器是过滤包含HTML,也许使用mod_security rules POST人体的。你或许可以解决这个问题通过

val: encodeURIComponent(htmlFragment) 

在PHP编码的HTML片段,你将不得不对其进行解码(但也许PHP做这个自动为您)

urldecode($a["val"]) 

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

+0

对其进行解码谢谢您的回答,但我的ID是一个简单的数量为什么会需要进行任何编码? – user3135757

+0

嗯您的权利,我认为后机体的甚至不需要编码,必须是一个不同的问题 – roo2

+0

也许有人注入数据,以便它不是只有一个简单的数字了吗? – hakre

相关问题