我有一个php网站,客户想要求查看者填写并提交一个联系形式后,查看该网站5分钟。信息不需要添加到数据库,只需发送到他们的办公室电子邮件即可。我已经创建了表单,但不确定处理弹出窗口的最佳方式,并在继续查看网站之前使其成为必需的。
发布于 2012-01-19 00:01:55
如果你没有试着说服你的客户不要这样做,你就是在对他们造成很大的伤害。如果他们不想让人们访问这个网站,他们就不应该开发它。如果他们想要人们访问它(或再回来),他们甚至不应该考虑这一点。
也就是说,您可以设置某种计时器来“强制”弹出窗口出现,但许多弹出窗口拦截器可以处理这一点。不管你怎么做(cookies,提供不同的页面,等等),都会有办法绕过这样的方案,但除非你在那个网站上有一些令人难以置信的独特之处,否则你客户的读者可能甚至不会为它们而烦恼--他们会去一个不是故意破坏的网站。
我会建议你的客户把他们放在一个框中,想要联系的用户可以输入电子邮件地址。这不会惹恼你的用户,但仍然可以让你从感兴趣的人那里获得线索。
发布于 2012-01-19 00:07:40
这可能会对你有所帮助;
网站页面的PHP
if (false === isset($_SESSION['startTime'])) {
$_SESSION['formSubmitted'] = false;
$_SESSION['startTime'] = time();
}用于jqueryCheck.php的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);发布于 2012-01-19 00:13:01
这是一个没有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;
}https://stackoverflow.com/questions/8912914
复制相似问题