2016-11-13 149 views
1

我试图设计一个内容管理系统(对于博客)。一切工作正常,但我有一个奇怪的问题关于更新部分。更新部分适用于jQuery-ajax和php。一个jquery函数检查输入,如果一切正常(非空等),通过AJAX(POST方法)发送所有数据到addpostup.php。问题是,iframe嵌入代码抛出403错误

当我在textarea的添加代码的iframe(YouTube的链接),它抛出

jquery-3.0.0.min.js:4 POST addpostup.php 403 (Forbidden) 

在本地主机,它正在完美。当我没有添加属性的iframe代码

<iframe></iframe> 

它抛出同样的错误403

的permissin 0755已被授予addpostup.php。仍然有同样的错误。另外我没有添加代码iframe,一切工作完美(也有其他HTML标签不会导致问题)。我addpostup.php文件是:?

<?php 
session_start(); 
require('checklogin.php'); 
require('../fn/db.php'); 

    $id = $_POST['addid']; 
    $title = $_POST['title']; 
    $image = $_POST['image']; 
    $brief = $_POST['addta']; 
    $text = $_POST['addta2']; 
    $radio = $_POST['addradio']; 
    $video = $_POST['addvideo']; 
    $sample = $_POST['addsample']; 
    $keyword = $_POST['addkeyword']; 
    $descr = $_POST['adddesc']; 
    $gdate = date('d.m.Y'); 

    try { 
     $data = 'UPDATE tbl_cnt SET title = :title, img = :img, brief = :brief, textt = :textt, classt = :classt, videot = :videot, udate = :udate, surl = :surl, kword = :kword, descr = :descr WHERE id = :id 
     '; 

     $sql = $db->prepare($data); 

     $sql->bindParam(':title',$title); 
     $sql->bindParam(':img',$image); 
     $sql->bindParam(':brief',$brief); 
     $sql->bindParam(':ttext',$text); 
     $sql->bindParam(':classt',$radio); 
     $sql->bindParam(':videot',$video); 
     $sql->bindParam(':udate',$gdate); 
     $sql->bindParam(':surl',$sample); 
     $sql->bindParam(':kword',$keyword); 
     $sql->bindParam(':descr',$descr); 
     $sql->bindParam(':id',$id); 

     $sql->execute(); 

     echo('Success...'); 
    } catch (Exception $e) { 
     echo 'Error: ' . $e->getMessage(); 
    } 

    $db = null; 

>

数据库连接位于db.php中(含税)。我的控制器功能(jQuery-ajax)是;

function check_form2(){ 
    valid = true; 

    $(".statusaddpost").html(''); 
    $(".addpost").css("border","1px solid #ccc"); 
    $("#addta").css("border","1px solid #ccc"); 

    if (!$("#addtitle").val()){ 
     $("#addtitle").css("border","1px solid red"); 
     $(".statusaddpost").append('<li><i class="fa fa-times-circle" aria-hidden="true"></i> Empty title !!.</li>'); 
     valid=false; 
    } 

    if ($("#addtitle").val().length > 50){ 
     $("#addtitle").css("border","1px solid red"); 
     $(".statusaddpost").append('<li><i class="fa fa-times-circle" aria-hidden="true"></i> Max title length is 50. At the moment : '+$("#addtitle").val().length+' </li>'); 
     valid=false; 
    } 

    if (!$("#addimage").val() || $("#addimage").val()=='disab'){ 
     $("#addimage").css("border","1px solid red"); 
     $(".statusaddpost").append('<li><i class="fa fa-times-circle" aria-hidden="true"></i> Empty image!!</li>'); 
     valid=false; 
    }else if ($("#addimage").val().length > 20){ 
     $("#addimage").css("border","1px solid red"); 
     $(".statusaddpost").append('<li><i class="fa fa-times-circle" aria-hidden="true"></i> Max img length is 20. At the moment : '+$("#addimage").val().length+' </li>'); 
     valid=false; 
    } 

    if(valid==true){ 
     if ($("#addvideo").is(":checked")){ 
      video="1"; 
     }else{ 
      video="0"; 
     } 
     serdata = 'addid='+$("#addid").val()+'&title='+$("#addtitle").val()+'&image='+$("#addimage").val()+'&addta='+$("#addta").val()+'&addta2='+$("#addta2").val()+'&addradio='+$('input[name=addradio]:checked', '#addpost').val()+'&addvideo='+video+'&addsample='+$("#addsample").val()+'&addkeyword='+$("#addkeyword").val()+'&adddesc='+$("#adddesc").val(); 
     $.ajax({ 
      type:"POST", 
      url:"../addpostup.php", 
      data:serdata, 
      cache:false, 
      success:function(result){ 
       $(".statusaddpost").html(''); 
       $(".previewpic").slideUp(300); 
       $(".addpost").val(''); 
       $("#addta").val(''); 
       $("#addta2").val(''); 
       $(".previewpic").html(''); 
       $(".addpost").css("border","1px solid #ccc"); 
       $("#addta").css("border","1px solid #ccc"); 
       $(".statusaddpost").html('<li class="addpostsuccess">'+result+'</li>'); 
      }, 
      error:function(error,e2,e3){ 
       $(".statusaddpost").html('<li>Error :</li>'); 
       $(".statusaddpost").append('<li>'+error+'--'+e2+'--'+e3+'</li>'); 

      } 

     }); 
    } 

} 

添加与更新部分(HTML结构和过程)完全相同的部分。只是SQL部分是不同的。添加部分不会引发任何错误。

另外.htaccess文件由压缩和杠杆代码组成。

我在等你的想法!感谢您的阅读...

回答

0

我不明白问题是什么,但我解决了我的问题。首先,我停用了Apache mod_security(如服务器防火墙),但无效。然后我做了一个简单的编码和解码系统。在AJAX之前,我将其替换为普通字符串。 JQuery replace()

<iframe src="https://www.youtube.com/embed/randomnumbers"></iframe> 

to 

youtubevideo/randomnumbers 

然后AJAX发送数据到addpostup.php没有错误。在更新记录之前,我将其替换为原始字符串。 PHP str_replace()

youtubevideo/randomnumbers 

to 

<iframe src="https://www.youtube.com/embed/randomnumbers"></iframe> 

就是这样。