PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Logging



Cyber Tjak
16.09.2010, 15:23
Also Ich habe ein kleines PHP-Script gefunden, welches IP; Host; Port; Timestep speichert.
Nun würde ich das Script gerne erweitern, so dass es OS, UserAgent & Refferer logt.
Da Ich ein absoluter PHP-Anfänger bin, habeIch nun gut 30 Minuten mit dem Editor und Google.de verbracht. Leider bisher ohne Erfolg.
Könnt Ihr mir helfen?
Hier ist das Script:

<html>
<head>
</head>
<body>
<?php

$opfertext = "Error";
$txt = "Log.txt";
$h = 1;
$p = 1;
$t = 1;
$d = 1;
$test = 0;


$ip = $_SERVER['REMOTE_ADDR'];
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
$port = $_SERVER["REMOTE_PORT"];
$time = date("h:i:s A");
$date = date("d.m.Y");

$textip = "IP Logging: ".$ip." - ";
if($h==1){$texthost=$host." - ";}
if($p==1){$textport=$port." - ";}
if($t==1){$texttime=$time." - ";}
if($d==1){$textdate=$date;}

$text = $textip.$texthost.$textport.$texttime.$textdate."\n";

if($test==1){
print "<br>Output test enabled:<br><br>".$text."<br><br>";}

if($test==0){
$datei = fopen($txt, "a");
fwrite($datei, $text);
fclose($datei);
print $opfertext;}

?>
</body>
</html>

Hier ein paar Hilfe-Zeilen, die ich per Google ausfindig machen konnte:
User Agent Logging:

<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>

Referrer:

?php
$referer ="$HTTP_REFERER ";
?>

Zu dem OS habe Ich leider nicht gefunden.

Also Eure "Aufgabe" besteht darin, die unteren Code-Schnipsel in das obere so einzubinden, dass nur der Text "Error" ausgespuckt wird und die Daten in die Datei "Log.txt" gespeichert werden.

Mir freundlichen Grüßen
Tjak

Shini
16.09.2010, 15:26
Also Eure "Aufgabe" besteht darin, die unteren Code-Schnipsel in das obere so einzubinden, dass nur der Text "Error" ausgespuckt wird und die Daten in die Datei "Log.txt" gespeichert werden.

Mir freundlichen Grüßen
Tjak
also deine aufgabe besteht darin, php zu lernen und das ganze selbst zu machen
in den Coding & Scripting Sections geht es ums Programmieren. Wenn ihr nicht programmieren könnt und auch nicht vor habt dies zu erlernen, dann werden eure Threads einfach gelöscht und ihr gegebenen Falls gewarnt oder verwarnt.

Mit freundlichen Grüßen
Shini

