требование к контактной информации через 5 минут - PullRequest
0 голосов
/ 18 января 2012

У меня есть php-сайт, который клиент хотел бы потребовать от зрителя заполнить и отправить контактную форму после просмотра сайта в течение 5 минут.Информация не должна быть добавлена ​​в базу данных, просто отправлена ​​на их офис по электронной почте.Я создал форму, но не уверен, что лучше всего обработать всплывающее окно и сделать его обязательным, прежде чем продолжить просмотр сайта.

Ответы [ 3 ]

1 голос
/ 18 января 2012

Это может вам помочь;

PHP для страницы сайта

if (false === isset($_SESSION['startTime'])) {
     $_SESSION['formSubmitted'] = false;
     $_SESSION['startTime'] = time();
}

PHP для jqueryCheck.php;

$return = 0;

if (false == $_SESSION['formSubmitted']) {
    if ((time() - $_SESSION['startTime']) > 300) {
        $showForm = 1;
    }
} else {
    $return = 2;
}

echo $return;

PHP после отправки и проверки формы

$_SESSION['formSubmitted'] = true;

Jquery

var intervalId = setInterval(function(){
    $.ajax({ url: "jqueryCheck.php", success: function(showForm){
        switch (showForm) {
             case 0: //not yet at 5 mins and not submitted
             break;
             case 1:  //at 5 minutes no form submitted
                //code to show form
             break;
             case 2:  //form submitted
                 clearInterval ( intervalId );
             break; 
        }
    }});
}, 60000);
1 голос
/ 18 января 2012

Вы оказываете вашему клиенту значительную медвежью услугу, если вы не пытались отговорить его от этого. Если они хотят, чтобы люди не посещали сайт, им просто не следует его разрабатывать. Если они хотят, чтобы люди посещали его (или когда-либо возвращались), они даже не должны это учитывать.

При этом вы могли бы установить какой-то таймер, чтобы "заставить" всплывающее окно появляться, но многие блокировщики всплывающих окон справились бы с этим. Были бы способы обойти любую схему, подобную этой, независимо от того, как вы это делаете (куки, обслуживание другой страницы и т. Д.), Но если у вас нет чего-то невероятно уникального на этом сайте, читатели вашего клиента, вероятно, даже не будут беспокоиться с ними - они пойдут на сайт, который не был намеренно сломан.

Я бы предложил вашему клиенту вместо этого поставить в поле, где пользователи, которые хотят связаться, могут ввести адрес электронной почты. Это не будет раздражать ваших пользователей, но все же позволит вам получать информацию от тех, кто заинтересован.

0 голосов
/ 18 января 2012

Это простое решение без Javascript.

if (!isset($_SESSION['trial_end'])) {
    $_SESSION['trial_end'] = time() + 5 * 60;
}

// Check if trial has expired and we are not already on the form
if (time() > $_SESSION['trial_end'] && $_SERVER['REQUEST_URI'] !== '/form') {
  header('Location: /form');
  exit;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...