Können wir den Thread löschen & neu aufmachen? Erstents sollten nur Tuts rein und
keine Bemerkungen dazu, außerdem sind manche Tut's nicht mehr auf dem neusten Stand

@DoUgHbOyS Tutorial 1
Tut nicht mehr aktuell, noch auf PHP3 Standart. (Momentan gibt es PHP5). Ausgeführen unter
PHP 5.3.0 kommt die Fehlermeldung:
Warnung! Spoiler!
Code:
Notice: Undefined variable: REMOTE_ADDR in *PFAD_ZUM_SCRIPT*\ip.php on line 2


Auf deutsch: Undefinierte Variable $REMOTE_ADDR. Nach neuem Standart müsste es lauten:

Code:
<?
$ipadresse = $_SERVER['REMOTE_ADDR'];
echo "Ihre IP ist: $ipadresse";
?>


@Palood
Das Tutorial (ist ja nicht wirklich eins) ist unzureichend.Du hast vergessen eine Anleitung zu geben wie man die php.ini anpassen muss damit es geht, oder du hast vergessen zu sagen das die Webspace die Mail funktion unterstützen muss, das ist sehr selten wegen der Spam gefahr. Wenn man das Script local ohne Web ausführt kommt die Fehlermeldung:

Code:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\tut-test\mail.php on line 11


Außerdem ist das Script nicht leicht anpassungsfähig, besser wäre:
Code:
<?php
error_reporting(E_ALL); /* Fehlermeldungen alle anzeigen um alle Fehler per Mail zu erhalten */
$mail = ""; /* Empfänger email */
$absender = ""; /* Absender email, kann auch wie der empfänger sein */
$domain = $_SERVER["SERVER_NAME"];
/* Funktion zum Versenden von Fehlernachrichten */
function getErrorHandler($errno, $errmsg, $filename, $linenum)
{
$error = "Time: " .date("Y-m-d H:i:s"). "\n"; 
$error .= "Message: " .$errmsg. "\n"; 
$error .= "File: " .$filename. "\n"; 
$error .= "Line: " .$linenum; 
mail($mail, "ERROR @ $domain", $error, "From: $absender"); /* Versenden der E-Mail */
}

set_error_handler("getErrorHandler"); /* Funktion definieren, die bei Fehlern aufgerufen werden soll */
?>


Zu meinem Tut: verbessert siehts so aus:
Code:
<?php
$logfile = "log";			 /* $logfile ist der Pfad zu dem Ordner für die Logs */ 
$logname = "zugriff.log";	/* Name der LogDatei im Ordner $logfile				*/
$time = date("j-M-Y, l");	 /* Setzten der Variable $time						 */ 
/* Erzeugen des Arrays $all (In Arrays kann man Werte Zussammenfassen und dabei Namen oder Nummern geben). Es dient der 
   Übersichtlichkeit. */
$all = array( 
 					  
				"name"		 	=> 		$_SERVER['SCRIPT_NAME'], 

				"browser"	 	=> 		$_SERVER['HTTP_USER_AGENT'],		
				"ip"		 	=> 		$_SERVER['REMOTE_ADDR'],		 
				"zeit"		 	=> 		$time,						   
				"ordner"	 	=> 		$logfile,						
				"datei"	 		=> 		$logname,						
				"request"	 	=> 		$_SERVER['REQUEST_METHOD'],
				"t"		 		=> 		' | ', 
/* Statt ' | ' kannst du ein anderes Trennzeichen einfügen das zwischen den Variablen stehen soll.
 * Ein Beispiel wie es jetzt aussieht:
 *  
 *  /log.php | 127.0.0.1 | Opera/9.80 (Windows NT 5.1; U; de) Presto/2.5.24 Version/10.53 | GET | 25-Jul-2010, Sunday
 *  Wenn du bei ' | ' '///' einsetzten würdest würde es so aussehen:
 *  /log.php///127.0.0.1///Opera/9.80 (Windows NT 5.1; U; de) Presto/2.5.24 Version/10.53///GET///25-Jul-2010, Sunday
 *  
 *  Mach's einfach wies dir gefällt
 *
 */
				"n"		 => "\n", /* nicht ändern !!! */
				"s"			=> '/'
			);
				
$daten= $all['name'].$all['t'].$all['ip'].$all['t'].$all['browser'].$all['t'].$all['request'].$all['t'].$all['zeit'].$all['n'];
$datei = fopen($all['ordner'].$all['s'].$all['datei'],"a") or die("Fehler beim öffnen von $all['ordner'].$all['s'].$all['datei'] im Modus a");
fwrite($datei, $daten) or die("Fehler beim Beschreiben");

/*
 * Jetz kannst du die Variable $daten noch anpassen. 
 * Du kannst die $all Variablen dort anders anordnen, wichtig ist:
 * 2 Variablen müssen durch .$all['t']. getrennt werden.
 * Als letztes muss .$all['n'] stehen.
 *  
 * <Variablen> 
 * $all['name']		 	<= Der Pfad + Name der aufgerufenen Datei
 * $all['t']		 	<= Trennzeichen
 * $all['ip']			<= IP des Besuchers
 * $all['browser']		<= Browser des Besuchers
 * $all['request']		<= Aufrufmethode (Post oder Get)
 * $all['zeit']			<= Datum im amerikanischen Format
 * $all['n']			<= EscapeSequenz (WICHTIG!!!)
 *  
 */
?>


Der Code ist nur minimal verändert, fehler beim öffnen von Dateien in PHP ist nicht wirklich gefährlich, da Perl nicht so Systemnah wie C ist.


MFG Bratack







Bearbeitet von lutz39 (16.08.2010, 13:08:40)
Bearbeitungsgrund: gespoilert, da Thread sonst zu sehr in die Breite gezogen wird