Seite 1 von 1
PHP: $_COOKIE values setzen
Verfasst: 15.02.2009, 22:12
von nerd
ok, die ueberschrift trifft es nicht ganz, wusste aber nicht genau was sich schreiben soll. hier mein problem:
besucher koennen auf meiner seite einen text hinterlassen (so aehnlich wie kleinanzeigen). viele geben im text auch ihre telefonnummer (oder email) mit an, was auch sinn macht da die kontaktaufnahme per tel damit auch schneller funktioniert.
ich will allerdings nicht das meine seite gefunden wird wenn jemand nach diesen emails oder telefonnummern sucht, weshalb ich die nummern nur anzeige wenn isset($_COOKIE['PHPSESSIONID'])===true ist - ansonsten werden die kontaktdaten tm text per regex mit *** ersetzt. das funktioniert auch soweit, da imho kein bot cookies setzt. allerdings ist mein problem jetzt, das besucher die daten erst beim zweiten aufruf einer seite die daten sehen, da beim ersten aufruf die session id noch nicht gesetzt ist - was dann natuerlich moppelkotze ist wenn sie direkt von der suchmaschine auf der ergebnisseite landen.
irgend eine idee wie ich das am besten loesen koennte?
Verfasst:
von
Hochwertiger Linkaufbau bei ABAKUS:
- Google-konformer Linkaufbau
- nachhaltiges Ranking
- Linkbuilding Angebote zu fairen Preisen
- internationale Backlinks
Wir bieten
Beratung und
Umsetzung.
Jetzt anfragen:
0511 / 300325-0
Verfasst: 15.02.2009, 22:42
von Wirths Media
irgend eine idee wie ich das am besten loesen koennte?
Ja, ich.
Code: Alles auswählen
if(eregi('bot|slurp', $_SERVER['HTTP_REFERER']))
Verfasst: 15.02.2009, 23:14
von net(t)worker
calusa-xx hat geschrieben:Ja, ich.
Code: Alles auswählen
if(eregi('bot|slurp', $_SERVER['HTTP_REFERER']))
wie gut, das der Googlebot sich zwischendurch nicht auch mal als Mozilla Browser o.ä. ausgibt...