100
16.09.2010, 15:27
Hier programmiert niemand für dich..
PHP: $_SERVER - Manual (http://php.net/manual/de/reserved.variables.server.php)

OS steckt im Useragent, steht ALLES dort!

Ausgabe: echo

Tutorial für Textdateien: PHP +++8211; Arbeiten mit Textdateien +++8211; PHP - Onlinemagazin devmag.net (http://www.devmag.net/php/70-php-arbeiten-mit-textdateien.html)
Für nicht dumme: http://www.php.net/manual/de/ref.filesystem.php

Cyber Tjak
16.09.2010, 17:08
OK, dann bitte niemand programmieren sondern mir "nur" helfen.
Die Zeilen:

$opfertext = "Error";
$txt = "Log.txt";
$h = 1;
$p = 1;
$t = 1;
$d = 1;
$test = 0;


$ip = $_SERVER['REMOTE_ADDR'];
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
$port = $_SERVER["REMOTE_PORT"];
$time = date("h:i:s A");
$date = date("d.m.Y");

$textip = "IP Logging: ".$ip." - ";
if($h==1){$texthost=$host." - ";}
if($p==1){$textport=$port." - ";}
if($t==1){$texttime=$time." - ";}
if($d==1){$textdate=$date;}

$text = $textip.$texthost.$textport.$texttime.$textdate."\n";


verstehe Ich ja, jedoch verstehe Ich nicht, wie man das erweitern soll.
In der Zwischenzeit habe ich etwas weiter versucht und verstanden, wie es formatiert ist.
Mit dem Referrer eingebaut sollte der Code ja nun so aussehen:

<html>
<head>
</head>
<body>
<?php

$opfertext = "Error";
$txt = "Log.txt";
$h = 1;
$p = 1;
$t = 1;
$d = 1;
$r = 1;
$test = 0;


$ip = $_SERVER['REMOTE_ADDR'];
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
$port = $_SERVER["REMOTE_PORT"];
$time = date("h:i:s A");
$date = date("d.m.Y");
$referer ="$HTTP_REFERER ";

$textip = "IP Logging: ".$ip." - ";
if($h==1){$texthost=$host." - ";}
if($p==1){$textport=$port." - ";}
if($t==1){$texttime=$time." - ";}
if($d==1){$textdate=$date;}
if($r==1){$textreferrer=$referer;}

$text = $textip.$texthost.$textport.$texttime.$textdate.$r eferer"\n";

if($test==1){
print "<br>Output test enabled:<br><br>".$text."<br><br>";}

if($test==0){
$datei = fopen($txt, "a");
fwrite($datei, $text);
fclose($datei);
print $opfertext;}

?>
</body>
</html>

Jedoch wirft es dann mir einen Fehler hin:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /users/Tjak/www/index.php on line 31

Shini
16.09.2010, 17:23
$text = $textip.$texthost.$textport.$texttime.$textdate.$r _eferer."\n";
da is n leerzeichen das da nich hingehört
und es fehlt der verkettungsoperator

Cyber Tjak
16.09.2010, 17:29
Das Leerzeichen habe ich aus versehen später hin zugeschrieben.
Der Fehler tritt nach wie vor auf.

isch.x
16.09.2010, 17:31
$referer ="$HTTP_REFERER ";sollte eher


$referer = $HTTP_REFERER;sein...


und dann noch


$text = $textip.$texthost.$textport.$texttime.$textdate.$r eferer"\n";
zu

$text = $textip.$texthost.$textport.$texttime.$textdate.$r eferer."\n";

inout
16.09.2010, 17:34
"$textip$texthost$textport$texttime$textdate$refere r\n";
Der Code ist einfach nur Müll. Lern bitte einfach PHP...

Cyber Tjak
16.09.2010, 17:36
$referer ="$HTTP_REFERER ";sollte eher


$referer = $HTTP_REFERER;sein...


Dann das leerzeichen weg und dann, das st aber geschmackssache, statt print echo verwenden...

Habs geändert, der selbe Fehler besteht trotzdem weiterhin.

100
16.09.2010, 17:37
Er sagt sogar die Zeile !!!

$text = $textip.$texthost.$textport.$texttime.$textdate.$r eferer"\n";

Rate mal was daran nicht stimmt? Du hast anscheinend schon rausgefunden, dass man mit dem "." Operator mehrere Ausdrücke verbinden kann. Wenn du also Variablen mit Textstrings verbinden willst, dann benutz den Operator. Entweder also immer "." schreiben, oder ALLES in Anführungszeichen (") setzen. Innerhalb von Anführungszeichen werden die Variablen auch als solche erkannt: "$textip$texthost$textport$texttime$textdate$refere r\n";

Ohne das Leerzeichen natürlich kp warum das immer kommt

Cyber Tjak
16.09.2010, 17:44
Also, der Leerzeichen existierte in dem Original-File gar nicht, das habe ich bei dem Beitrag oben "aus versehen" getippt.
Der Fehler lag an dem ".", welches nicht vorhanden war.
Nun habe Ich das Punkt hinzugeschrieben und mein Glück noch einmal versucht.
Diesmal wird zwar der Text, den Ich wollte ("Error") ausgespuckt, jedoch ist der Referrer in der Log.txt nicht vorhanden.

100
16.09.2010, 17:52
Wenn du keinen hast, ist die Variable logischerweise leer :(
Und natürlich liegts am Punkt, das hab ich doch auch gesagt :rolleyes:

/edit
Mach das mal so:
$referer=$_SERVER["HTTP_REFERER"];

Ehrlich gesagt hab ich auch noch nicht den Sinn darin verstanden, wieso du für jede Variable jeweils zwei Variablen benutzt. Komplett unnötig und nur unübersichtlicher..

Cyber Tjak
16.09.2010, 18:01
Shini hat mir den Code mal richtig umgeschrieben:

<html>
<head>
</head>
<body>
<?php

$txt = "Log.txt";

$ip = $_SERVER['REMOTE_ADDR'];
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
$port = $_SERVER["REMOTE_PORT"];
$time = date("h:i:s A");
$date = date("d.m.Y");
$referer = $HTTP_REFERER;

$textip = "IP Logging: ".$ip." - ";
$texthost = $host." - ";
$textport = $port." - ";
$texttime = $time." - ";
$textdate = $date;
$textreferrer = $referer;

$text = $textip.$texthost.$textport.$texttime.$textdate.$r eferer."n";

$datei = fopen($txt, "a");
fwrite($datei, $text);
fclose($datei);
echo "Error";

?>
</body>
</html>

So klappt es nun auch, jetzt fehlt nur noch der UserAgent.

100
16.09.2010, 18:02
$text = $textip.$texthost.$textport.$texttime.$textdate.$r eferer."n";
6.09.2010nIP

Fällt dir was auf?

Shini
16.09.2010, 18:06
$referer."n";

Fällt dir was auf?

im code von mir steht \n ;)

Cyber Tjak
16.09.2010, 18:14
im code von mir steht \n ;)

Also ich lese "n";
FrEe-hAcK.com :: NoPaste (http://nopaste.free-hack.com/index.php?id=44c1476296)

Der UserAgent Code soll wohl so sein:
FrEe-hAcK.com :: NoPaste (http://nopaste.free-hack.com/index.php?id=9b7e7125c9)

Naja, ist zwar richtig, jedoch hätte ich gerne sowas geloggt:

Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7
da sowas auch Chrome etc. fähig ist.
Der Code oben erkennt Chrome als "MacBrowsern".

Shini
16.09.2010, 18:15
Also ich lese "n";
.
dann ists beim pasten lost gegangen :D
naja ich steig hier aus.. sonst läuft nur wieder alles darauf hienaus
das wir für dich coden und du danach genau so weit bist wie vorher mit dem unterschied das der code funzt

Cyber Tjak
16.09.2010, 18:16
Ach komm bitte..
Wäre wichtig :p

Starflow
16.09.2010, 18:20
Was ist den so schwer daran sich mal ne halbe Std hinzusetzten und ein wenig zu lesen? :rolleyes:
Mehr brauch man für sowas simples echt nicht.



<?php

$txt = "Log.txt";
$ip = "IP Logging: ".$_SERVER['REMOTE_ADDR']." - ";
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"])." - ";
$port = $_SERVER["REMOTE_PORT"]." - ";
$userAgent = $_SERVER['HTTP_USER_AGENT']." - ";
$dateTime = date("h:i:s A - d.m.Y");
$referrer = $HTTP_REFERER;

$text = $ip.$host.$port.$userAgent.$dateTime.$referer."\n";

$datei = fopen($txt, "a");
fwrite($datei, $text);
fclose($datei);
echo "Error";

?>




/E Wieso verhaut der PHP-Code Tag den die [] so oO

Cyber Tjak
16.09.2010, 18:22
Der UserAgent Log sollte so aussehen: Gecko/20070914 Firefox/2.0.0.7
Das tut es aber nicht :(

Starflow
16.09.2010, 18:29
Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.53 Safari/534.3

So sieht er bei mir aus zumindestens beim Chromium 6.0.472.53

Cyber Tjak
16.09.2010, 18:33
Sorry, mein Fehler, habe die Domain gar nicht aufgerufen..
Vielen vielen Dank.

Noch eine letzte Frage:
Gibt es eine Möglichkeit, die Uhrzeit im 24H-Format zu loggen?

Schattenbaum
16.09.2010, 18:34
Schau mal hier :)
Weblogger 1.1 - Fred777 (http://peterlustig.pytalhost.com/index.php?s=8&id=21)

Starflow
16.09.2010, 18:36
rtfm!

100
16.09.2010, 18:38
Gibt es eine Möglichkeit, die Uhrzeit im 24H-Format zu loggen?

Es gibt eine Verzeichnis von und für Php, in dem ALLES drin steht. Wieso traust du dich nicht selber mal einen Blick dort hinein zu werfen? Die ganze Aktion hier sollte dir zu denken geben..

PHP: time - Manual (http://php.net/manual/de/function.time.php)
http://www.php.net/manual/de/function.date.php


rtfm!
!!!

Cyber Tjak
16.09.2010, 18:42
Edit: Mist.

Aber kann mir einer erklären, wie ich das mit den 24 H einbauen soll?

100
16.09.2010, 18:47
Also langsam reichts..
Mit der linken Maustaste hier drauf klicken
>>> PHP: date - Manual (http://www.php.net/manual/de/function.date.php) <<<

Und in Idiotenversion:
http://www.schattenbaum.net/php/datum.php

Das MUSST du jetzt mal selber schaffen :rolleyes:

Cyber Tjak
16.09.2010, 18:54
Also langsam reichts..
Mit der linken Maustaste hier drauf klicken
>>> PHP: date - Manual (http://www.php.net/manual/de/function.date.php) <<<

Und in Idiotenversion:
PHP für dich - Datum und Uhrzeit mit PHP ermitteln und formatieren (http://www.schattenbaum.net/php/datum.php)

Das MUSST du jetzt mal selber schaffen :rolleyes:

Ich bin kein normalfall..
Der Code müsste dann also so sein:

<?php

$txt = "Log.txt";
$ip = "IP Logging: ".$_SERVER['REMOTE_ADDR']." - ";
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"])." - ";
$port = $_SERVER["REMOTE_PORT"]." - ";
$userAgent = $_SERVER['HTTP_USER_AGENT']." - ";
$dateTime = date("h:i:s H - d.m.Y");
$referrer = $HTTP_REFERER;

$text = $ip.$host.$port.$userAgent.$dateTime.$referer."\n";

$datei = fopen($txt, "a");
fwrite($datei, $text);
fclose($datei);
echo "Error";

?>

Mit großem H.

Jedoch wird mir dann sowas ausgespuckt:

IP Logging: IP - Host - Port - Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.5 Safari/534.7 - 07:51:23 19 - 16.09.2010



...und noch was

Wie kriegt man einen Redirect hin?
Es müsste doch so aussehen oder?

<?php

$txt = "Log.txt";
$ip = "IP Logging: ".$_SERVER['REMOTE_ADDR']." - ";
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"])." - ";
$port = $_SERVER["REMOTE_PORT"]." - ";
$userAgent = $_SERVER['HTTP_USER_AGENT']." - ";
$dateTime = date("h:i:s H - d.m.Y");
$referrer = $HTTP_REFERER;

$text = $ip.$host.$port.$userAgent.$dateTime.$referer."\n";

$datei = fopen($txt, "a");
fwrite($datei, $text);
fclose($datei);
echo "Error";
header ("HTTP/1.1 301 Moved Permanently");
header ("Location: http://www.example.com/");
exit();
?>

Da kommt aber ein Fehler :( :

Error
Warning: Cannot modify header information - headers already sent by (output started at /users/User/www/index.php:16) in /users/hrklez/www/index.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at /users/User/www/index.php:16) in /users/hrklez/www/index.php on line 18

Starflow
16.09.2010, 19:00
header ("HTTP/1.1 301 Moved Permanently");
header ("Location: http://www.example.com/");

Warning: Cannot modify header information - headers already sent by (output started at /users/User/www/index.php:16) in /users/hrklez/www/index.php on line 17

Warning: Cannot modify header information - headers already sent by (output started at /users/User/www/index.php:16) in /users/hrklez/www/index.php on line 18


Die Aussage ist doch klar und deutlich...so langsam geb ichs auf ich hab das Gefühl du KANNST gar nicht Lesen >.<

100
16.09.2010, 19:00
Den Fehler bekommst du, weil du ab dem Moment, wo du etwas ausgibst (bei dir echo) nichts mehr am Header verändern kannst. Steht auch in der Error Meldung aber macht nichts..

Du könntest alternativ auch einen Link zu deinem Script einbauen, mit dem du dich dann quasi selber aufrufst.

Die 19 aus deinem Timeding kommt von dem "H"..

inout
16.09.2010, 19:00
Dann nimm halt mal das echo raus...

wow, 3x um 20:00 :)

Cyber Tjak
16.09.2010, 19:04
Dann nimm halt mal das echo raus...

Done.

Aktueller Zustand: Es klappt aber das 24H-Format sitzt immer noch nicht -.-


Die 19 aus deinem Timeding kommt von dem "H"..

Das "H" soll aber das 24H-Format aktivieren..

100
16.09.2010, 19:06
Das aktiviert aber nichts, sondern jeder Buchstabe wird durch eine bestimmte Zahl ersetzt.. das ist die Formatierung.

Shini
16.09.2010, 19:06
kann das hier mal langsam jemand schließen.. ?
es läuft wieder nur alles darauf hienaus das ihm alles gecoded wird...

http://free-hack.com/groups/f-ing-do-yourself-group.html
please please please ... :(

Cyber Tjak
16.09.2010, 19:08
Nur noch der letzte Wunsch.. Bitte.
Ich will auch nichts gecodet haben.
Erklärt mir nur, wie ich es schaffe, dass es im 24 H Format gespeichert wird.

Starflow
16.09.2010, 19:08
Ja das mit dem H ist eindeutig ein ID-10T Fehler

Wie spät war es als er geloggt hat? Bzw in welcher Stunde(HOUR!!!!11elf) des Tages ist das passiert?


Wir haben schon alles für dich gecodet...du bist nur zu dämlich um zu Lesen und dein Hirn zu benutzen das ist scheinbar alles....sry aber das ist die Harte wahrheit...

inout
16.09.2010, 19:10
H:i:s - d.m.Y

Cyber Tjak
16.09.2010, 19:11
Ja das mit dem H ist eindeutig ein ID-10T Fehler

Wie spät war es als er geloggt hat? Bzw in welcher Stunde(HOUR!!!!11elf) des Tages ist das passiert?


Wir haben schon alles für dich gecodet...du bist nur zu dämlich um zu Lesen und dein Hirn zu benutzen das ist scheinbar alles....sry aber das ist die Harte wahrheit...

Musst dich nicht entschuldigen, wird wohl stimmen..

inout, vielen Dank..

Kann endlich geschlossen werden :D