[ WawaHOO! @ 27.03.2006. 15:35 ] @
Da li postoji nacin da merim broj klikova na neki link bez baze podataka tj. da napravim JavaScript kod koji ce kada neko klikne na neki link slati podatak u .txt na mom serveru.
Znaci imam link npr. http://www.nekilink.com/ . Hocu da kada neko klikne na njega da se u .txt upise naziv tog linka.
Da li to moze?
Pozdrav

[Ovu poruku je menjao WawaHOO! dana 27.03.2006. u 16:49 GMT+1]
[ WEXY @ 27.03.2006. 16:37 ] @
Nije moguće, JavaScript je client-side scripting jezik, znači izvršava se kod klijenta, a ne na serveru i nema nikakve veze sa serverom. Za to što ti hoćeš potreban ti je neki server-side scripting jezik kao što su PHP, ASP, Python, ... koji rade na serveru gde držiš sajt.

Mali dodatak: Ti preko JavaScripta možeš da pošalješ nešto na svoj server ali ti na serveru opet treba neka skripta (server-side) koja će to da primi i upiše u .txt fajl.
[ Br@nkoR @ 27.03.2006. 16:37 ] @
Ne, potreban ti je i neki server-side jezik.
[ WawaHOO! @ 27.03.2006. 16:56 ] @
Znaci ja ne mogu da napisem script koji klikom na link salje serveru neki podatak tj. salje toj .txt datoteci neki podatak
[ Br@nkoR @ 27.03.2006. 17:00 ] @
Možeš napisati js skriptu koja će slati podatke nekoj server-side skripti koja će na osnovu podataka koje su njoj poslati izvršiti upis u txt fajl.
[ WawaHOO! @ 27.03.2006. 17:13 ] @
Mozes da postavis ako imas negde napisano,i JS i side script

PLEASE
[ Br@nkoR @ 27.03.2006. 18:43 ] @
Ajde nešto na brzinu.
Ovo je samo primer, urađeno je pomoću PHP-a, takođe urađeno je samo za jedan link. Ovaj primer je možda zakomlikovan jer koristi XMLHttpRequest, ti ovo možeš uraditi i samo pomoću PHP, tako što ćeš skripti proslediti link, izvršiti upis u fajl i pomoću header funkcije izvršiti redirekciju na odgovarajuću adresu.

Code:

<?php
  header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  header("Cache-Control: no-cache, must-revalidate");
  header("Pragma: no-cache");
  function writeClicks() {
    $filename = 'test.txt';
    if (is_writable($filename)) {
      $oldData = file($filename);
      $content = ((isset($oldData[0])) ? (int)$oldData[0] : 0) + 1;
      if (!$handle = fopen($filename, 'w')) {
        return 'Error:: Cannot open file ('.$filename.').';
        exit;
      }
      if (fwrite($handle, $content) === FALSE) {
        return 'Error:: Cannot write to file ('.$filename.').';
        exit;
      }
      return $content;
      fclose($handle);             
    } else {
      return 'Error:: The file '.$filename.' is not writable.';
    }
  }
if(isset($_GET['link'])) {
  echo writeClicks();
} else {
?>
<html>
<head>
<title>test</title>
<script>
function getRequestObject(){
  var req;
  try {
    req = new ActiveXObject('Msxml2.XMLHTTP');
  }
  catch (e){
    try    {
      req=new ActiveXObject('Microsoft.XMLHTTP');
    }
    catch (e2){
      req=null;
    }
  }
  if(!req && typeof XMLHttpRequest != 'undefined')
    req = new XMLHttpRequest();
  
  return req;
}

function processRequest() {
  var req;
  var requestType = 'GET';
  uri = '<?php echo $_SERVER['PHP_SELF'];?>?link=test';
  req = getRequestObject();
  req.open('GET', uri, true);
  req.onreadystatechange = function() {
    if (req.readyState != 4) return;
    if (req.status==200) {
      if (req.responseText) {
        processResponse(req.responseText);
      }
    }
    delete req;
  }
  req.send(null);
  delete req;
  return true;
}

function processResponse(text) {
  if(text.match(/Error::/)) {
    document.getElementById('status').innerHTML = text;
  } else {
    document.getElementById('status').innerHTML = 'Clicks: ' + text;
  }
}

</script>
</head>
<body>
 <a href="http://www.nekilink.com/" onClick="processRequest()" target="bre">http://www.nekilink.com/</a>
 <div id="status"></div>
 <iframe name="bre" width="400" height="300"></iframe>
</body>
</html>
<?php } ?>


[Ovu poruku je menjao Br@nkoR dana 27.03.2006. u 20:22 GMT+1]