0

OKに、これは私がしばらく前に尋ねた質問に関連しています。クライアントの要求ごとに、ユーザーが既に入力してSharpSpringに配置されている場合、フォームは自動的に表示されません。もともと、私はJavaScriptを使ってフォームを成功裏に提出したときにクッキーを作成していました。しかし、最新の懸案事項は、クッキーが特定のデバイスやブラウザにのみ登録され、ユーザーはいつでもクッキーをクリアできるため、効果的ではないということです。SharpSpringユーザーが(クッキーに頼ることなく)フォームに記入した場合は自動的に表示されてからフォームを防ぐ

基本的には、ユーザーがCookieに依存することなくSharpSpring(別のドメイン)に登録されている場合、フォームが自動的に表示されないようにすることが望ましいです。

誰かがこのような試みをしたことがありますか。ユーザーが別のドメインにフォームを送信したかどうかを確認していますか?参考のため

、ここで私が設定しているフォームのコードは次のとおりです。

<?php 
/* 
Plugin Name: SharpSpring Form Plugin 
Description: A custom form plugin that is SharpSpring-compatible and uses HTML, CSS, jQuery, and AJAX 
Version: 1.0 
*/ 
define('SSCFURL', WP_PLUGIN_URL . "/" . dirname(plugin_basename(__FILE__))); 

define('SSCFPATH', WP_PLUGIN_DIR . "/" . dirname(plugin_basename(__FILE__))); 


function sharpspringform_enqueuescripts() 
{ 
    wp_enqueue_script('jquery-src', SSCFURL . '/js/jquery.js', array('jquery')); 
    wp_enqueue_script('jquery-ui', SSCFURL . '/js/jquery-ui.js', array('jquery')); 
    wp_enqueue_script('boootstrap', SSCFURL . '/js/bootstrap.js', array('jquery')); 

    wp_localize_script('sharpspringform', 'sharpspringformajax', array('ajaxurl' => admin_url('admin-ajax.php'))); 

} 

add_action('wp_enqueue_scripts', 'sharpspringform_enqueuescripts'); 

function sharpspringform_show_form() 

{ 
    wp_enqueue_style('boilerplate', SSCFURL.'/css/boilerplate.css'); 
    wp_enqueue_style('bootstrapcss', SSCFURL.'/css/bootstrap.css'); 
    wp_enqueue_style('bookregistration', SSCFURL.'/css/Book-Registration.css'); 
    wp_enqueue_style('formstyles', SSCFURL.'/css/styles.css'); 
    ?> 
    <div class="mobile-view" style="right: 51px;"> 
     <a class="mobile-btn"> 
      <span class="glyphicon glyphicon-arrow-left icon-arrow-mobile mobile-form-btn"></span> 
     </a> 
    </div> 
    <div class="slider register-photo"> 
     <div class="form-inner"> 
      <div class="form-container"> 
       <form method="post" enctype="multipart/form-data" class="signupForm" id="browserHangFormPV"> 
        <a class="sidebar"> 
         <span class="glyphicon glyphicon-arrow-left icon-arrow arrow"></span> 
        </a> 
        <a class="closeBtn"> 
         <span class="glyphicon glyphicon-remove"></span> 
        </a> 

        <h2 class="text-center black">Sign up for our newsletter.</h2> 

        <p class="errors-container light">Please fill in the required fields.</p> 

        <div class="success">Thank you for signing up!</div> 
        <div class="form-field-content"> 
         <div class="form-group"> 
          <input class="form-control FirstNameTxt" type="text" name="first_name" placeholder="*First Name" 
            autofocus=""> 
         </div> 
         <div class="form-group"> 
          <input class="form-control LastNameTxt" type="text" name="last_name" placeholder="*Last Name" 
            autofocus=""> 
         </div> 
         <div class="form-group"> 
          <input class="form-control EmailTxt" type="email" name="email" placeholder="*Email" 
            autofocus=""> 
         </div> 
         <div class="form-group"> 
          <input class="form-control CompanyTxt" type="text" name="company" placeholder="*Company" 
            autofocus=""> 
         </div> 
         <div class="form-group submit-button"> 
          <button class="btn btn-primary btn-block button-submit" type="button">SIGN ME UP</button> 
          <img src="/wp-content/plugins/sharpspring-form/img/ajax-loader.gif" class="progress" alt="Submitting..."> 
         </div> 
        </div> 
        <br/> 
        <div class="privacy-link"> 
         <a href="[privacy policy link]" class="already" target="_blank"><span 
           class="glyphicon glyphicon-lock icon-lock"></span>We will never share your information.</a> 
        </div> 
       </form> 
        <input type="hidden" id="gatewayEmbedID" value="<?php echo get_option('pv_signup_sharpspring_ID'); ?>" /> 
        <script type="text/javascript"> 
         var embedID = document.getElementById("gatewayEmbedID").value; 
         var __ss_noform = __ss_noform || []; 
         __ss_noform.push(['baseURI', 'https://app-3QNAHNE212.marketingautomation.services/webforms/receivePostback/[redacted]']); 
         __ss_noform.push(['form', 'browserHangFormPV', embedID]); 
         __ss_noform.push(['submitType', 'manual']); 

        </script> 
        <script type="text/javascript" src="https://koi-3QNAHNE212.marketingautomation.services/client/noform.js?ver=1.24" ></script> 

      </div> 
     </div> 
    </div> 

<?php 
} 

