php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.04.2005, 22:53  
Gast
 
Beiträge: n/a
Standard Für Besucherzählerstand zwei Dateien anlegen

Hio,

ich will einen Counter in zwei Seiten einbauen, da diese aber in unterschiedlichen Ebenen liegen kriegt eine der zwei Seiten immer Probleme damit, die Datei zu finden in der der Zählerstand gespeichert wird.

Drum hab ich mir gedacht ich lasse die Counterdatei einfach zweimal erstellen - eben für jede Seite eine. Ich hab mal die Datei angehängt, die für den Counter verantwortlich ist (counter.zip).

Unter dem Punkt Konfiguration wird angegeben, wo die txt-Datei mit dem Zählerstand gespeichert wird.

Kann ich da den Eintrag $counterfile einfach drunter kopieren (entsprechend anders benennen, $counterfiletwo o.ä.) und dann dementsprechend auch den Teil ab // Counter lesen für die zweite Counterdatei kopieren (hab das mal in der counter_edit.zip gemacht wie ich mir das dachte)?

Allerdings krieg ich da immer den Fehler:

Warning: fopen(_scripts/counter.txt): failed to open stream: No such file or directory in /raid/domains/org/h/halbleiter/htdocs/www/_scripts/counter.php on line 108
Konnte Counterdatei nicht anlegen

Ich habe auch versucht über $counterfiletwo eine zweite txt, nämlich countertwo.txt zu verwenden, da kommt aber genau die gleiche Fehlermeldung.

