usuarios usuario usando sistema sesiones registro reconocimiento por guardar formulario enviar ejemplo desde descargar datos control con como autenticación administrador php logfile

usando - registro y reconocimiento de usuarios con php



cómo crear un archivo de registro en php? (8)

Quiero crear un archivo de registro para que mi sistema registre / registre cada acción que hacen dentro del sistema. Pero no tengo idea de cómo hacerlo.

Por ejemplo, tengo este código php que hace la función de inicio de sesión.

public function hasAccess($username,$password){ $form = array(); $form[''username''] = $username; $form[''password''] = $password; $securityDAO = $this->getDAO(''SecurityDAO''); $result = $securityDAO->hasAccess($form); //var_dump($form); //var_dump($result); if($result[0][''success'']==''1''){ $this->Session->add(''user_id'', $result[0][''id'']); //$this->Session->add(''username'', $result[0][''username'']); //$this->Session->add(''roleid'', $result[0][''roleid'']); return $this->status(0,true,''auth.success'',$result); }else{ return $this->status(0,false,''auth.failed'',$result); } }

ahora quiero crear un archivo de registro titulado ''la fecha de hoy'', y cuando esas funciones se utilicen para iniciar sesión, se escribirá que el usuario ha iniciado sesión, lo mismo que con otras funciones. Pero solo quiero un archivo único por cada día.

¿Podría alguien ser tan amable de guiarme y enseñarme cómo debo hacer mis códigos?


De acuerdo con la respuesta @jon. Acaba de agregar modificado la ruta para crear el directorio de registro dentro de la raíz

function wh_log($log_msg) { $log_filename = $_SERVER[''DOCUMENT_ROOT'']."/log"; if (!file_exists($log_filename)) { // create directory/folder uploads. mkdir($log_filename, 0777, true); } $log_file_data = $log_filename.''/log_'' . date(''d-M-Y'') . ''.log''; file_put_contents($log_file_data, $log_msg . "/n", FILE_APPEND); }

acaba de agregar $ _SERVER [''DOCUMENT_ROOT'']


Este es mi código de trabajo. Gracias a por los enlaces. Crea un controlador de error personalizado y llama a la función trigger_error con la excepción $errno correcta, incluso si no es un error. Asegúrese de que puede escribir en el directorio de archivos de registro sin acceso de administrador.

<?php $logfile_dir = "C:/workspace/logs//"; // or "/var/log/" for Linux $logfile = $logfile_dir . "php_" . date("y-m-d") . ".log"; $logfile_delete_days = 30; function error_handler($errno, $errstr, $errfile, $errline) { global $logfile_dir, $logfile, $logfile_delete_days; if (!(error_reporting() & $errno)) { // This error code is not included in error_reporting, so let it fall // through to the standard PHP error handler return false; } $filename = basename($errfile); switch ($errno) { case E_USER_ERROR: file_put_contents($logfile, date("y-m-d H:i:s.").gettimeofday()["usec"] . " $filename ($errline): " . "ERROR >> message = [$errno] $errstr/n", FILE_APPEND | LOCK_EX); exit(1); break; case E_USER_WARNING: file_put_contents($logfile, date("y-m-d H:i:s.").gettimeofday()["usec"] . " $filename ($errline): " . "WARNING >> message = $errstr/n", FILE_APPEND | LOCK_EX); break; case E_USER_NOTICE: file_put_contents($logfile, date("y-m-d H:i:s.").gettimeofday()["usec"] . " $filename ($errline): " . "NOTICE >> message = $errstr/n", FILE_APPEND | LOCK_EX); break; default: file_put_contents($logfile, date("y-m-d H:i:s.").gettimeofday()["usec"] . " $filename ($errline): " . "UNKNOWN >> message = $errstr/n", FILE_APPEND | LOCK_EX); break; } // delete any files older than 30 days $files = glob($logfile_dir . "*"); $now = time(); foreach ($files as $file) if (is_file($file)) if ($now - filemtime($file) >= 60 * 60 * 24 * $logfile_delete_days) unlink($file); return true; // Don''t execute PHP internal error handler } set_error_handler("error_handler"); trigger_error("testing 1,2,3", E_USER_NOTICE); ?>


Para escribir en un archivo de registro y crear uno nuevo cada día, puede usar la date("jnY") como parte del nombre del archivo.

//Something to write to txt log $log = "User: ".$_SERVER[''REMOTE_ADDR''].'' - ''.date("F j, Y, g:i a").PHP_EOL. "Attempt: ".($result[0][''success'']==''1''?''Success'':''Failed'').PHP_EOL. "User: ".$username.PHP_EOL. "-------------------------".PHP_EOL; //Save string to log, use FILE_APPEND to append. file_put_contents(''./log_''.date("j.n.Y").''.log'', $log, FILE_APPEND);

Entonces lo colocarías dentro de tu método hasAccess() .

public function hasAccess($username,$password){ $form = array(); $form[''username''] = $username; $form[''password''] = $password; $securityDAO = $this->getDAO(''SecurityDAO''); $result = $securityDAO->hasAccess($form); //Write action to txt log $log = "User: ".$_SERVER[''REMOTE_ADDR''].'' - ''.date("F j, Y, g:i a").PHP_EOL. "Attempt: ".($result[0][''success'']==''1''?''Success'':''Failed'').PHP_EOL. "User: ".$username.PHP_EOL. "-------------------------".PHP_EOL; //- file_put_contents(''./log_''.date("j.n.Y").''.txt'', $log, FILE_APPEND); if($result[0][''success'']==''1''){ $this->Session->add(''user_id'', $result[0][''id'']); //$this->Session->add(''username'', $result[0][''username'']); //$this->Session->add(''roleid'', $result[0][''roleid'']); return $this->status(0,true,''auth.success'',$result); }else{ return $this->status(0,false,''auth.failed'',$result); } }


Por favor revisa este código, funciona bien para mí.

$data = array(''shopid''=>3,''version''=> 1,''value=>1''); //here $data is dummy varaible error_log(print_r($data,true), 3, $_SERVER[''DOCUMENT_ROOT'']."/your-file-name.log"); //In $data we can mention the error messege and create the log


Por favor verifique con esta documentación.

http://php.net/manual/en/function.error-log.php

Ejemplo:

<?php // Send notification through the server log if we can not // connect to the database. if (!Ora_Logon($username, $password)) { error_log("Oracle database not available!", 0); } // Notify administrator by email if we run out of FOO if (!($foo = allocate_new_foo())) { error_log("Big trouble, we''re all out of FOOs!", 1, "[email protected]"); } // another way to call error_log(): error_log("You messed up!", 3, "/var/tmp/my-errors.log"); ?>


Puede usar la función trigger_error() para desencadenar errores de usuario / advertencias / avisos y set_error_handler() para manejarlos. Dentro del controlador de errores, es posible que desee utilizar error_log() o file_put_contents() para almacenar todos los registros en los archivos. Para tener un solo archivo para cada día simplemente use algo como sprintf(''%s.log'', date(''Ym-d'')) como nombre de archivo. Y ahora debes saber por dónde empezar ... :)


Use la función a continuación

// Enable error reporting ini_set(''display_errors'', 1); //Report runtime errors error_reporting(E_ERROR | E_WARNING | E_PARSE); //error_reporting(E_ALL & ~E_NOTICE); // Tell php where your custom php error log is ini_set(''error_log'', ''php_error.log''); $dateTime=date("Y-m-d H:i:s"); $ip= $_SERVER[''REMOTE_ADDR'']; $errorString="Error occured on time $dateTime by ip $ip"; $php_error_msg.=$errorString; // Append the error message to the php-error log //error_log($php_error_msg); error_log("A custom error has been triggered",1,"email_address","From: email_address");

La función anterior creará un archivo de inicio de sesión php_error con la descripción adecuada y se enviará un correo electrónico.


cree un archivo de registro en php , para ello necesita pasar datos sobre la función y creará un archivo de registro para usted.

function wh_log($log_msg) { $log_filename = "log"; if (!file_exists($log_filename)) { // create directory/folder uploads. mkdir($log_filename, 0777, true); } $log_file_data = $log_filename.''/log_'' . date(''d-M-Y'') . ''.log''; file_put_contents($log_file_data, $log_msg . "/n", FILE_APPEND); }