DEMOCaja de arena: crea, edita o borra libremente — nadie mas ve tus cambios.
Reiniciar datos  ·  ← Todos los ejemplos  ·  GitHub

Seguridad: XSS, CSRF, uploads y validación

Todo esto viene activado por defecto en cualquier tabla, sin configuración extra.

$crud = new AppyCrud($connection, 'reportes', $config, 'es', [ 'csrf' => true, // default 'insertFields' => ['titulo', 'correo', 'notas', 'adjunto'], 'editFields' => ['titulo', 'correo', 'notas', 'adjunto'], 'uploadDir' => $uploadDir, ]); // 'correo' => ['inputType' => 'email', 'rules' => ['required', 'email']] // 'notas' => ['inputType' => 'richtext_advanced'] -- se sanitiza al guardar
¿Y con MariaDB/MySQL en producción, en vez del SQLite de esta demo?

Esta demo usa SQLite en un archivo temporal para no necesitar una base de datos real. En tu proyecto, con MariaDB o MySQL, solo cambia cómo abres la conexión — el resto del código (TableConfig, AppyCrud, handle()) es exactamente igual.

$pdo = new PDO(
    'mysql:host=localhost;port=3306;dbname=mi_bd;charset=utf8mb4',
    'usuario',
    'clave'
);
$connection = Connection::fromPdo($pdo);
// MariaDB usa el mismo driver PDO 'mysql' que MySQL — no hay driver 'mariadb' separado.
// Con Laravel: Connection::fromPdo(DB::connection()->getPdo());
// Con CodeIgniter 4: Connection::fromPdo(\Config\Database::connect()->getConnection());

Cosas para probar en este ejemplo

Listado de reportes

Limpiar

Filtro avanzado

TituloCorreo ↓Notas (editor enriquecido)Adjunto (prueba con un .php o .exe)Acciones
Reporte de ejemplo 2beto@ejemplo.comPrueba tambien subir un archivo .php como adjunto: se guarda como .bin.
Reporte de ejemplo 1ana@ejemplo.comPrueba a editar este campo y pegar <script>alert(1)</script> — al gu…

Pagina 1 de 1

AnteriorSiguiente