by johnburn Sat Sep 26, 2009 9:08 pm
Ok, ni contoh dr aku. Script ni akan rekodkan link mana yg diklik dan bilngn klik ke file bernama log.txt
ko gak kne buat satu lg file nama id.txt untuk simpan id last yg dimasukkan
basically, sume link yg ko nk track click dia ko kne gntikan dengan url yg menggunakan click.php
untuk memudahkan ko menambah link, aku dh sediakan satu script nama admin.php
kat admin.php, ko bleh add link dan jugak view statistik untuk link yg dh di add.
katalah link yg ko nk track tu gini:
www.domain.com/index.htmlko add link tu kat admin.php
katalah file
click.php tu dok kat root folder domain ko, nt admin.php tu akan generate link dgan id untuk file index.html yg ko nk track tu. cnth:
www.domain.com/click.php?id=1so nt kt site ko, ko kne ltak link dia cmni:
<a href="click.php?id=1">INDEX</a>so nt bile user klik link INDEX tu, click.php akan rekodkan count sblom dia redirect user ke index.html
aku xltak komen sgt kt script sbb malas hehe
so kl ada xpham pe2, bleh tnya
1) admin.php
- Code:
<?php
require_once 'settings.php';
$action=htmlspecialchars($_REQUEST['action']);
if ($action == 'add') {
add();
} else {
main();
}
function main($notice='') {
global $settings;
?>
<form action="admin.php" method="POST">
<p><a name="addlink"></a><b>Tambah link</b></p>
<table border="0">
<tr>
<td>Mula kira dari:</td>
<td><input type="text" name="count" value="0" size="6"></td>
</tr>
<tr>
<td>URL Link:</td>
<td><input type="text" name="url" value="http://" size="50"></td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
<p><input type="hidden" name="action" value="add"><input type="submit" value=" Tambah Link "></p>
</form>
<hr>
<p><b>Statistik</b></p>
<?php
$lines = array();
$jumlahklik = '';
$popular = 0;
$popID = 0;
$kosong = 0;
$lines = file($settings['logfile']);
if (count($lines) == 0) {
$kosong = 1;
}
if ($kosong == 1) {
echo '<p>Tiada sebarang link dimasukkan.</p>';
} else {
$i=0;
foreach ($lines as $thisline) {
$thisline = trim($thisline);
list($id,$url,$count)=explode('%%',$thisline);
$jumlahklik += $count;
if($count > $popular) {
$popular = $count;
$popID=$id;
}
$i++;
}
echo '
<table border="0" cellspacing="0" cellpadding="2">
<tr>
<td>Jumlah link:</td>
<td><b>'.$i.'</b></td>
</tr>
<tr>
<td>Jumlah klik:</td>
<td><b>'.$jumlahklik.'</b></td>
</tr>
';
if ($popular != 0) {
echo '
<tr>
<td>Link popular:</td>
<td><b>'.$popular.'</b> (link ID <b>'.$popID.'</b>)</td>
</tr>
';
}
echo '
<tr>
<td> </td>
<td> </td>
</tr>
</table>';
}
if ($kosong == 0) {
echo '
<table border="1" cellpadding="3" cellspacing="0">
<tr>
<td align="center" valign="center"> <b>ID</b> </td>
<td align="center" valign="center"> <b>Jumlah Klik</b> </td>
<td align="center" valign="center"> <b>URL</b> </td>
</tr>
';
foreach ($lines as $thisline) {
$thisline = trim($thisline);
if (strlen($thisline) < 4) {
continue;
}
list($id,$url,$count) = explode('%%',$thisline);
if (strlen($url) > 40) {
$linkname = substr($url, 0, 20);
$linkname .= '...';
$linkname .= substr($url, -17);
} else {
$linkname=$url;
}
echo '
<tr>
<td align="center" valign="center"> '.$id.' </td>
<td valign="center"> <b>'.$count.'</b> </td>
<td valign="center"> <a href="'.$url.'" target="_blank">'.$linkname.'</a> </td>
</tr>
';
}
echo ' </table>';
}
}
function add() {
global $settings;
$url=checkurl($_POST['url']);
$start_from = input($_POST['count']);
if (preg_match("/\D/",$start_from)) {
$start_from = 0;
}
$previd = file_get_contents($settings['idfile']);
$previd = trim($previd);
$previd++;
$fp = @fopen($settings['idfile'],'w') or error('Sila pastikan permission untuk file.'.$settings['idfile'].'!)');
flock($fp, LOCK_EX);
fputs($fp,$previd);
flock($fp, LOCK_UN);
fclose($fp);
$addline = $previd . '%%' . $url . '%%'. $start_from . "\r\n";
$fp = @fopen($settings['logfile'],'a') or error('Sila pastikan permission untuk file.'.$settings['logfile'].'!)');
flock($fp, LOCK_EX);
fputs($fp,$addline);
flock($fp, LOCK_UN);
fclose($fp);
?>
<tr>
<td><p> </p>
<div align="center"><center>
<table width="400" cellpadding="3"> <tr>
<td align="center" class="head">Link ditambah</td>
</tr>
<tr>
<td>
<form>
<p> </p>
<p align="center"><b>Link baru berjaya ditambah!</b></p>
<p>Link dengan ID <?php echo($previd); ?> telah berjaya ditambah.</p>
<p>Sila gunakan link berikut untuk mengira jumlah klik:<br><br>
<b><?php echo("$settings[click_url]?id=$previd"); ?></b>
<p> </p>
<p align="center">
<a href="admin.php">
Teruskan</a></p>
<p> </p>
</td>
</tr> </table>
</div></center>
<p> </p>
<p> </p>
<p> </p>
</td>
</tr>
<?php
exit();
}
function checkurl($url) {
if (empty($url) || $url == 'http://' || $url == 'https://') {
error('Sila masukkan URL link yang hendak ditambah!');
}
if (strpos($url, '%%') !== false) {
error('%% tidak dibenarkan dalam URL!');
}
return $url;
}
function input($in, $error = 0) {
$in = trim($in);
if ($error && strlen($in) == 0) {
error($error);
}
return htmlspecialchars(stripslashes($in));
}
function error($err) {
echo '<div style="font-family:Verdana;font-size:11px;text-align:center;"><b>'.$err.'</b></div>';
exit();
}
?>
2) click.php
- Code:
<?php
if (defined('AKSES_TERUS')) {die('Anda tidak dibenarkan mengakses bahagian ini');}
require_once 'settings.php';
$id = $_GET['id'];
if (empty($id) || preg_match("/\D/",$id)) {die('ID tidak sah. Hanya nombor dibenarkan!');}
$lines = file($settings['logfile']);
$found = 0;
$i = 0;
foreach ($lines as $thisline) {
if (strpos($thisline, $id.'%%') === 0) {
$thisline = trim($thisline);
list($id,$url,$count) = explode('%%',$thisline);
$count = $count + 1;
$lines[$i]=$id.'%%'.$url.'%%'.$count."\r\n";
$found=1;
break;
}
$i++;
}
if ($found != 1) {die('ID tiada dalam rekod!');}
Header('Location: '.$url);
exit();
?>
3) settigs.php, untuk ko tkar bbrapa parameter kl nk tkar
- Code:
<?php
if (defined('AKSES_TERUS')) {die('Anda tidak dibenarkan mengakses bahagian ini');}
/* URL untuk file click.php*/
$settings['click_url']='http://www.domain.com/click.php';
/*log file */
$settings['logfile']='log.txt';
/* file untuk simpan last ID */
$settings['idfile']='id.txt';
?>