Amigo mas bien, seria algo asi:
Código PHP:
<?php
define("LOG_FILE", "warning_regx.log");
function shutdown()
{
// Podria ser que la ultima expresion probada, fuera maliciosa asi que me la guardo en un archivo log
global $__datetime_before_execute_regex;
global $__user_regex_ok;
if (!isset($__user_regex_ok) or (!$__user_regex_ok)){
$now = date("d-m-Y H:i:s");
file_put_contents(LOG_FILE, "{$_POST['expresion_del_usuario']};$__datetime_before_execute_regex;$now;\n", FILE_APPEND | LOCK_EX);
}
}
register_shutdown_function('shutdown');
$__datetime_before_execute_regex = date("d-m-Y H:i:s"); // Justo antes de evalular
$__user_regex_ok = preg_match($_POST['expresion_del_usuario'];
if ($ok, $string))
{
echo "La expresión funciona!";
}
En el archivo log yo me guardaria tambien el ID del usuario, la IP, la fecha y hora del posible ataque y todo lo que tengas disponible.
Aclaro que si la expresion al evaluarse da FALSE, se va a guardar en el archivo LOG pero luego se descartaria como falso positivo por ejemplo por el momento en que se ejecuto vs momento en que se detuvo el script