• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Zurücksetzen von bereits besuchten Links

stvn

Neues Mitglied
Guten Abend.

Ich hoffe, dass ihr mir helfen könnt.

Ein Link kann ja denn Zustand(?) "visited" haben, wenn er bereits geklickt wurde.
Wie aber kann ich das wieder zurücksetzen?

Also angenommen einer Besucher klickt auf einen Link, dieser wird als bereits besucht angezeigt, doch dann nach zB genau einer Stunde wird dieser Link eben nicht mehr als bereits besucht angezeigt. Geht das? Durch Cookies oder so?

Ich bitte um fachmännischen Rat. :)

Gruß.
stvn
 
Der Status besucht/nicht besucht wird vom Browser über die Browserhistory verwaltet. Steht ein Link in der History, wird er auf die CSS-Pseudoklasse ":visited" gesetzt.

- SELFHTML: Stylesheets / CSS-Eigenschaften / Pseudoelemente und Pseudoklassen

Das lässt sich von einer Webseite aus nicht beeinflussen.

Du könntest Cookies setzen, in denen steht, wann eine bestimmte Zielseite zuletzt besucht wurde. Bei der Generierung des Link-Codes kannst du dann entsprechend eine andere Formatierung wählen, falls ein Linkziel im Cookie auftaucht. (Über normale CSS-Klassen, nicht über die Pseudoklassen.)

Um die Informationen in den Cookies zu setzen, müsstest du jeden Link jedoch über eine weitere interne Seite umleiten.

Code:
<a href="out.php?goto=http://www.example.com/">example.com</a>

In out.php kann der Wert im Cookie gesetzt und eine Weiterleitung zum eigentlichen Ziel durchgeführt werden.

Ich halte sowas aber generell für wenig sinnvoll.
 
Normalerweise ist es Sache der Browser wie diese mit besuchten Links umgehen. Du könntest allerdings einen Trick anwenden: ergänze am Link eine eindeutige ID, z.B. eine SitzungsID die für eine Stunde gültig ist. Dann sollte ein Browser der diesen Link sieht ihn für eine Stunde als besucht anzeigen.

Code:
datei.php?id=1234567890

Sicher ist das aber nicht. Und es hat einen großen Nachteil: Suchmaschinen sind dadurch verwirrt.
 
Vielleicht könnte man threadis Vorschlag und meinen verbinden, indem die Links so gebildet werden:

Code:
<a href="out.php?id=1234567890&amp;target=http://example.org/">example.org</a>

out.php bräuchte nichts weiter zu tun, als per header('Location: ' . $_GET['target']); exit; den Request weiterzuleiten.

Ist jetzt ein bisschen oberflächlich beschrieben, aber ich denke, das müsste klappen.

Edit: Ich frage mich übrigens gerade, ob die Tatsache, dass einkommende Links beliebige fremde GET-Parameter enthalten können, ein Grund dafür ist, für jede Seite generell einen Canonical URL anzugeben.

- http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html
 
Zuletzt bearbeitet:
Ich hab mir das echt einfacher vorgestellt, weiß aber nich weiter! :(

Also, ich hab jetzt 'ne cookie.php.

Wie bring ich denn jetzt in den Cookie die bereits besuchten Link rein?
Mache ich das dann etwa über die out.php? Wenn ja, wie?

Und wie weiße ich denn einem Link eine bestimme Session-ID zu?

Wäre toll, wenn jemand das etwas ausfürlich beschreiben könnte, ich weiß nämlich nichtma so wirklich, wie ich überhaupt anfangen soll. (Habe nun schon bissl was zum Thema Cookies, Session-IDs gelesen, aber bringt mich auch nich wirklich weiter.):???: Danke!
(Bin noch ziemlicher PHP-Neuling, was man sich aber wohl denken kann. xD)
 
Zuletzt bearbeitet:
index.php
Hier werden die Links ausgegebn, die vorher in die DB eingetragen wurden.
Das sind die Links, die ich halt nur für eine Stunde als besucht anzeigen lassen möchte, nachdem man draufgeklickt hat.

Code:
if ($resultat = $db->query('SELECT * FROM tabelle ORDER by id')) {

while($daten = $resultat->fetch_object() ){
echo "<p><a href=". $daten->link .">". $daten->link ."</a></p>";
}

$resultat->close();
} else {

echo "Im Moment sind keine Links eingetragen";
}

$db->close();
Und ab jetzt hörts bei mir auf.
Wie kann ich denn da jetzt jedem dieser Links eine eigene Session-ID zuweisen?
Mach ich das innerhalb der Schleife in der index.php oder in der out.php?

out.php
Code:
<?php

header('Location: ' . $_GET['target']);
exit;

?>
 
Zuletzt bearbeitet:
Zurück
Oben