2009-08-25 16 views
6

Ich arbeite für eine Universität und ich implementiere eine PHP-Webanwendung, die ein anderes Verhalten haben muss, wenn sie von einem bestimmten Computer aus besucht wird. Das Problem, das ich renne, ist, dass vom Webserver, $ _SERVER ['REMOTE_ADDR'] und gethostbyaddr(), kann ich nur den Router identifizieren, der ein Computer durchläuft, und nicht einen bestimmten Computername.Einen Computer eindeutig identifizieren

Gibt es trotzdem, dass ich diesen einen bestimmten Computer festlegen kann, um sich dem Server zu identifizieren, damit der Server weiß, wenn von diesem Computer auf die Webanwendung zugegriffen wird? Der Computer läuft Firefox im Kiosk-Modus, so dass Addons oder GreaseMonkey-Skripte erlaubt sind ...

Antwort

12

Sie können einen Cookie setzen. Dies wird vom Client im Gedächtnis behalten und bei jeder Anfrage an den Server übertragen. Weitere Informationen hier: http://www.w3schools.com/PHP/php_cookies.asp

+6

Nur stellen Sie sicher, dass Sie verstehen, dass Cookies (sehr leicht) gefälscht werden können ... –

+0

Leider, wenn jemand Zugriff auf den Computer kann er Cookie stehlen und setzen Sie den gleichen Cookie auf anderen Computer. – Dmitriy

+6

@Dmitriy Leider gibt es wahrscheinlich keine Lösung, die nicht durch direkten physischen Zugriff auf die Maschine unterbrochen werden kann. – ceejayoz

-4

Haben Sie keine SessionID? Ihre Sitzungs-ID sollte eindeutig genug sein, um einen Computer zu identifizieren.

+2

Nicht, wenn sie den Browser schließen. – ceejayoz

+0

Nur zustimmen mit Ceejayoz. Nicht relevant für die gestellte Frage. –

+0

Interessanterweise haben Sie die Antwort völlig falsch verstanden. Offensichtlich befindet sich die Sitzungs-ID im Cookie, und Cookies bleiben auch dann erhalten, wenn Sie den Browser schließen. – daniel

2

Einige Gedanken:

  • ein dauerhaftes Cookie gesetzt. (Da FF im Kiosk-Modus ist, sollten Sie vor den Benutzern geschützt sein, die es löschen.)
  • Verwenden Sie diesen Kiosk mit einer anderen URL (möglicherweise mit einem Abfragezeichenfolgenparameter).

Was Ich würde nicht tun ist Arbeit nach der MAC-Adresse des Geräts (die Gibson sagt uns möglich ist) oder dergleichen verwendet wird; zu zerbrechlich, wenn Hardware repariert wird usw.

4

Sie könnten ein Cookie gesetzt, oder alternativ, könnten Sie die Useragent-Header ändern, die Ihre Firefox-Installations unverwechselbar etwas verwendet.

den User-Agent-String ändern, nur eingeben about: config als eine Adresse in die Adressleiste von FireFox, den Ort, an dem Sie normalerweise eine URL (Link) eingeben. Ich empfehle, den ursprünglichen Wert zu erhalten, den Sie erhalten können, wenn Sie nur ungefähr eingeben: in der Adressleiste.

Drücken Sie nun die rechte Maustaste auf rufen Sie das Kontextmenü auf und wählen Sie "String" aus dem Menüeintrag "Neu". Geben Sie den Präferenznamen "general.useragent.override", ohne die Anführungszeichen ein. Geben Sie als nächstes den neuen Benutzer Agent-Wert ein, den Mozilla Firefox verwenden soll. Ich habe meinen Namen und einen Link zu meiner Website zum ursprünglichen Wert hinzugefügt. Sie können auch einen aus der Liste der User Agent-Zeichenfolgen auswählen.Überprüfen Sie den neuen Wert , indem Sie in der Adresszeile ungefähr: eingeben.

Sie können diese User-Agent-Zeichenfolge von $_SERVER['HTTP_USER_AGENT'] in PHP abrufen.

0

Ich bin sicher, Sie haben eine sehr gute Antwort, aber wenn Sie nach einer Lösung suchen, die den COMPUTER und nicht den BROWSER identifiziert, dann schauen Sie in FLASH COOKIES a.k.a FLASH SHARED OBJECTS.

Thesen sind leistungsfähiger und können verwendet werden, um Daten zu speichern bis zu 100 KB und bleibt gleich in allen Browsern, die Blitz hat, so ist es besser, Lösung eindeutig einem Benutzer

1

Identifizierung Warum nicht ein Authentifizierungssystem implementieren und Stellen Sie diejenigen Benutzer, die die spezielle Funktionalität benötigen, in eine spezielle Gruppe ein?

0

Versuchen Sie dies.

$something=$_SERVER['HTTP_USER_AGENT']; 

Zur eindeutigen Benutzerprüfung $something entspricht Ihrer eigenen identifizieren. (Was auf Ihrem PHP-Code ist). Wenn ja, dann gehen Sie weiter.

Verwandte Themen