Joomla Version: 4.4.4
PHP Version: PHP 8.3.6
Hoster: netcup
Hallo,
ein Plugin soll bei der Registrierung des Nutzer dessen IP-Addresse aufzeichnen.
Umsetzung: Beim Speichern der Nutzerdaten wird das Event onUserAfterSave ausgelöst. Über eine PHP-Funktion sollen dann die IP-Daten und die Nutzerdaten, die onUserAfterSave zur Verfügung stellt, zunächst in eine .log-Datei geschrieben werden, später in eine Datenbanktabelle.
Das Plugin lässt sich problemlos installieren, es gibt auch keine Fehlermeldung, wenn ich Plugin aktiviere und im Backend direkt aufrufe. Auch die Registrierung erfolgt ohne Fehlermeldung.
Leider wird trotz Nutzerregistrierung nichts in der Datei geloggt. Schreibrechte für die Datei habe ich vorübergehend auf 777 gesetzt, um auszuschließen, dass es an der Schreibberechtigung o.ä. liegt.
Weder beim Registrieren über das Frontend noch über das Backend wird etwas in die log-Datei geschrieben.
Hier der Quelltext der PHP-Datei:
<?php
//dont allow direct access
defined('_JEXEC') || die;
//required libs that the plugin will work
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Factory;
class plgUserLogIp extends CMSPlugin
{
public function onUserAfterSave($user,$isNew, $success, $msg) {
//Check if the user is new and the save operation was successfull
if($isNew && $success){
//Get the user's IP Address
$ip = JFactory::getApplication()->input->server->get('REMOTE_ADDR');
$hostname = JFactory::getApplication()->input->server->get(gethostbyaddr('REMOTE_ADDR'));
// Log the IP address along with the Users details
$logEntry = "New user registration initiated. \n";
$logEntry .= "Username: " . $user['username'] . "\n";
$logEntry .= "Email: " . $user['email'] . "\n";
$logEntry .= "IP Address: " .$ip. "\n";
$logEntry .= "Host:" .$hostname. "\n";
// Save the log entry to a file
$logFile = JPATH_SITE .'/logs/user_registration.log';
file_put_contents($logFile, $logEntry, FILE_APPEND);
}
return true;
}
}
Alles anzeigen
Hat jemand einen Tipp für mich?
Das IP-Logging ein heikles Thema sein kann, ist bewusst. Wir verwenden das IP-Logging allerdings schon bei unserer alten Softwarepalette und haben auch in den letzten Wochen durch das IP-Logging wieder einige Scammer unserer Community erspart, weshalb wir am IP-Logging daran festhalten möchten.
Gruß Lucas