In den zwei Seiten wird diese counter.php mittels include eingebunden. Der Pfad zum Zählerstand geht immer von dieser counter.php aus. Drum nützt es nichts einfach in den zwei Seiten die Pfadangabe zu der counter.php festzulegen, da von dieser aus gesehen der Pfad ($counterfile = "../_scripts/counter.txt" zum Zählerstand immer nur zu einer der zwei Seiten stimmt (falls jemand versteht was ich meine :wink
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.04.2005, 23:21  
Erfahrener Benutzer
 
Registriert seit: 14.04.2005
Beiträge: 1.004
search
Standard

rechte für ordner und/oder dateien sind erteilt?<- chmod 777


PHP-Code:
<?php
// Datei in welcher der
// Counterstand gespeichert wird
// -------------------------------
$counterfile $_SERVER['DOCUMENT_ROOT'];
?>
im gleichen verzeichnis wie die counter.php ausgeführt wird <- mit betonung auf ausgeführt -> die counter.txt anlegen.

greez search
search ist offline  
Alt 26.04.2005, 16:23  
Gast
 
Beiträge: n/a
Standard

Hio,

hab das so wie du das beschreibst nicht hingekriegt, aber ne andere Lösung gefunden. Ist zwar lange nicht so elegant, aber es läuft (hab ne zweite counter.php angelegt auf die die Seiten in der anderen Ebene zugreifen können; die greift auf die gleiche counter.txt zu, wie das Original).

Thx
 
Alt 26.04.2005, 19:56  
CSS
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 324
CSS
Standard

Solltest du PHP 5 zur Verfügung haben so nimm lieber einen SQLite-Counter. Hier ist z.B. mein Counter
PHP-Code:
<?php
/*
Copyright Jakob Buchgraber 2005
Don't delete this comment, for legal use!
Version: 0.12

Script runs with PHP 5.01 and higher
*/
  
define("MAX_OUTPUT",7); // Here you can set the number of chars which will be put to stdout
  
define("MAX_TIME"60); // How long should an IP be saved? (in minutes)
  
$exists true;
  
$db "counter.db"// Here you have to set the database's name
  
  
$counter "";
  
  if (!
file_exists($db))
  {
    
$exists false;
  }
  
  
// Connect to the database
  
if (!$db = @sqlite_open($db0666))
  {
    echo 
"[b]Error[/b]: Could not connect to the database";
  }
  
  if (
$exists == false)
  {
    
$tabellen['table1'] = <<<TABLE1
      CREATE TABLE data (adress STRING, timestamp INTEGER);
TABLE1;

    
$tabellen['table2'] = <<<TABLE2
    // nov -> number of visits ;-)
      CREATE TABLE visits (nov INTEGER);
TABLE2;
  
    foreach (
$tabellen as $tabelle => $definition)
    {
      if (!@
sqlite_exec($definition,$db))
      {
        echo 
"[b]Error:[/b] Could not create tables";
      }
    }
  }
  
  
$ip_adress $_SERVER['REMOTE_ADDR'];
  
$has_already_visited false;

  
$max_timestamp time() - MAX_TIME 60;
  
// I always make the timestamp with the date()-function, 'cause so it works with every language
  // Remeber the MSSQL-Crash
  
$max_timestamp date("YmdHis"$max_timestamp);
  
// Delete the antiquated IP's
  
$sql "DELETE FROM data WHERE timestamp < $max_timestamp";
    
  if (!@
sqlite_exec($db$sql))
  {
    echo 
"[b]Error:[/b] Could not delete old IPs";
  }
    
  
$sql "SELECT adress FROM data";
    
  if (
$result = @sqlite_query($db$sql))
  {
    
$saved_ips = array();
    
    while(
$line = @sqlite_fetch_object($result))
    {
      
$saved_ips[] = $line->adress;
    }
  }
  else
  {
    echo 
"[b]Error:[/b] Could not read data";
  }
    
  if (!empty(
$saved_ips))
  {
    foreach (
$saved_ips as $saved_ip)
    {
      if (
$saved_ip == $ip_adress)
      {
        
// If the current user has already visited the page...
        
$has_already_visited true;
        break;
      }
    }
  }
    
  
$sql "SELECT nov FROM visits";
  
  if (
$result = @sqlite_query($db,$sql))
  {
    if (
$line = @sqlite_fetch_object($result))
    {
      
// read counter
      
$counter $line->nov;
    }
  }
  
  
// If the current user hasn't visit the website before...
  
if (!$has_already_visited)
  {
    
// ...increment counter and update the database
    
++$counter;
    
    if (
is_numeric($counter) && is_object($line))
    {
      
$sql "UPDATE visits SET nov = $counter";
    }

    else
    {
      
// that's for the first turn of the script
      
$sql "INSERT INTO visits (nov) VALUES (1)";
    }
    
    if (!@
sqlite_exec($sql$db))
    {
      echo 
"[b]Error:[/b] Could not update the database";
    }

    
$timestamp date("YmdHis");
    
// Make new timestamp...
    
$sql "INSERT INTO data (adress, timestamp) VALUES ('$ip_adress', '$timestamp')";
    
// ...and put it into the database
    
if (!@sqlite_exec($db$sql))
    {
      echo 
"[b]Error:[/b] Could not update the database";
    }
  }

  
sqlite_close($db);

  
$output "";
  
  for (
$i 0$i MAX_OUTPUT; ++$i)
  {
    if (
MAX_OUTPUT $i strlen($counter))
    {
      
$output .= "0";
    }
    else
    {
      
$output .= substr($counter0MAX_OUTPUT $i);
      break;
    }
  }
  echo 
$output;
?>
CSS ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] PHP -&gt; Ordner anlegen der sich auch beschreiben lässt?! Nightuser PHP Tipps 2008 13 30.06.2008 23:51
PHP Dateien verschlüsseln GSJLink PHP-Fortgeschrittene 2 26.04.2008 12:29
[Logik] Mehrere Dateien als Anhang per Formular versenden PsychoEagle PHP Tipps 2008 2 27.08.2007 08:58
Dateien anlegen / chmodden dackel-gott-whaa PHP Tipps 2006 3 17.05.2006 16:48
nur bestimmte Dateien aus einem Verzeichnis auslesen Madden PHP Tipps 2006 2 07.03.2006 17:10
Verzeichnis (Dateien) schützen aber per PHP zugriff zulassen Server, Hosting und Workstations 2 16.10.2005 10:13
Dateien löschen (mit "unlink") PHP Tipps 2005-2 8 09.06.2005 22:55
[Erledigt] Nur bestimmte Dateien anzeigen, wie mache ich das HILFE PHP Tipps 2005 4 02.04.2005 22:38
Dateien auf Server anlegen. Wie? PHP Tipps 2005 7 06.02.2005 13:20
[Erledigt] Ungenutzte Dateien PHP-Fortgeschrittene 3 25.11.2004 16:07
dateien zugänglich machen PHP Tipps 2004 8 22.10.2004 14:25
Mit PHP erzeugte Dateien besitzen die falschen Rechte PHP Tipps 2004 3 14.09.2004 12:54
[Erledigt] PHP Dateien auf Server einsehen - Verschlüsseln PHP Tipps 2004 6 12.09.2004 10:17
[Erledigt] Dateien aus Verzeichnissen vom Webserver auslesen und linken PHP Tipps 2004 3 08.09.2004 10:07
[Erledigt] Dateien können nicht erzeugt werden PHP-Fortgeschrittene 10 03.06.2004 16:21

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sqlite_exec delete

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:42 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.