#php #javascript #analytics #matomo
#php #javascript #аналитика #matomo
Вопрос:
Я создаю веб-приложение, которое использует Piwik. Piwik — это инструмент аналитики с открытым исходным кодом, похожий на Google Analytics.
Это дает код отслеживания, подобный тому, который упоминается ниже.
<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://example.com/" : "http://example.com/");
document.write(unescape("<script src='" pkBaseURL "piwik.js' type='text/javascript'>"));
</script><script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL "piwik.php", 1);
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch( err ) {}
</script><noscript><p><img src="http://example.com/piwik.php?idsite=1" style="border:0" alt="" /></p></noscript>
<!-- End Piwik Tracking Code -->
Следующий код предназначен для сайта, идентификатор сайта которого равен 1. Проверка следующих строк в коде.
var piwikTracker = Piwik.getTracker(pkBaseURL "piwik.php", 1);
<noscript><p><img src="http://example.com/piwik.php?idsite=1" style="border:0" alt="" /></p></noscript>
Пользователи моего сайта войдут в пользовательскую панель администратора и получат код отслеживания для сайта.
Теперь мне нужно скрыть этот код отслеживания. итак, я подумал, что сохраню это в php-скрипте. Аналогично приведенному здесь
<?php
// Custom-made Analytics Script
// File Name: custom.php
$site_id = isset($_GET['id'])?$_GET['id']:0;
?>
<!-- Piwik -->
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://example.com/" : "http://example.com/");
document.write(unescape("<script src='" pkBaseURL "piwik.js' type='text/javascript'>"));
</script><script type="text/javascript">
try {
var piwikTracker = Piwik.getTracker(pkBaseURL "piwik.php", <?php echo $site_id; ?>);
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch( err ) {}
</script><noscript><p><img src="http://example.com/piwik.php?idsite=<?php echo $site_id; ?>" style="border:0" alt="" /></p></noscript>
<!-- End Piwik Tracking Code -->
Как вы можете видеть, я заменил идентификатор сайта в JavaScript на переменную PHP, которую я получу с помощью $ _GET
Теперь я предоставлю своим пользователям следующий код JavaScript, который они разместят на своем сайте.
<script type="text/javascript">
var pkBaseURL = (("https:" == document.location.protocol) ? "https://example.com/" : "http://example.com/");
document.write(unescape("<script src='" pkBaseURL "custom.php?id=1' type='text/javascript'>"));
</script>
Мой вопрос здесь в том, будет ли у этого скрипта какие-либо недостатки или он где-нибудь сломается?
Ответ №1:
Я вижу здесь две проблемы:
- Если javascript отключен, piwik больше не будет регистрировать этих посетителей, поскольку вы используете исключительно JS
-
Ваш
custom.php
уязвим для XSS. Если вы хотите сохранить его, замените:$site_id = isset($_GET['id'])?$_GET['id']:0;
с:
$site_id = (int)filter_input(INPUT_GET, 'id');
разрешить только числовой ввод.
Если вы не планируете изменять этот код, просто предоставьте статическому коду жестко заданный в нем идентификатор.