• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

(getenv(HTTP_REFERER) in counter

Metallica

Lounge-Member
hi leute,

folgenden counter hab ich in meine index.php eingebunden:
problem => siehe kommentar

<?php
if (!strstr(getenv(HTTP_REFERER), "http://mysite.de/index.php")) {
//mit diesem befehl will ich verhindern, dass der counter
weitergezählt wird wenn der user refresh im browser clickt
=> funtzt aber nicht. hab echt keine ahnung warum


$file = "counter.txt"; // Dateizuweisung
$ftp = @fopen($file,"r+"); // oeffnet die Datei
$count = (int)fgets($ftp,50); // Holt die ersten 50 Zeichen
$count++; // Addiert eine 1
rewind($ftp); // Setzt Zeige auf 0. Position
fwrite($ftp,$count); // Schreibt
fclose($ftp); // Schliesst die Datei

for ($i = 1; $i <= strlen($count); $i++) //zaehlt die Anzahl der Zeichen
{
$zahl = substr($count, $i - 1, 1); //1.-n Zeichen werden einzeln gelesen
for ($z = 0; $z < 10; $z++)
{
if ($zahl == $z) //das Zeichen wird eine Grafik eingesetzt
{
echo "<IMG SRC=$z.gif WIDTH=15 HEIGHT=20 BORDER=0 ALT=$z>";
}
else{echo "";}
}
} //end for
} //end if
?>


bitte um rat
P.S.: wie kann ich mir per echo den HTTP_REFERER ausgeben lassen??
 
bin grad auf noch ein problem draufgekommen.
meine site wird von einer hauptURL auf eine andere weitergeleitet.
durch diese weiterleitung zählt mein php-counter jetzt auch immer ZWEI zugriffe rauf anstatt nur einem.

wie kann man das umgehen??
=> besteht da viell. die möglichkeit, 'ne if-abfrage vor den counter-code zu stellen die überprüft, ob die weiterleitungsURL schon erreicht wurde?? wenn nein, dann soll php in den couter-code gar nicht reinkommen damit er nicht weitergezählt werden kann.
 
Er zählt zweimal? warum, hast Du dann auf der zweiten Seite noch mal den Counter?

Wenn ich den Counter mache, dann läuft es immer so, dass ich nur zähle wenn ein bestimmte variable nicht definiert ist. Da meine Seiten sehr Serverseitig sind, kann das die Variable sein, die mir sagt, auf welcher Seite ich mich grad befinde...
Mit Referer würde ich nie arbeiten, da der unzuverlässig ist, aber die if sache kann so ausgucken:

if(strpos(strtolower($HTTP_REFERER),"domain.tld")===false)
{
counter
}

ich denke die Domain reicht als Kennung aus!

Warum's bei dir nicht geht, könnten die 3= sein, Du machst !, d.h. das es bei 0 geht...also wenn der Suchstring an Stelle 0 gefunden wurde (was sehr wahrscheinlich ist)!
 
wie soll ich's deiner meinung nach machen??

zur info:
ich leite von topnic (ein domainnamen-vergeber ABER ohne webspace) zu lycos.de weiter weil dort die eigentliche site liegt.
http://www.8bhome.at.tt
=> damit du dir ein bild machen kannst - der counter wird immer um 2 oder auch 3 weitergezählt! jenachdem wie schnell er 'nen connect bekommt.
hab's inzwischen mit SERVER_NAME probiert. funtzt auch nicht. es liegt aber 100%ig an der weiterleitung von der hauptadresse.

man müßte eine möglichkeit finden, dem counterscript zu sagen, dass es nur einmal ausgeführt werden darf.

P.S.: wenn ich direkt die lycos-adresse anwähle, dann funtzt mit nur einmal weiterzählen.
 
ok, die Frage ist, wo steckt Dein Counter?
Ich sehe ein Frameset, und verschiedene Frames. Wo hast Du deinen Counter denn reingehauen? Optimal wäre es im Frameset!
Also von der Domain zum frameset. Dann gibt es keinen Grund, warum der Counter mehrmals geladen wird!
 
der counter liegt im linken frame.
bei der weiterleitung wird ja nur die index.htm aufgerufen.

=> müßte demnach also passen aber trotzdem wird der zweimal hochgezählt.

gibt's eigentlich 'ne möglichkeit dass der counter nicht weitergezählt wird wenn der user im browser refresh drückt??
 
wenn der User refresh drückt hilf Dir eine kurze IP-Sperre, oder ein Cookie (falls der Browser Cookies akkzeptiert, dass findest Du herraus, wenn Du vor der Counterseite(z.b. im frameset) ein Cookie setzt und es dann in der counterseite ausliest) oder eine ID, die nur einmal benutzt werden darf (z.b. wird die linke Seite mit dem Counter+1 aufgerufen, wenn der User dann auf refresh drückt wird das Script nicht mehr ausgeführt, da die ID=counter und nicht counter+1...ist die sicherste Methode!)

wenn der counter also wirklich zweimal zählt, dann kann es nur am Script selber liegen...wenn der code nicht zu fett ist, dann poste ihn doch mal
 
quote:
oder eine ID, die nur einmal benutzt werden darf (z.b. wird die linke Seite mit dem Counter+1 aufgerufen, wenn der User dann auf refresh drückt wird das Script nicht mehr ausgeführt, da die ID=counter und nicht counter+1...ist die sicherste Methode!)

=> das klingt gut. so müßte es funtzen.
Countercode => siehe posting-beginn!:)
 
Zurück
Oben