function sharpspringform_shortcode_func($atts) 
{ 
    ob_start(); 
    sharpspringform_show_form(); 
    $output = ob_get_contents(); 
    ob_end_clean(); 
    return $output; 
} 
add_shortcode('sharpspringform', 'sharpspringform_shortcode_func'); 

とフォーム送信コードは、JSを使用してクッキーを生成します。

; 
(function ($) { 
    $(document).ready(function() { 
     var successMessage = $('.success'); 
     var error = $('.errors-container'); 
     var sharpSpringID = $('#gatewayEmbedID').val(); 
     var submitbtn = $('.button-submit'); 
     var SubmitProgress = $('img.progress'); 

     var formdata = {}; 

     function setCookie(cname, cvalue, exdays) { 
      var d = new Date(); 
      d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); 
      var expires = "expires=" + d.toGMTString(); 
      document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 
     } 

     submitbtn.click(function (e) { 
      resetErrors(); 
      postForm(); 
     }); 

     function resetErrors() { 
      $('.signupForm input').removeClass('error-field'); 
     } 

     function postForm() { 
      $.each($('.signupForm input'), function (i, v) { 
       if (v.type !== 'submit') { 
        formdata[v.name] = v.value; 
       } 
      }); 

      submitbtn.hide(); 
      error.hide(); 
      SubmitProgress.show(); 

      $.ajax({ 
       type: "POST", 
       data: formdata, 
       url: '/wp-content/plugins/sharpspring-form/sharpsring-form-submission.php', 
       dataType: "json" 
      }).done(function (response) { 
       submitbtn.show(); 
       SubmitProgress.hide(); 
       if (response.errors) { 
        error.show(); 
        var errors = response.errors; 
        errors.forEach(function (error) { 
         $('input[name="' + error + '"]').addClass('error-field'); 
        }) 
       } 

       else { 
        __ss_noform.push(['submit', null, sharpSpringID]); 
        setCookie('SignupSuccess', 'NewsletterSignup', 3650); 
        $('#browserHangFormPV')[0].reset(); 
        $('.form-field-content').hide(); 
        successMessage.show(); 
        $('.button-submit').html("Submitted"); 
       } 

      }); 
     } 
    }); 
}(jQuery)); 

スライディングフォームを設定jQueryのコードアニメーション、ポップアップ機能、およびフォームの送信に成功したときに作成されたJS Cookieの存在を確認します:

jQuery.noConflict(); 

