【发布时间】:2016-01-08 13:51:05
【问题描述】:
我的一个博客使用所见即所得的文本编辑器来添加内容。两个多月来,我一直在使用 TinyMCE 文本编辑器,没有任何问题。今天早些时候,当我打算在博客上发布一篇文章时,我注意到一个奇怪的问题 -
无论我通过编辑器指定的任何对齐属性,都会被编辑器作为一个整体忽略,导致它以居中对齐的方式发布所有内容。
更重要的是,我的文章中没有显示任何图像或链接。
每次使用字符 ' 或 " 时,它们前面都有一个 \
仔细观察后发现这是没有显示图像的原因。每个指定的链接都会在发布时自动修改如下 -
原文链接
https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-xtf1/v/t1.0-9/11986487_415295328664449_5126694793652411223_n.jpg?oh=2e74053db8bc3b2199d83bf70e20bb66&oe=56D18294&__gda__=1456294351_feed673783e94a2b2581dc30cb848aa9
修改后的链接
\"\\"https:/fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-xtf1/v/t1.0-9/11986487_415295328664449_5126694793652411223_n.jpg?oh=2e74053db8bc3b2199d83bf70e20bb66&oe=56D18294&__gda__=1456294351_feed673783e94a2b2581dc30cb848aa9\\"\" alt=\"\"
我尝试将我的文本编辑器更改为 CKEditor 的,但无济于事。负责添加文章的代码似乎没有缺陷,我完全糊涂了。它看起来像这样 -
<!DOCTYPE html>
<html>
<head><!-- CDN hosted by Cachefly -->
<a href='login_editor.php'>BACK</a>
<a href='index.php'>SITE HOME </a>
<title>Create an Article </title>
<script src="tinymce/tinymce.min.js"></script>
<script src="ckeditor/ckeditor.js"></script>
<script>tinymce.init({selector:'#content,#summary',
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
});</script>
</head>
<body background='hsw.jpg'>
<center>
<?php
require 'database.php';
session_start();
echo $_SESSION['eid'];
if(!isset($_SESSION['email']))
echo "<script>window.location='login_editor.php'</script>";
$a = $_SESSION['eid'];
if($_SESSION['eid']==null)
echo "<script>window.location='login_editor.php'</script>";
if(isset($_POST['add']))
{
$email = $_SESSION['email'];
$eid=$_SESSION['eid'];
echo $eid;
$title = $_POST['titleofarticle'];
$titleimage=$_POST['titleimage'];
$titleimage = "<img src='".$titleimage."'>";
$summary = $_POST['summary'];
$article = $_POST['content'];
$pdo = Database::connect();
echo $eid;
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO editorials (eid,title,titleimage,summary,content) values(?, ?, ?, ?, ?)";
$q = $pdo->prepare($sql);
$q->execute(array($eid,$title,$titleimage,$summary,$article));
Database::disconnect();
echo "Article Submitted! Reloading this page in 5 sec.<script>setTimeout(function(){
window.location='login_editor.php';
}, 5000);</script>";
}
else
{
?>
<form method="post" action="<?php $_PHP_SELF ?>">
<h3><font face="Small Fonts">Article Title</h3> <br>
<input name="titleofarticle" type="text" id="titleofarticle" required size="100"><br><br>
<h3><font face="Small Fonts">Article Title Image</h3> <br>
<input name="titleimage" type="text" id="titleimage" placeholder="Image URL" required size="100"> <br><br>
<h3><font face="Small Fonts">Article Description - Appears Below The Title Image </h3> <br>
<textarea name="summary" id="summary" rows="10" cols="80"></textarea><br>
<script>
// Replace the <textarea id="editor1"> with a CKEditor
// instance, using default configuration.
CKEDITOR.replace( 'summary' );
</script>
<h3><font face="Small Fonts">Article Content</h3> <br>
<textarea name="content" id="content" rows="10" cols="80"></textarea>
<script>
// Replace the <textarea id="editor1"> with a CKEditor
// instance, using default configuration.
CKEDITOR.replace( 'content' );
</script>
<input name="add" type="submit" id="add" value="Submit">
</form>
<?php
}
?>
<hr><br>
<a href='logout_editor.php'> LOGOUT </a>
</body>
</html>
即使我尝试更新现有文章也会出现同样的问题,使曾经完美的旧文章变得更糟。更新文章的代码显示为 -
<?php
session_start();
if(!isset($_SESSION['email']))
echo "<script>window.location='login_editor.php'</script>";
$id=$_GET['id'];
$eid=$_GET['eid'];
if($_SESSION['eid']!=$eid)
echo "<script>window.location='login_editor.php'</script>";
require 'database.php';
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM editorials where id = ?";
$q = $pdo->prepare($sql);
$q->execute(array($id));
$data = $q->fetch(PDO::FETCH_ASSOC);
$checkeid = $data['eid'];
if($_SESSION['eid']!=$checkeid)
echo "<script>window.location='login_editor.php'</script>";
Database::disconnect();
?>
<?php
if ( !empty($_POST)) {
// keep track post values
$title = $_POST['title'];
$titleimage_a = $_POST['titleimagelink'];
$titleimage= "<img src='".$titleimage_a."'>";
$summary = $_POST['summary'];
$content = $_POST['content'];
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "UPDATE editorials set title = ?,titleimage = ?, summary = ?, content = ? WHERE id = ? AND eid=?";
$q = $pdo->prepare($sql);
$q->execute(array($title,$titleimage,$summary,$content,$id,$eid));
Database::disconnect();
header("Location: login_editor.php");
}
else {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM editorials where id = ?";
$q = $pdo->prepare($sql);
$q->execute(array($id));
$data = $q->fetch(PDO::FETCH_ASSOC);
$title = $data['title'];
$titleimage = $data['titleimage'];
$titleimagelink_temp=substr($titleimage,10);
$titleimagelink=substr($titleimagelink_temp,0,-2);
$summary = $data['summary'];
$content = $data['content'];
Database::disconnect();
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="shortcut icon" type="image/x-icon" href="1442008266.ico">
<title>Update</title>
<meta charset="utf-8">
<script src="js/jquery.js"></script>
<link href="css/bootstrap.min.css" rel="stylesheet">
<script src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="http://tinymce.cachefly.net/4.2/tinymce.min.js"></script>
<script src="ckeditor/ckeditor.js"></script>
<script type="text/javascript">
tinymce.init({
selector: "#content,#summary",
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
});
</script>
</head>
<body background='hsw.jpg'>
<div class="container">
<div class="span10 offset1">
<div class="row">
<h3>Update Article</h3>
</div>
<form class="form-horizontal" action="editorupdate.php?id=<?php echo $id?>&eid=<?php echo $eid?>" method="post">
<div class="control-group">
<label class="control-label">Title :</label>
<div class="controls">
<input name="title" type="text" value="<?php echo $title?>" size="100">
</div>
</div>
<div class="control-group">
<label class="control-label">Title Image:</label>
<div class="controls">
<input name="titleimagelink" type="text" value="<?php echo $titleimagelink?>" size="100">
</div>
</div>
<div class="control-group">
<label class="control-label">Summary :</label>
<div class="controls">
<textarea name="summary" id="summary"><?php echo $summary?>
</textarea>
<script>
// Replace the <textarea id="editor1"> with a CKEditor
// instance, using default configuration.
CKEDITOR.replace( 'summary' );
</script>
</div>
</div>
<div class="control-group">
<label class="control-label">Content :</label>
<div class="controls">
<textarea name="content" id="content"><?php echo $content?>
</textarea>
<script>
// Replace the <textarea id="editor1"> with a CKEditor
// instance, using default configuration.
CKEDITOR.replace( 'content' );
</script>
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-success">Update</button>
<a class="btn" href="login_editor.php">Back</a>
</div>
</form>
</div>
</div> <!-- /container -->
</body>
</html>
因此,一篇应该显示为这样的文章 -
显示为 -
我已经筋疲力尽地试图找出原因。恢复到较旧的备份,使用 Google 工具扫描我的网站以查找恶意软件,但无济于事。尽管我的域名托管服务商确实说他们在某处检测到恶意代码,并建议我尝试使用 200 美元的恶意软件删除工具。在我抱怨了一下之后,另一个技术。支持代表调查了这个问题并说 -
这似乎无关紧要。这可能是什么原因?
【问题讨论】:
-
使用
htmlentities()php.net/manual/en/function.htmlentities.php -
感谢您回复佩德罗,但请您详细说明一下,因为链接解释不够充分。我应该在哪里插入函数,为什么?
-
<?php $_PHP_SELF ?>应该是<?php echo $_SERVER['PHP_SELF'];?>。 -
@chris85 刚试过的朋友,没有什么不同。
-
@jeroen 谢谢。在你上一篇文章之后不久,我花时间研究了魔法行情,很快发现我的服务器有你提到的属性。我通过访问 php.ini 配置关闭了它们,瞧!这很烦人,因为我整天都在与域托管服务的技术团队交谈,他们所能建议的只是尝试一个 200 美元的软件包来清理我的网站上的恶意软件——这显然是由他们服务器上的一个属性引起的。无论如何,感谢您的帮助。我现在要让自己成为一名体面的开发人员,并获得一些体面的钱。
标签: php html ckeditor wysiwyg text-editor