【问题标题】:PHP - Submit form with HTML tagsPHP - 提交带有 HTML 标签的表单
【发布时间】:2013-07-12 22:08:36
【问题描述】:

我需要使用 PHP 提交一个表单,将其发送到 CouchBase 并将其与包含的 HTML 标签一起存储在那里(<p> 标签等等,只是基本的 HTML)。我正在使用 CLEditor 创建 HTML 标签,供人们输入到文本字段中,这样当有人在表单中输入粗体文本时,它看起来像这样:

<span style="font-size: large;">Highlights of what your hotel has to offer.</span>

所以我开始使用 action 属性通过表单发送信息,但是如何通过包含 HTML 标记的方式发送该信息?

感谢您的帮助!

更新:

想我只是做一个 cURL 请求并调用该字段。但是我用什么来调用该字段中的信息来提取原始 html?

PHP:

<?php 
session_start();
    $curl = curl_init();
    $url =  $_SESSION['extranetRequest'] . '?action=sendDesc&guid=' . $_SESSION['guid'] . '&username=' . $_SESSION['u_name'];
        $curl = curl_init(); 
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_POSTFIELDS,     $_POST[''] ); 
        curl_setopt($curl, CURLOPT_HTTPHEADER,     array('Content-Type: text/plain')); 
        $content = curl_exec($curl);
        if (curl_errno($curl)) {
            print curl_error($curl);
        } else {
            curl_close($curl);
        }
?>

更新 2:

好的,所以我对自己在做什么有了更好的了解。我正在使用 CLEditor 来真正允许人们编辑自己的文本以及不提交以在其他地方查看的内容。但是现在我无法从中获取要发布的数据:

HTML:

<form action="assets/php/sendHTML.php" name="hotelDescForm" id="hotelDesc" method="POST" class="hotelDesc">
                <div class="row push-down">
                    <div class="span4">
                        <h1 style="font-size: 24px;"><span class="orange-title">hotel description</span></h1>
                            <textarea class="textarea" rows="8" style="width: 900px;" name="hotelDesc" class="hotelDesc" id="hotelDesc" value="">Text Is Here. Start working.</textarea>
                    </div>
                </div>
                <div class="row">
                    <br>
                        <button type="submit" name="submit" id="update" class="btn btn-success btn-large"><i id="update-button" class="icon-refresh"></i> Update Information</button>
                    </form>

jQuery 只是调用 textarea 来使用 CLEditor 配置文本框。

PHP:

    <?php 
session_start();
  $data['data'] = $_POST['demo'];
  $desc = json_encode($data);
    $curl = curl_init();
    $url =  $_SESSION['extranetRequest'] . '?action=sendDesc&desc='. var_dump($_POST) .'&guid=' . $_SESSION['guid'] . '&username=' . $_SESSION['u_name'];
        $curl = curl_init(); 
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_POSTFIELDS,     var_dump($_POST) ); 
        curl_setopt($curl, CURLOPT_HTTPHEADER,     array('Content-Type: text/plain')); 
        $content = curl_exec($curl);
        if (curl_errno($curl)) {
            print curl_error($curl);
            echo "<script language='javascript'>\n";
            echo "alert('Failed'); window.location.href='https://hotelmobidev.jvgames.com/profile';";
            echo "</script>\n";
        } else {
            curl_close($curl);
            echo "<script language='javascript'>\n";
            echo "alert('Worked'); window.location.href='https://hotelmobidev.jvgames.com/profile';";
            echo "</script>\n";
        }
?>

CLEditor 的作用是创建一个 iFrame,所以我需要一种方法来解决这个问题并将数据发布到文本框中。谢谢大家!

【问题讨论】:

  • 提交 html 标记与任何其他内容没有什么特别的原因。如果您在某个时候过滤提交,那将删除 html 标记 - 但是,您没有发布任何相关代码,所以我们不能肯定地说。
  • 我需要它与 HTML 标记一起发送,这就是事情,没有太多代码可以显示。我想知道我是否应该基本上卷曲数据以获得对数据库的完整描述。我不能使用 url 请求,因为 url 会很大。我只是在寻找有关发送数据的帮助(:

标签: php html forms tags textarea


【解决方案1】:

CURLOPT_POSTFIELDS 调用是您根据 PHP 手册页执行此操作的位置。 (http://php.net/manual/en/function.curl-setopt.php)。

CURLOPT_POSTFIELDS

要在 HTTP“POST”操作中发布的完整数据。要发布文件, 在文件名前面加上 @ 并使用完整路径。文件类型可以是 通过跟随文件名和类型中的类型显式指定 格式“;类型=mimetype”。此参数可以作为 urlencoded 字符串,如 'para1=val1&para2=val2&...' 或作为数组 字段名称作为键,字段数据作为值。如果 value 是一个数组, Content-Type 标头将设置为 multipart/form-data。从 PHP 开始 5.2.0,如果文件以@前缀传递给此选项,则 value 必须是一个数组。自 PHP 5.5.0 起,@ 前缀已弃用,文件 可以使用 CURLFile 发送。

你会采取:

$field = '<span style="font-size: large;">Highlights of what your hotel has to offer.</span>';

然后在您的 CURLOPT_POSTFIELDS 中将是:

curl_setopt($ch, CURLOPT_POSTFIELDS, $field);

问题是您可能需要确保您的 HTML 被正确转义。例如 & = & 之类的。

【讨论】:

  • 如果我使用像CKEditor这样的东西呢?我将如何处理所有这些数据。
  • 我不确定。我只是习惯于将它与参数等简单的东西一起使用。
【解决方案2】:

好的,我想通了。我决定展示这个以防其他人对 CKEditor 有这个问题。我所做的只是将数据发送到带有标签的服务器。在 PHP 中使用 cURL 语句。

PHP:

<?php 
session_start();
  $editor_data = $_POST[ 'editor1' ];
  $data['data'] = $_POST[ 'editor1' ];
    $curl = curl_init();
    $url =  $_SESSION['extranetRequest'] . '?action=sendDesc&guid=' . $_SESSION['guid'] . '&username=' . $_SESSION['u_name'];
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data );
        $content = curl_exec($curl);
        if (curl_errno($curl)) {
            print curl_error($curl);
        } else {
            curl_close($curl);

        }

?>

在 HTML 方面...

<form action="assets/php/sendHTML.php" name="hotelDescForm" id="hotelDesc" method="POST" class="hotelDesc">
                    <div class="row push-down">
                        <div class="span4">
                            <h1 style="font-size: 24px;"><span class="orange-title">hotel description</span></h1>
                                <textarea name="editor1" style="width: 900px;" rows="8"></textarea>
                                <script>
                                    CKEDITOR.replace('editor1', {
                                        height: 300,
                                        width: 900
                                    });
                                </script>
                        </div>
                    </div>
                    <div class="row">
                        <br>
                            <button type="submit" name="submit" id="update" class="btn btn-success btn-large"><i id="update-button" class="icon-refresh"></i> Update Information</button>
                        </form>

如果你们对为什么这样做有任何疑问,请告诉我!再次感谢所有提供帮助的人!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    相关资源
    最近更新 更多