PHP / HTML: получение пользовательского ввода для кода встраивания в календарь Google - PullRequest
0 голосов
/ 24 октября 2019

У меня есть собственный плагин WP, где есть возможность ввести встроенный код календаря Google под учетной записью пользователя. Проблема, с которой я сталкиваюсь, заключается в том, удаляется ли текстовое поле ИЛИ текстовый тип ввода, значение и я не могу получить доступ к коду. Они все приходят пустыми / пустыми. В идеале я хотел бы рассматривать этот код встраивания как строку, а не код.

Я вижу, что код встраивания создается на веб-сайте календаря Google, поэтому я знаю, что это можно сделать. Как я могу заставить пользователя вырезать и вставить этот код из 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:

Чего мне не хватает?

1 Ответ

1 голос
/ 24 октября 2019

Я нашел решение, но оно требует некоторого физического сравнения, так как вы не можете использовать вызов 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>

Предложение для других вещей для самостоятельной проверки приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...