TinyMCEエディターがあります-その内容はAJAXによってアップロードされる必要があります。
明らかに、AJAXがパラメーターを送信するため、javascriptsのescape()関数を介してパラメーターをエスケープする必要があります。これは、AJAXパラメーターを壊さないようにするためです。フィールドはmysql_real_escape_string
PHP側で編集され、AJAXパラメーターのエスケープのみが必要です。
残念ながら、リンクと画像をエディターに追加して送信すると、画像とリンクのURLは次のように表示されます。
http://localhost:8888/%22../img/miscimages/hwo-american.gif/%22
コンテンツがユーザーに表示されるページ(製品ビューページ)では、データベースからの文字列が実行さurldecode()
れ、すべて%22
のエスケープ文字やその他のエスケープ文字が削除されます。このページにはjavascriptはありません。すべて、PHPで生成されているため、ではurldecode()
ありませんunescape()
。これを回避する方法はありますか?
コード:
AJAX送信
function update(){
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var response = xmlhttp.responseText;
alert(response);
window.location = 'admin-products.php';
}
}
var prodID=document.getElementById("editchoice").value;
var edittitle=escape(document.getElementById("editname").value);
var editcategory=document.getElementById("editcat").value;
var editcontent = escape(tinyMCE.get('editcontent').getContent());
var parameters= "prodID="+prodID+"&title="+edittitle+"&content="+editcontent+"&cat="+editcategory;
xmlhttp.open("POST", "../scr/editProduct.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(parameters);
}
PHPデータベース挿入
$prodID = $_POST['prodID'];
$title = urldecode(mysql_escape_string($_POST['title']));
$content = urldecode(mysql_escape_string($_POST['content']));
$category = $_POST['cat'];
echo $prodID . $title . $content . $category;
mysql_query("UPDATE product SET title='$title', content='$content', category_id='$category' WHERE id='$prodID'") or die("ERROR: ".mysql_error());
ページ上のPHP表示
/* Get Product from Alias */
$alias = $_GET['name'];
$product_selectProd = mysql_query("SELECT * FROM product WHERE alias='$alias'") or die("ERROR: ". mysql_error());
/* Sort Query Vars */
while($product_arrayProd = mysql_fetch_array($product_selectProd)){
$product_category = $product_arrayProd['category_id'];
$product_title = urldecode($product_arrayProd['title']);
$product_text = urldecode($product_arrayProd['content']);
$product_image = $product_arrayProd['main_image'];
$product_sub_image = $product_arrayProd['sub_image'];
/* Build the Product List */
$productDetail .= "<img src='$product_image' width='350' height='240' class='prod_image_left' /><img src='$category_image' width='350' height='240' class='prod_image_right' />";
$productDetail .= "<p> </p><h1>Fiddes $product_title</h1><hr />";
$productDetail .= "$product_text";
}