Seite 1 von 3

IP adresse im Profil

Verfasst: 29.10.2006 12:45
von scheibenbrot
Hallo,
ich habe dieses kleine Script gemacht:

Code: Alles auswählen

<html>
<head>
	<title>IP</title>
</head>
<body>
	<?php
	$ip = getenv("REMOTE_ADDR");
	echo("Ihre IP-Adresse: $ip");
	?>
</body>
</html>
Damit bekommt man angezeigt: Ihre IP-Adresse: blablabla
Nun möchte ich es ins Profil einbinden, dann soll aber die IP Adresse eines Users angezeigt werden.
Muss ich jetzt die variable der user id da einbinden? Aber wie?

mfg

Verfasst: 29.10.2006 12:59
von Olli Oberhausen
Die ip des users ist nur in der sessions und posts tabelle gespeichert.
Die sessions ip bleibt nur kurze zeit gespeichert. Damit wäre die ausgabe nur verfügbar wenn der user eingeloggt ist. Wenn das reicht kannst du sie mit decode_ip($profiledata['session_ip']) ausgeben lassen.

Möglich wäre eine abfrage der *_posts tabelle um die letzte bekannte ip herauszufinden. Das wäre um einiges komplizierter.

Olli

Verfasst: 29.10.2006 13:06
von scheibenbrot
In welcher Datei wird denn das $profiledata['session_ip'] generiert.
In der usercp_viewprofile finde ich nichts.

Ich möchte das ganze in die Nickpage haben, deswegen muss ich das wissen.

Verfasst: 29.10.2006 13:11
von Olli Oberhausen
scheibenbrot hat geschrieben: In der usercp_viewprofile finde ich nichts.
Logisch, du willst es ja auch drin haben....

#in usercp_viewprofile.php:
#Nach:

Code: Alles auswählen

	'USERNAME' => $profiledata['username'],
#Einfügen:

Code: Alles auswählen

	'CURRENT_IP' => (!empty($profiledata['session_ip'])) ? decode_ip($profiledata['session_ip']) : 'Offline',
#Und im Template irgendwo:

Code: Alles auswählen

IP-Adresse: {CURRENT_IP} 

Olli

Verfasst: 29.10.2006 13:17
von scheibenbrot
Also funktionieren tut es eigentlich.
Wenn ich dies in die nickpage.php einfüge steht da:
IP-Adresse: Offline

Was muss ich also hier dran ändern, damit es geht?:

Code: Alles auswählen

'CURRENT_IP' => (!empty($profiledata['session_ip'])) ? decode_ip($profiledata['session_ip']) : 'Offline',

Verfasst: 29.10.2006 13:25
von Olli Oberhausen
Hast recht,
die ip wird nicht im $profildata gepeichert.
Kannst die zeilen wieder löschen , sorry :grin:

Da bleibt nur der weg über eine zusätzliche sql abfrage...

Ist dir das denn so wichtig? Wofür braucht man sowas?

Olli

Verfasst: 29.10.2006 13:31
von scheibenbrot
ich hätte es gerne.
Wenn es über die tabelle geht....gerne :P :D

Verfasst: 29.10.2006 13:35
von Olli Oberhausen
Und was hättest du gern?
- die aktuelle ip (nur wenn online)
- die zuletzt bekannte ip (abhängig vom letzten post - kann sehr alt sein)
- die zuletzt bekannte ip (vom letzten login)

Verfasst: 29.10.2006 13:51
von scheibenbrot
Wenn jemand online ist die aktuelle und wenn jemand offline ist die letze aktuelle, als der User online war.

Verfasst: 29.10.2006 13:56
von Olli Oberhausen
Jetzt stellst du aber ansprüche :)

Die ip adresse des users wird jetzt alle 60 sekunden in die phpbb_users geschrieben.

SQL ausführen:

Code: Alles auswählen

ALTER TABLE `phpbb_users` ADD `user_last_ip` CHAR( 8 ) DEFAULT '0' NOT NULL
in sessions.php:
# Finde:

Code: Alles auswählen

SET user_session_time = $current_time, user_session_page = $thispage_id
# Ersetze mit:

Code: Alles auswählen

SET user_session_time = $current_time, user_session_page = $thispage_id, user_last_ip = '$user_ip'
#in usercp_viewprofile.php:
#Nach:

Code: Alles auswählen

	'USERNAME' => $profiledata['username'],
#Einfügen:

Code: Alles auswählen

	'CURRENT_IP' => (!empty($profiledata['user_last_ip'])) ? decode_ip($profiledata['user_last_ip']) : 'Offline',
#In profile_view_body.tpl irgendwo:

Code: Alles auswählen

Letzte bekannte IP-Adresse: {CURRENT_IP} 

Edith: Alles noch mal zusammengefasst...

Olli