(function ($) { 

    $(document).ready(function() { 
    //This function checks if we are in mobile view or not to determine the 
    //UI behavior of the form. 
     checkCookie(); 
     window.onload = checkWindowSize(); 

     var arrowicon = $(".arrow"); 
     var overlay = $("#overlay"); 
     var slidingDiv = $(".slider"); 
     var closeBtn = $(".closeBtn"); 
     var mobileBtn = $(".mobile-btn"); 

    //When the page loads, check the screen size. 
    //If the screen size is less than 768px, you want to get the function 
    //that opens the form as a popup in the center of the screen 
    //Otherwise, you want it to be a slide-out animation from the right side 

     function checkWindowSize() { 
      if ($(window).width() <= 768) { 
       //get function to open form at center of screen 
       if(sessionStorage["PopupShown"] != 'yes' && !checkCookie()){ 
        setTimeout(formModal, 5000); 
        function formModal() { 
         slidingDiv.addClass("showForm") 
         overlay.addClass("showOverlay"); 
         overlay.removeClass('hideOverlay'); 
         mobileBtn.addClass("hideBtn"); 
        } 
       } 
      } 
      else { 
       //when we aren't in mobile view, let's just have the form slide out from the right 
       if(sessionStorage["PopupShown"] != 'yes' && !checkCookie()){ 
        setTimeout(slideOut, 5000); 
        function slideOut() { 
         slidingDiv.animate({'right': '-20px'}).addClass('open'); 
         arrowicon.addClass("glyphicon-arrow-right"); 
         arrowicon.removeClass("glyphicon-arrow-left"); 
         overlay.addClass("showOverlay"); 
         overlay.removeClass("hideOverlay"); 
        } 
       } 
      } 
     } 

     function getCookie(cname) { 
      var name = cname + "="; 
      var ca = document.cookie.split(';'); 
      for(var i = 0; i < ca.length; i++) { 
       var c = ca[i]; 
       while (c.charAt(0) == ' ') { 
        c = c.substring(1); 
       } 
       if (c.indexOf(name) == 0) { 
        return c.substring(name.length, c.length); 
       } 
      } 
      return ""; 
     } 

     function checkCookie() { 
      var user = getCookie("SignupSuccess"); 
      if (user != "") { 
       return true; 
      } else { 
       return false; 
      } 
     } 

     /* 
     ------------------------------------------------------------ 
     Functions to open/close form like a modal in center of screen in mobile view 
     ------------------------------------------------------------ 
     */ 

     mobileBtn.click(function() { 
      slidingDiv.addClass("showForm"); 
      slidingDiv.removeClass("hideForm"); 
      overlay.addClass("showOverlay"); 
      overlay.removeClass('hideOverlay'); 
      mobileBtn.addClass("hideBtn"); 
     }); 
     closeBtn.click(function() { 
      slidingDiv.addClass("hideForm"); 
      slidingDiv.removeClass("showForm"); 
      overlay.removeClass("showOverlay"); 
      overlay.addClass("hideOverlay") 
      mobileBtn.removeClass("hideBtn"); 
      sessionStorage["PopupShown"] = 'yes'; //Save in the sessionStorage if the modal has been shown 
     }); 


     /* 
     ------------------------------------------------------------ 
     Function to slide the sidebar form out/in 
     ------------------------------------------------------------ 
     */ 
     arrowicon.click(function() { 
      if (slidingDiv.hasClass('open')) { 
       slidingDiv.animate({'right': '-390px'}, 200).removeClass('open'); 
       arrowicon.addClass("glyphicon-arrow-left"); 
       arrowicon.removeClass("glyphicon-arrow-right"); 
       overlay.removeClass("showOverlay"); 
       overlay.addClass("hideOverlay"); 
       sessionStorage["PopupShown"] = 'yes'; //Save in the sessionStorage if the modal has been shown 

      } else { 
       slidingDiv.animate({'right': '-20px'}, 200).addClass('open'); 
       arrowicon.addClass("glyphicon-arrow-right"); 
       arrowicon.removeClass("glyphicon-arrow-left"); 
       overlay.addClass("showOverlay"); 
       overlay.removeClass("hideOverlay"); 
      } 

     }); 

    }); 


}(jQuery)); 

答えて

0

ここでは、SilverStripeではなくWordPressのコードが混乱していますが、使用しているプラ​​ットフォームに問題があるかどうかは不明です。

基本的には、クッキーよりも堅牢なものをお望みなら、データベースに登録を保存し、そこにチェックインする必要があります(登録フォームがあなたのサイトにあると仮定します)。これは、サイト上のフォーム提出を処理し、データをリモートサイトに送信して応答をチェックし、すべてがうまくいく場合、ユーザーが表示するかどうかを決定するときに確認できるデータベースにリモートで登録したという事実を保存することを意味しますフォームかどうか、次回。

登録フォームにアクセスできない場合や、サイトとは独立して登録を行う場合は、リモートサイトで照会できるAPIが必要です登録されています。

a sharpspring APIが見つかりましたが、関連性があるかどうかはわかりません。

+0

技術的には、このフォームはWordPressサイトとSilverStripeサイトに表示され、機能するように/まったく同じに見えます。 –

関連する問題