在 POST 中删除 HTML 标签

发布于 2024-10-19 08:11:56 字数 1494 浏览 2 评论 0原文

我正在研究 ckeditor 中编辑页面的预览功能。 在字段中进行任何更改后,我将发布正文以预览操作,然后将其保存到会话中。 之后我使用 GET 获取数据。 不幸的是,我发布的正文返回时没有任何 html 标签,因此我无法预览图像:[

这是一个预览操作:

public function previewAction() {
  if($_POST) {
    $id = rand(1, 100000);
    unset($_SESSION['preview']);
    if(isset($_POST['body'])) {
        $_SESSION['preview'][$id] = array( 'body'=> $_POST['body'] );
        echo $id;
        exit;
    }
    else {
        throw new Exception('Body not posted for preview');
    }
  }
  elseif($this->params['param1']) {
    $id = $this->params['param1'];
    $page = new page();
    $page->populate($_SESSION['preview'][$id]);
    $this->view->page = $page;
    $this->contentRender = 'index/page.php';
    $this->render = 'content_only.php';
  }
  else {
    exit;
  }

和 js 函数处理预览:

function updateSubmit(force) {
  if(timeout_id)
    clearTimeout(timeout_id);
  if(cke && ( (busy==false && update_needed == true) || force==true ) ) {
    timeout_id = setTimeout(function() {
    if(busy==false) {
        $.ajax({
          type: 'POST',
          url: '/index/preview/',
          data: {body: cke.getData()},
          success: function(data) {
            $.each(iframe, function() {
                $(this).attr('src', '/index/preview/'+data);
            });
            busy = false;
            update_needed = false;
          }
        }
        )
    }
    }
    , 200);
  }
}

提前感谢您的帮助。

I am working on preview feature of editting page in ckeditor.
After any changes in field I am POSTing body to preview action and then saving it to session.
After that I fetch data using GET.
Unfortunatelly the body I have post is returned without any html tags so I can't preview images:[

Here's an previewAction:

public function previewAction() {
  if($_POST) {
    $id = rand(1, 100000);
    unset($_SESSION['preview']);
    if(isset($_POST['body'])) {
        $_SESSION['preview'][$id] = array( 'body'=> $_POST['body'] );
        echo $id;
        exit;
    }
    else {
        throw new Exception('Body not posted for preview');
    }
  }
  elseif($this->params['param1']) {
    $id = $this->params['param1'];
    $page = new page();
    $page->populate($_SESSION['preview'][$id]);
    $this->view->page = $page;
    $this->contentRender = 'index/page.php';
    $this->render = 'content_only.php';
  }
  else {
    exit;
  }

And js function handling preview:

function updateSubmit(force) {
  if(timeout_id)
    clearTimeout(timeout_id);
  if(cke && ( (busy==false && update_needed == true) || force==true ) ) {
    timeout_id = setTimeout(function() {
    if(busy==false) {
        $.ajax({
          type: 'POST',
          url: '/index/preview/',
          data: {body: cke.getData()},
          success: function(data) {
            $.each(iframe, function() {
                $(this).attr('src', '/index/preview/'+data);
            });
            busy = false;
            update_needed = false;
          }
        }
        )
    }
    }
    , 200);
  }
}

Thanks in advance for help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浪菊怪哟 2024-10-26 08:11:56

检查cke.getData()函数是否没有删除标签。

或者在这个脚本之前的 PHP 中,你没有 strip_tags() 或其他东西。

Check if the cke.getData() function dont strip out the tags.

Or in PHP somewhere before this script you don't have strip_tags() or sth.

携余温的黄昏 2024-10-26 08:11:56

我觉得你做错了。不要使用 GET 获取数据,只需根据需要创建隐藏字段。
我认为您不需要在这里进行会话。

I feel like you are doing it wrong. Do not fetch the data using GET, just create hidden field if you need.
I don't think you need a SESSION here.

胡大本事 2024-10-26 08:11:56

cke.getData() 不会剥离标签。
会话在此脚本中不是必需的,但这不是问题。从 $_POST['body'] 读取后,Html 没有标签。

cke.getData() does not strip tags out.
Session is not necesery in this script, however it's not an issue. Html is without tags after readig from $_POST['body'].

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文