【问题标题】:PHP/HTML : Getting user input for google calendar embed codePHP/HTML:获取谷歌日历嵌入代码的用户输入
【发布时间】:2020-02-20 06:08:08
【问题描述】:

我有一个自定义 WP 插件,其中有一个选项可以在用户帐户下输入谷歌日历嵌入代码。我遇到的问题是,无论是文本区域还是文本类型输入,值都被删除,我无法访问代码。他们都出现空白/空。理想情况下,我想将此嵌入代码视为字符串,而不是代码。

我看到谷歌日历网站上正在生成嵌入代码,所以我知道它可以完成。如何让用户将此代码从 google 剪切并粘贴到他们在此网站上的帐户中?

我尝试的是非常简单的代码。

<?php
if(isset($_POST['SEND_INFO']))
  {
  $googleembed1 = sanitize_text_field($_POST["textareatype"]);    <===== does not work
  $googleembed2 = sanitize_text_field($_POST["texttype"]);        <===== does not work

  // PRINT OUT <IFRAME> EMBED CODE AS TEXT
   DebugLog("TextArea with Sanitize: " . (string)$googleembed1);
   DebugLog("Text Input with Sanitize: " . (string)$googleembed2);
  }
?>

<form enctype="multipart/form-data" action="" method="post" >
<textarea id="textareatype" name="textareatype"></textarea>
<input type="text" id="texttype" name="texttype">
<input type="submit" id="SEND_INFO name="SEND_INFO" value="SAVE CHANGES"/>
</form>
LOGGED RESULTS:
TextArea with Sanitize:
Text Input with Sanitize:

我错过了什么?

【问题讨论】:

  • 您是否尝试通过 iframe 执行此操作?你在哪里可以运行这段代码?哪一条路?在 WordPress Admin 的某些特定位置,您可以创建不同的方式或注册表单...
  • 我试图通过一个表单来做到这一点,其中一个字段(textarea)应包含一个
  • 解决了字符串方面的问题,

标签: php html wordpress iframe plugins


【解决方案1】:

我找到了解决方案,但它确实需要一些物理比较,因为您不能使用 sanitize_text_field() 调用,通常在 WP 环境中用于保护数据输入。 这是解决方案:

<?php
if(isset($_POST['SEND_INFO']))
  {
  $googlecalendar = stripslashes($_POST["textareatype"]);    
     $googlecalendar = str_replace("<iframe src=","",$googlecalendar);
     $googlecalendar = str_replace("<iframesrc=","",$googlecalendar);
     $googlecalendar = str_replace("></iframe>","",$googlecalendar);
     $googlecalendar = filter_var($googlecalendar, FILTER_SANITIZE_URL);

     if( strstr($googlecalendar, "<script")) 
        $googlecalendar = "";


     if( strstr($googlecalendar, "</script>"))
        $googlecalendar = "";


     if( strstr($googlecalendar, "<?php")) 
        $googlecalendar = "";

     if( strstr($googlecalendar, "?>")) 
        $googlecalendar = "";

     if( strstr($googlecalendar, ")") ||  strstr($googlecalendar, "(")) 
        $googlecalendar = "";        

     if( strstr($googlecalendar, "SELECT") ||  strstr($googlecalendar, "select")) 
        $googlecalendar = "";   

     if(strlen($googlecalendar)>0)
       {
       if( !strstr($googlecalendar, "https://calendar.google.com/calendar/embed") ) 
        $googlecalendar = "";   
       }
  }
?>

<form enctype="multipart/form-data" action="" method="post" >
<textarea id="textareatype" name="textareatype"></textarea>
<input type="submit" id="SEND_INFO name="SEND_INFO" value="SAVE CHANGES"/>
</form>

欢迎提出其他独立检查的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2016-04-05
    • 2020-06-01
    • 1970-01-01
    相关资源
    最近更新 更多