我正在尝试找出一种方法来为企业进行一些网站跟踪。有没有办法将 PHP 代码添加到网页上的可点击链接中,以便当用户点击将他们带到不同页面的链接时,PHP 代码会在点击操作发生之前立即执行?那么像这样的东西会在链接到网站之前执行一些 PHP 代码吗? 堆栈溢出链接
7 回答
不,不是直接的。PHP 仅适用于服务器端代码。我建议您查看 Mixpanel、Kissmetrics 或 Google Analytics 之类的工具。
PHP 是一种服务器端脚本语言。因此,它不能在他们的浏览器中在客户端运行,因为所有处理都必须在服务器本身上完成。
您可以使用 Javascript 来实现您想要的功能。
在您的页面上,您可以执行以下操作:
<!-- In your page head -->
<script type="text/javascript">
function myLinkFunction() {
// Do some Javascript here to track the click
// If you have jQuery on your page, you could do this:
$.post("trackclick.php", { link-id: "212", other-info: "some data" } );
// Send the user to the linked page:
return true;
}
</script>
<!-- Somewhere else -->
<a href="somepage.html" onClick="myLinkFunction();">Link</a>
链接到 PHP 函数,运行您的代码,函数的最后一行将是标题行。标头(位置:'http://whateverlink.com');
真的与提交 PHP 表单没有什么不同
您可以链接到网站上的 PHP 页面,并header('Location: <new url>')
在执行 PHP 代码后用于重定向。
如果您使用的是 jQuery,您可以执行以下操作:
<a href="link.html" class="link">liunk</a>
<script>
$(document).ready(function() {
$('.link').click(function(e) {
e.preventDefault();
var $url = $(this).attr('href');
var logged = $.post('tracking-script.php', {link: $url});
// from 'tracking-script.php' return a string of yes or something
if(logged == 'yes') {
//window.location = $url;
return true;
}
});
});
</script>
您可以使用 $_GET 传递跟踪代码或整数。然后在任何 HTML 之前的下一页顶部,您将运行一些小的跟踪代码。跟踪代码可以更新数据库或平面文件,具体取决于您的偏好。
landingpage.html
<a href = "somepage.php?tracking=1">Next Page</a>
somepage.php
$tally = $_GET['tracking'];
$track = $tally." from landingpage.html";
$handle = fopen('path/to/tracks.txt','a');
fwrite($handle, $track);
这是一种简化的方式,但该过程是 (a) 将一个字符串附加到名为 track.txt 的文本文件的末尾。您可以通过其他方式处理tracks.txt,例如统计某个给定页面的链接数量。
尽管人们说你可以做到这一点,结合javascript。这是一种您肯定听说过的方法,称为“AJAX”。这意味着您运行一个在后台调用 PHP 脚本的 Javascript 函数。
w3schools 有一个很棒的教程:http ://www.w3schools.com/ajax/default.asp
您可以同时使用 POST 和 GET 方法将数据传递给 php 函数。它会是这样的:
function showHint(str)
{
var xmlhttp;
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","gethint.asp?q="+str,true);
xmlhttp.send();
}
所以本质上,“str”字符串是您希望传递给 javascript 函数的值,然后通过此处显示的 get 方法传递给 PHP 文件 xmlhttp.open("GET","gethint.asp?q="+str,真的); 这可能很容易 xmlhttp.open("GET","gethint.php?q="+str,true); PHP 或 ASP 差别不大。接下来要记住的是“txtHint”是一个 HTML 元素,您希望页面的响应返回到该元素中。因此,例如,您可以使用“gethint.php”或 asp 来回显“Success”或“Fail”。
附带说明一下,如果您希望为响应设置样式,可以通过与页面其余部分相同的样式表来完成。我希望这对伴侣有帮助:)