Verfasst: 15.02.2009, 23:28
von Wirths Media
Ok, dann halt als Bild.
Verfasst: 16.02.2009, 09:18
von CIX88
Auf eregi() würde ich verzichten, da:
1. veraltet
2. wird bald ganz aus PHP fliegen
2. wegen Sicherheitslücken nicht zu empfehlen
Verfasst: 16.02.2009, 10:10
von Wirths Media
CIX88 hat geschrieben:Auf eregi() würde ich verzichten, da:
1. veraltet
2. wird bald ganz aus PHP fliegen
2. wegen Sicherheitslücken nicht zu empfehlen
Sondern? preg_match? oder was ist der direkte Nachfolger
Verfasst: 16.02.2009, 12:09
von t-rex
Hi,
mir fällt als Lösung hier sofort Javascript ein.
1. PHP wandelt die Zeichen der zu versteckenden Daten in die entsprechenden ASCII Codes um und schreibt die Javascript-Funktion drumrum.
2. Am Ende Deiner Seite fügst du dann diese Javascriptfunktion ein, die die ASCII Codes wieder in lesbare Zeichen zurückverwandelt.
Das ist für Bots nicht zu interpretieren.
Für User ohne Javascript fügst Du noch einen NOSCRIPT Tag ein: "Bitte Javascript aktivieren".
Sonnige Grüsse
HaPe
Verfasst: 17.02.2009, 21:44
von nerd
danke, aber gibts da ein beispiel wo ich mir das mal am lebenden objekt ansehen koennte? ich bin mit js ganz schlecht.
irgendwo hatte ich hier (sig?) mal ne seite mit ablaufenden domains gesehen, da waren die namen auch alle geschwaerzt wenn man js deaktiviert hatte.
Verfasst: 17.02.2009, 22:01
von Mork vom Ork
nerd hat geschrieben:danke, aber gibts da ein beispiel wo ich mir das mal am lebenden objekt ansehen koennte?
<script type="text/javascript">document.write("030/182720");</script>
Oder für Paranoide:
<script type="text/javascript">document.write("0" + "3" + "0" + "/" + "1" + "8" + "2" + "7" + "2" + "0");</script>
PHP-seitig:
echo '<script type="text/javascript">document.write("' . htmlspecialchars($telefonnummer) . '");</script>';
(Benutzerdaten immer durch htmlspecialchars() entschärfen - es gibt böse Leute wie mich, die machen sich einen Spaß daraus, statt einer Telefonnummer, einer Adresse, eines Namens oder sonstwas lieber lustigen HTML-, Javascript- und CSS-Code einzutippen.)
Verfasst: 17.02.2009, 22:10
von [btk]tobi
Ich würde sagen der Useragent reicht, Ich zeige bei einer meier Seiten immer "Willkommen <BENUTZERNAME>" an, wenn Googlebot kommt wird "Willkommen Googlebot" angezeigt und ich habe nur Seiten im Google Cache die vom Googlebot kommen. Google hat bestimmt auch Bots die sich nicht als Googlebot zu erkennen geben, aber die nehmen keine Seiten in den Index auf.
Gruß Tobi
Verfasst: 17.02.2009, 22:31
von Mork vom Ork
[btk]tobi hat geschrieben:Ich würde sagen der Useragent reicht
Mag in der Praxis akzeptabel sein, aber Javascript-Code wie im Beispiel statisch auszugeben ist einfacher und sperrt ausnahmslos alle Suchmaschinen aus (und den einen oder anderen Adressammler gleich dazu). Warum aufwendig und/oder eingeschränkt, wenn's auch einfach und umfassend geht?
Verfasst: 18.02.2009, 00:07
von Wirths Media
Mork vom Ork hat geschrieben:[btk]tobi hat geschrieben:Ich würde sagen der Useragent reicht
Mag in der Praxis akzeptabel sein, aber Javascript-Code wie im Beispiel statisch auszugeben ist einfacher und sperrt ausnahmslos alle Suchmaschinen aus (und den einen oder anderen Adressammler gleich dazu). Warum aufwendig und/oder eingeschränkt, wenn's auch einfach und umfassend geht?
Auch die Sumas sind schon weiter, Javascript wird versucht zu verstehen. JS ist auch nicht die Lösung.
Verfasst: 18.02.2009, 09:06
von t-rex
Hi,
naja, zwischen "versuchen zu verstehen" und beherschen ist meiner Meinung nach ein Unterschied.
Hier ein konkretes Beispiel:
In Deinem PHP-File oder Template bringst du überall, wo Du was vor dem Bot verstecken möchtest, folgendes unter.
Code: Alles auswählen
<?php
$telefon = "030/47110815";
echo "<script language=\"JavaScript\">\n";
echo "document.write(bde64('" . base64_encode(trim($telefon)) . "'));\n";
echo "</script>\n";
echo "<noscript>Bitte Javascript aktivieren</noscript>";
?>
Innerhalb des HEAD Tags des ausgebenden HTML Codes fügst du dieses Skript hinzu.
Code: Alles auswählen
<head>
<script language="JavaScript">
base64s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
bde64 = function(encstr) {
var bits;
var decOut = '';
var i = 0;
for(; i<encstr.length; i += 4) {
bits = (base64s.indexOf(encstr.charAt(i)) & 0xff) <<18 |
(base64s.indexOf(encstr.charAt(i +1)) & 0xff) <<12 |
(base64s.indexOf(encstr.charAt(i +2)) & 0xff) << 6 |
base64s.indexOf(encstr.charAt(i +3)) & 0xff;
decOut += String.fromCharCode((bits & 0xff0000) >>16, (bits & 0xff00) >>8, bits & 0xff);
}
if(encstr.charCodeAt(i -2) == 61) {
return(decOut.substring(0, decOut.length -2));
} else if(encstr.charCodeAt(i -1) == 61) {
return(decOut.substring(0, decOut.length -1));
} else {return(decOut)};
}
</script>
</head>
Ich verwende das auf Seiten, wo der Googlebot zwar nicht so wichtig ist, aber wo sich jede Menge Hitbots rumtreiben. Mit der Funktion verstecke ich Links, die diese Hitbots nicht sehen sollen. Da ich noch einige andere Mechanismen eingebaut habe, um diese Bots zu erkennen, kann ich sagen, dass diese Funktion zu 100% wirkt.
Sonnige Grüsse
HaPe