【问题标题】:Trigger an INSERT query when mailto: or tel: links are clicked单击 mailto: 或 tel: 链接时触发 INSERT 查询
【发布时间】:2015-06-05 14:19:38
【问题描述】:

我有一个 php 页面,它是围绕移动功能设计的,并从搜索条件加载信息,在页面上收集信息,然后当页面打开以记录访问并完美运行时,该信息会自动发布到数据库中,这是代码:

$mysqli = new mysqli($servername, $username, $password, $dbname);
$stmt = $mysqli->prepare("INSERT INTO `analytics_scans` (`ip_address`, `property_id`, `address`, `town`, `agent_name`, `office`) VALUES (?,?,?,?,?,?)");
$stmt->bind_param('sissss', $_SERVER['REMOTE_ADDR'], $id, $address, $town,     $agent, $office);
$stmt->execute();

在此页面上有 3 个“按钮/图像”呼叫、邮件和共享我想要做的是将这些事件完全按照上面的代码记录到 3 个单独的表中,而无需离开页面,我无法重新加载它,因为它将记录进一步的页面访问。 我无法复制显示的表格并指向其他表格,因为这是它必须记录的点击。

理想情况下,像 onClick 函数这样的解决方案将是解决方案,但我确信不离开页面是不可能的。

感谢任何帮助。

【问题讨论】:

  • OnClick 返回 False 时不会离开页面

标签: javascript php mobile mysqli


【解决方案1】:

您可以使用 Ajax(例如使用 jQuery)。

例子:

<a href="mailto:xxx@xxx.de" onclick="return javascript:log('mail_clicked');">Write email</a>
<a href="#" onclick="return javascript:log('share_clicked');">Share</a>

在 jQuery 中:

function log(action) {
    $.get('./log.php?action=' + action);
    return true;
}

在log.php中:

<?php

$db = new MySQLi(...);
if($_GET['action'] == "mail_clicked")
    $db->query("INSERT INTO `mail_clicked` ...");
else if($_GET['action'] == "share_clicked")
    $db->query("INSERT INTO `share_clicked` ...");

?>

【讨论】:

  • 嗨@Richard,感谢您抽出宝贵的时间,所以我是否正确的是,此示例将使用 log.php 来处理查询并返回页面(实际上并没有离开它),但仍然是电话:命令将拨打号码或 mailto: 命令将打开邮件客户端?
  • @IanPither:是的,它会在点击时调用log() 函数,它会向文件(在本例中为log.php)发出GET 请求。此文件处理操作日志。完成后,将返回 true 并调用链接。请注意,这当然只适用于激活的 JavaScript。 (如果您只想向激活 JavaScript 的用户显示链接,您可以使用 document.write 作为链接。请注意,您不能确定该链接是否被没有点击 - 绕过为有经验的用户记录。因此,它不适用于安全关键应用程序。)
  • 感谢@Richard 一个非常彻底的回答,非常有帮助,我会实施你的建议,希望它能解决我的头痛。
  • @IanPither:没问题。如果是这样,请不要犹豫,将我的答案标记为解决方案:-)
猜你喜欢
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
  • 2020-02-04
  • 2012-06-18
相关资源
最近更新 更多