IP Adresse ausgeben
Markus P.
- perl
Hi,
wie schon gesagt würde ich gerne wissen wie das Script genau ausschaun muss um die IP auslesen zu können.
Ich weis zwar das es irgendwie mit %ENV{remote_addr} funkt. aber da ich noch ein ziemlicher perl Newbie bin, hoffe ich das mir jemand hierbei helfen kann . Ich hab mir gedacht ,daß es irgendwie so aussehen muss.
#!/usr/bin/perl -w
use strict;
use CGI qw(:standard);
print $ENV{'REMOTE_ADDR'} ;
Was ich auch nicht genau weis ist ,wie ich dann mit der HTML Datei dieses Script aufrufe ,also wie das HTML tag aussehen muss.
Hi,
Ich weis zwar das es irgendwie mit %ENV{remote_addr} funkt.
Elemente eines Hashes %hash werden mit $hash{'Element'} angesprochen[1] (beachte das "$"). Das Element heißt in Deinem Fall 'REMOTE_ADDR', nicht 'remote_addr'.
#!/usr/bin/perl -w
use strict;
Sehr schön!
use CGI qw(:standard);
Hierfür unnötig.
print $ENV{'REMOTE_ADDR'} ;
Exakt. Ohne HTTP-Header ist das allerdings kein CGI-Script und erzeugt einen Internal Server Error, dessen Ursache Du übrigens immer im Error-Log des Servers nachlesen kannst. Abhilfe findest Du in
perldoc CGI
Was ich auch nicht genau weis ist ,wie ich dann mit der HTML Datei dieses Script aufrufe ,also wie das HTML tag aussehen muss.
<a href="script.cgi">
Cheatah
Hi,
use CGI qw(:standard);
Hierfür unnötig.
Hmmmm ? Die remote_addr subroutine ist doch ein Teil des CGI.pm soweit ich das verstanden habe ,oder ? ,also muss ich doch das CGI Modul aufrufen das diese Subroutine beinhaltet ,oder denk ich da einfach zu komplizert ?
Was ich auch nicht genau weis ist ,wie ich dann mit der HTML Datei dieses Script aufrufe ,also wie das HTML tag aussehen muss.
<a href="script.cgi">
hmmmm ,ich hab eigentlich gemeint ,daß das .pl Script irgendwie automatisch ausgeführt wird d.H. wenn die Seite geladen wird hätt ich gern so etwas dortstehen wie : You are coming from 324.234.35.23 oder so.
greetz.
Hallo Markus!
<a href="script.cgi">
hmmmm ,ich hab eigentlich gemeint ,daß das .pl Script irgendwie automatisch ausgeführt wird d.H. wenn die Seite geladen wird hätt ich gern so etwas dortstehen wie : You are coming from 324.234.35.23 oder so.
Da brauchst Du Server Side Includes (SSI). Werden aber nicht von jedem Server unterstuetzt, eventuell beim Provider fragen. Die HTML Datei muss auch in der Regel dann die Endung .shtml verpasst bekommen (wie diese hier vom Forum, wo das Datum oben im grauen Balken der Hauptdatei mittels SSI-Anweisung eingebaut ist).
Mehr zu den Server Side Includes in SELFHTML unter CGI/Perl.
Patrick
Hi,
Hmmmm ? Die remote_addr
REMOTE_ADDR, nicht remote_addr
subroutine
Es handelt sich um einen Key eines Hashs, also um eine Variable - genauer gesagt um eine Umgebungsvariable (Umgebung = ENVironment). Es ist _keine_ Subroutine. In
perldoc perldata
findest Du Informationen über Datentypen.
ist doch ein Teil des CGI.pm soweit ich das verstanden habe ,oder ?
Nein. %ENV ist eine "vom System gegebene" Variable. Siehe auch
perldoc perlvar
,also
Btw: Leerzeichen werden _nach_ dem Satzzeichen gesetzt, _nicht_ davor :-) (Ausnahmen: öffnende Klammer und Gedankenstrich)
hmmmm ,ich hab eigentlich gemeint ,daß das .pl Script irgendwie automatisch ausgeführt wird
SSI; siehe Patricks Antwort. Alternativ kannst Du auch z.B. PHP einsetzen.
Cheatah
Hi Cheatah,
Es handelt sich um einen Key eines Hashs, also um eine Variable - genauer gesagt um eine Umgebungsvariable (Umgebung = ENVironment). Es ist _keine_ Subroutine.
Ok ,jetzt wird das Ganze gleich klarer ,nur weis ich leider nicht wie jetzt eigentlich der Aufbau von dem .pl Script aussehen soll, weil die ganzen perldoc usw, sind doch auf englisch und bei so technisch Sachen hilft mir das leider auch nicht grad weiter.
Wenn ich es mit
#!/usr/bin/perl -w
use strict;
print $ENV{'REMOTE_ADDR'} ;
laufen lasse bekomme ich Server error ,wie du schon gesagt hast ,aber was ist daran jetzt falsch ? ,Ich ziehe die ENV Variable aus REMOTE_ADDR ,und habe es in .pl statt .cgi unbennant . An was leigt es jetzt noch ?
Hi,
bekomme ich Server error ,wie du schon gesagt hast ,aber was ist daran jetzt falsch ?
ich habe bereits gesagt, was daran falsch ist: es ist kein CGI-Script. Außerdem habe ich gesagt, daß Du im Error-Log nachsehen sollst, weil Du dort die Ursache findest; und wo Du zur Lösung nachschlagen sollst, habe ich Dir auch gesagt. Was willst Du noch mehr? :-)
,Ich
Dann gab es da noch so etwas, was ich erwähnt habe...
und habe es in .pl statt .cgi unbennant .
Üblicherweise (auf gut konfigurierten Systemen und ggf. bei richtigem Einsatz) sollte das keinen Unterschied machen.
Cheatah
hmm gut und schön ,nur wo find ich das Error Log ,sorry mit die ganzen Server Dinge kenn ich mich leider nicht gut aus =(
Hi,
hmm gut und schön ,nur
könntest Du Dir _bitte_ angewöhnen, deutschkompatibel zu schreiben, also Leerzeichen _nach_ Satzzeichen zu verwenden, und _nicht_ davor? Deine Texte sind sehr schwer lesbar, und noch schwerer zu zitieren. Danke.
wo find ich das Error Log
Das kann Dir der Administrator des Servers sagen.
Cheatah