✦ Preferences saved
DOCS
// PHP File Manager · v1.0.0 · Dokumentation

af Tyrus Angel

En professionel enkeltfils PHP-filmanager bygget til udviklere & systemadministratorer der kraever reel kraft uden unodigt bloat. Upload en fil. Ingen Composer. Ingen npm. Ingen database.

v1.0.0 Single File PHP 8.0 → 8.4 CodeMirror 5 EN / RO / DK Zero Dependencies Commercial License
🚀

Installation

1
Upload manager.php til din server — hvor som helst inde i din web-rod
2
Abn det i din browser
3
Gennemfoer den engangs-setup-guide
4
Faerdig — du er inde
Ingen afhaengigheder. Ingen composer install. Ingen npm. Ingen database. Ingen .htaccess-aendringer kraevet. Konfiguration gemt automatisk i writable/.manager_config.
🛸

Foerste Koring — Setup-guide

Ved foerste opstart viser manageren en komplet setup-guide med en cinematisk moerk baggrund — animeret SVG med stjerner, konstellationslinjer, tre roterende geometriske ringe og de personlige brandnavne TYRUS og ANGEL lysende pa hver side.

① Adgangskode
  • Minimum 8 tegn
  • Live adgangskodestyrke-maler med 7 scoringskriterier
  • Live adgangskode-match-indikator mellem begge felter
  • Knap “Foreslag staerk adgangskode” — genererer automatisk en sikker adgangskode
  • Vis/skjul-skifte pa begge felter
② Hjemmeside URL
  • Fuld URL — brugt af Forhands­visnings-knappen og cacherydning
  • Inline URL-validering
  • Logo-tip: skriv hvert ord i dit domane med stort bogstav for multi-farvet logo-effekt
③ Hosting Diskplads
  • Forudindstillede knapper: 10 / 20 / 50 / 100 / 200 GB (desktop), 3-kolonne gitter (mobil)
  • Brugerdefineret GB-input med spinner-knapper ▲▼
  • Live byte-konverteringsvisning
Sprogskifter — EN / RO / DK-faner synkroniseret med kortets kantgløde-animation via en kontinuerlig requestAnimationFrame-loop.
Indsend-animation: Ved gyldig indsendelse vises et sci-fi-overlay med en 6-trins animeret statuslinje, oversat til alle 3 sprog, der koerer 2,2 sekunder foer selve POST. Fuld PRG-maenstre — fejl overlever omdirigering uden problemer med gen-indsendelse.
Konfiguration gemt som JSON — bcrypt-hashet adgangskode, hjemmeside-URL, diskplads i bytes, opsaetningsdato, sprog.
🔐

Login & Sikkerhed

  • Adgangskode bekraeftet mod bcrypt-hash i writable/.manager_config
  • Brute-force beskyttelse — IP sporet i writable/.login_attempts
  • Forsøg 1: “Noget virker ikke rigtigt her.”
  • Forsøg 2: “Interessant... fortsaetter du?”
  • Forsøg 3: IP permanent bandlyst — “Vi ses i et andet liv.” — skrevet til writable/.blocked_ips
  • Session timeout — 30 minutters inaktivitet → automatisk omdirigering til login
  • Advarselsbar vises 2 minutter foer udloeb med live nedtaelling
  • Knappen “Forlaeng” nulstiller bade JS-timer og PHP-session samtidigt
  • Aktivitetshændelser (mousemove, keydown, click, scroll) nulstiller inaktivitetstælleren
  • Alle handlinger logget med tidsstempel til writable/.activity_log — IP-adresse logget kun for LOGIN og LOGOUT
👁

IP-blokeringsskarm

Naar en IP er bandlyst, vises i stedet for en normal fejlside en fuldskærms animeret canvas-oplevelse:

  • Menneskeligt ansigt tegnet proceduremæssigt ved hjælp af ctx.bezierCurveTo og ctx.ellipse
  • Øjne der følger markøren i realtid — pupiller sporer musen med begrænset bevægelse
  • Tilfældig blinken med variabel timing (tilfældig 180–480 billeder)
  • Periodisk glitch-effektgetImageData/putImageData udsnits­forskydning + rød farvetone
  • CRT-scanlinjer — vandrette linjer med 4px mellemrum over hele canvas
  • Radial vignet — mørke kanter der lukker sig
  • Brugerdefineret markør — standardmarkør skjult, erstattet af lille rød prik
  • Blokeret: højreklik, F12, Ctrl+U/I/S, Escape, scroll
  • Beskeder med progressiv fade-in (2s og 5s forsinkelse)
  • Mus forlader vindue: tekstfarve skifter + bogstavafstand udvides
  • Subtil åndedrætsanimation på body-elementet
🖥

Manager Interface

Headerbar
  • Dynamisk logo — genereret fra hjemmesidens URL. Hvert ord farvet forskelligt. Store bogstaver i URL = separat farve per ord
  • Diskforbrugslinje — visuel linje der viser brugt / samlet plads med nøjagtige MiB/GiB-værdier. Cache opdateret hvert 5. minut
  • Animeret sprogskifter — pille glider jævnt mellem EN / RO / DK (cubic-bezier). Nul side­indlæsning — fuld UI gengives via applyUiLang(). På mobil: simple kantede knapper
  • Header-knapper: 📋 Log · ⚠ Fejl · 🐘 PHP · ⌨ Genveje · 🔓/🔒 Root OFF/ON · ▶ Forhands­visning · 💾 Gem · Log ud
Vaerktojslinje
  • Navigation — ← Tilbage / → Frem med fuld historik. Knapper korrekt deaktiverede ved historikgrænserne
  • Brødkrummesti — klikbare stisgmenter til hurtig navigation
  • Søg filer — filnavnesøgning (max 100 resultater, ufølsom for store/små bogstaver, rekursiv)
  • I filer — skifte til indholdsøgningspanelet
  • Ny Mappe / Ny Fil — modal med navneinput
Sidepanel (Venstre Panel)
  • Kan ændres i størrelse — træk kant (min 160px, max 520px). Gemt i localStorage + sessionStorage. Dobbeltklik = nulstil til 270px
  • SERVERFILER — fuld fil/mappe-træ med typeikoner
  • Favoritter ⭐ — stjerne/fjern stjerne fra enhver fil eller mappe. Gemt server-side. Inline SVG-stjerneikon i listen
  • Flervalg — afkrydsningsfelter + Vælg alle. Massehandling: ZIP · Download · Omdøb · Slet
  • Masse-ZIP — opret navngivet arkiv fra valgte elementer
  • Masse-download — valgte som ZIP, streamet direkte til browser (bygget via tempnam, slettet umiddelbart efter overførsel)
  • Multi-omdøbning — masse-omdøbningsguide til valgte filer
  • Upload-zone — træk & slip eller klik. Konfliktmodal: Erstat / Behold begge (auto-nummereret) / Annuller
  • Indholdsøgningsinput — søg inde i filer fra sidepanelet
Kontekstmenu (Hoejreklik / Lang tryk)
Edit · Preview · Open folder · Download · Rename · ZIP/Backup · Extract here · Permissions (chmod) · Delete · Add to Favorites / Remove from Favorites
📝

Kodeeditor

Bygget pa CodeMirror 5 med 75+ CDN-scripts. Tema: Dracula dark.

107 Sprog Understoedt
PHP · HTML · CSS · SCSS · LESS · Sass · Stylus · JavaScript · TypeScript · JSX · TSX · JSON · JSON5 · JSONC · XML · SVG · SQL · MySQL · PostgreSQL · SQLite · Markdown · Shell/Bash · Zsh · Fish · Ksh · YAML · Python · Ruby · Go · Rust · C · C++ · C# · Java · Kotlin · Swift · Dart · Lua · Perl · R · Scala · Erlang · Haskell · F# · Clojure · Lisp · Dockerfile · NGINX · INI · TOML · Twig · Handlebars · Jinja2 · Django · Vue · CoffeeScript · and more

Særlig filnavnsgenkendelse: .htaccess → shell · .env → shell · Dockerfile → dockerfile · Makefile → shell · .gitignore → shell · .babelrc / .eslintrc → JSON

Editorfunktioner
  • Parentesmatch · Auto-luk parenteser · Fremhævning af aktiv linje
  • Kodefoldning — foldGutter med 4 folde-addons (klammer, indrykning, XML, kommentar)
  • Autofuldfoersel — 5 hint-motorer (anyword, JS, CSS, HTML, XML). 400ms forsinkelse, min 3 tegn, undertrykt i strenge/kommentarer. Ctrl+Space = manuelt
  • Kommenter/fjern kommentarCtrl+/
  • Skriftstørrelses­kontrol — A− / A+ i bundlinjen
  • Brugerdefinerede rullepaneler — macOS-stil (3px transparent kant)
  • Billedforhands­visning — jpg, jpeg, png, gif, webp, svg, ico vist inline i stedet for editor
Faner
  • Flere filer aabne samtidigt
  • Omarrangering via træk & slip — venstre/højre slippe-indikator med violet box-shadow
  • Ændringsprik — visuel indikator når filen har ugemte ændringer
  • Fane-kontekstmenu (højreklik): Luk / Luk andre / Luk uændrede / Luk alle
  • Advarsel om ugemte ændringer ved lukning
Find & Erstat
  • Fremhæver alle matches samtidigt med markText
  • Aktivt match i anden farve — tallerafvisning: 3 / 12
  • Naviger: Enter (næste) / Shift+Enter (forrige)
  • Erstat ét → / Erstat alle ⟳
🔬

Kodeanalysator / Linter

Åbner som et sidepanel ved siden af editoren via knappen 🔍 Analyser. Understøtter: .php · .css · .scss · .less · .js · .ts · .jsx · .tsx

Visuelle linje­markører — problemer markeret direkte i editor med farvekodet klasser. Klik på problem i panel → setCursor + scrollIntoView + 1,5s fremhævnings­blink på linjen.
Detektering af minificeret fil — via filnavn (.min.js, .bundle.js m.fl.) eller indhold (gns. linje >300 tegn). Viser venlig besked med knappen “Analyser alligevel →”.
PHP-tjek
TjekAlvorlighedBeskrivelse
PHP Syntaks🔴 errorphp -l via shell_exec eller token_get_all() ParseError-fallback
var_dump / print_r efterladt i kode🟡 warningFejlretnings-output ikke fjernet
$_SERVER['PHP_SELF'] uden htmlspecialchars()🟡 warningXSS-sårbarhed
die()/exit() med hardkodet streng🟡 warningAfslører serverinfo i produktion
$_POST/$_GET/$_REQUEST uden isset()🟡 warningKontekstbevidst — 3 linjer op/ned tjekket
PHP-funktions-stavefejl (118 mønstre)🔴 errorarray_mpa → array_map, jsno_encode → json_encode, etc.
Duplikerede funktionsdefinitioner🔴 errorMed reference til første-definitions-linjen
return uden for enhver funktion🟡 warningStrukturel klammerybde-analyse
md5() til adgangskoder🟡 warningKun når tæt på password/pass/pwd/hash kontekst
TODO / FIXME / HACK🔵 infoFuld kommentartekst udtrukket
CSS / SCSS / LESS Tjek
TjekAlvorlighedBeskrivelse
Ugyldig CSS-egenskab🟡 warning200+ gyldige egenskaber valideret
CSS-egenskabs-stavefejl🟡 warning~150 mønstre, Levenshtein ≤ 3 forslag
Ugyldig egenskabsværdi🟡 warningVærdi valideret mod kendte gyldige muligheder per egenskab
Duplikeret egenskab i blok🟡 warningSamme egenskab defineret to gange i samme blok
Dobbelt semikolon ;;🟡 warningHyppig tastefejl
JS / TS Tjek
TjekAlvorlighedBeskrivelse
console.log efterladt i kode🔵 infoFjern inden produktionsdeploy
debugger; efterladt i kode🟡 warningStopper udførelse i browser
typeof sammenlignet med ==🟡 warningBør bruge ===
Ugyldig NaN-sammenligning (=== NaN)🔴 errorBrug Number.isNaN() eller isNaN()
eslint-disable efterladt i kode🔵 infoKan være glemt
TODO / FIXME / HACK🔵 infoFuld kommentartekst udtrukket
Robusthed: PCRE-grænser 10M, JIT deaktiveret, try/catch Throwable wrap — krasjer aldrig. Kompatibel PHP 8.0 → 8.4.
📦

ZIP-browser

Klik på en .zip-fil → åbner som panel der erstatter editorzonen.

  • Udvidbart træ — hierarkisk med dybdeindrykning
  • Kaskaderende afkrydsningsfelter — vælg mappe = vælg alle underelementer rekursivt. Delvis valg = individuelle filer sendt
  • Brugerdefineret hierarkisk sortering — mapper først, filer alfabetisk
  • Selektiv udtrækning — intelligent præfiks-fjernelse, ingen uønskede indlejrede stier
  • Konflikt-fortjek — viser præcis hvilke filer der ville blive overskrevet før udtrækning
  • Udtrækning via træk & slip — træk fra ZIP-panel til mappe i filepanelet. Destinationsmappen fremhæves ved hover
  • Fuld udtrækning — udtræk alt indhold på én gang

Sammenlign & Diff

Diff .bak

Hver gemning opretter automatisk .bak. ↕ Diff .bak viser visuelt diff med 3-linje kontekst. Knappen “Gendan fra .bak” er tilgængelig.

Side-om-side Sammenligning
  • Fil 1: aktuel editorfil (automatisk)
  • Fil 2: klik på en fil i sidepanelet mens panelet er åbent
  • Statistik: +N tilføjet / -N fjernet
  • Farvekodede: ændret (rav/blå) · tilføjet (grøn) · fjernet (rød) · adskiller (mørk)
  • Uafhængig rulning per kolonne

Multi-omdoebning

  • Mønsterkontroller: Præfiks · Suffiks · Find · Erstat (alle kan kombineres)
  • Auto-nummerering: 001, 002, 003…
  • Live forhands­visning: gammelt navn → nyt navn per fil. Individuelle inputs redigérbare
  • Ændrede navne fremhævet i gult
  • Alle omdøbninger i én operation med konfliktdetektering
📋

Aktivitetslog

Aktivitetslog

Hver handling logget: LOGIN · LOGOUT · SAVE · UPLOAD · DELETE · RENAME · NY MAPPE · NY FIL · ZIP · UNZIP · UNZIP-SELEKTIV · CHMOD · RYD CACHE · MULTI-OMDØB — med tidsstempel, handlingstype, filsti. IP-adresse kun logget for LOGIN og LOGOUT. Gemt i writable/.activity_log som JSON. Kan ryddes fra modal.

PHP Fejllog
  • Parser CI4-format (LEVEL - DATE --> MSG) og PHP-standard ([date] PHP Fatal error:) log­formater
  • Rekonstruerer fulde stack traces
  • Grupperet efter alvorlighed: Fatal · Fejl · Advarsel · Besked · Info
  • Kollaps/udvid per gruppe
  • Stack traces vist inline med APPPATH/SYSTEMPATH fremhævning
  • Omvendt kronologisk rækkefølge
🔓

Root-tilstand

Root OFF (standard) — navigation begrænset til dokumentrod (public_html).

Root ON — naviger over public_html til serverroden. Adgang til logs, konfigurationer, filer uden for webroden. Advarsel vist som toast-besked og header-knap ændres til 🔑 Root ON når aktiv.

🔧

Backend AJAX API

Alle operationer via manager.php?action=ACTION:

Backend APIBeskrivelse
listMappeindhold — navn, type, størrelse, ændret, sti, tilladelser
readFilindhold (max 5MB)
readimageBillede som base64 data-URI (jpg, png, gif, webp, svg, ico)
saveGem fil — opretter automatisk .bak af forrige version
uploadUpload — tilstande: spørg / erstat / kopiér (auto-nummereret)
downloadDownload enkelt fil via HTTP
download-zipFlere filer som ZIP — bygget via tempnam, streamet til browser, slettet umiddelbart efter
deleteSlet filer/mapper — rekursiv, valgfri .bak sikkerhedskopi
renameOmdøb — konfliktdetektering, valgfri tvungen overskrivning
newfolderOpret mappe (rekursiv mkdir)
newfileOpret tom fil
zipOpret ZIP-arkiv på server
zip-listZIP-indhold som hierarkisk træ
unzipUdtræk fuldt ZIP-arkiv
unzip-selectiveUdtræk valgte elementer med intelligent præfiks-fjernelse
unzip-checkFortjek udtræknings­konflikter før udtrækning
chmodSkift fil/mappe-tilladelser
searchRekursiv filnavnesøgning (max 100 resultater)
searchcontentTekst inde i filer (max 50 filer × 5 matches)
diskusageDiskforbrug — crawler 2 niveauer over docroot, cachet 5 minutter
diffFil vs .bak med 3-linje kontekst
compareSide-om-side diff mellem to vilkårlige filer
lintPHP/CSS/JS-analyse — struktureret problemarray
errorlogParser PHP fejllog (CI4 + standardformat)
phpinfoParset PHP-info — version, udvidelser, indstillinger
getfavoritesVis foretrukne stier
togglefavoriteTilføj til eller fjern fra favoritter
getlogAktivitetslog-poster
clearlogRyd aktivitetslog
clearcacheLiteSpeed purge-header + CI4 writable/cache-mappe-rydning
getdocrootServerens dokumentrodsti
multirenameMasse­omdøbning med konfliktdetektering
🌐

Flersproget

240+ oversættelses­nøgler per sprog. Alle manager UI-tekster oversat — EN / RO / DK.

  • Skift uden sideindlæsning — switchLang()applyUiLang() + loadFiles() + renderTabs()
  • Alle DOM-elementer opdateret: knapper, modaler, pladsholdere, snydelap (fuldt regenereret), ZIP-hints, timeout-linje
  • Sprog gemt i cookie + writable/.manager_config
  • Animeret pille-skifter (desktop): cubic-bezier glidning, ingen overgang ved init for at undgå blink
🇬🇧 English     🇷🇴 Romanian     🇩🇰 Danish
📱

Mobil

BrudpunktAdfaerd
< 425pxLog skjult, diskbarre skjult, mikroknapper 8px, simpel sprogskifter
425–599pxLog vises foerst (order:-1) foer Fejl
600–1023pxSprogskifter statisk i header (ingen absolut positionering)
1024–1100pxSprogskifter statisk, kompakt vaerktoejslinje
> 1100pxFuld desktop-layout, animeret pille centreret absolut
  • Sidepanelsskuffe — glider fra venstre, overlay for at lukke, lukker automatisk ved filaabning / ZIP / billede, forbliver aaben ved mappenavigeringen
  • Langt tryk 500ms — kontekstmenu ved berørings­position, haptisk feedback (navigator.vibrate(30)), bevæg finger = annuller
  • Fanesystem — max-bredde 90px, ellipse, luk altid synlig, vandret rulning
  • Diff/Sammenlign — skjult under 768px (utilstrækkelig plads til delt visning)

Tastaturgenveje

GenvejHandling
Ctrl + SGem aktuel fil
Ctrl + WLuk aktuel fane
Ctrl + ZFortryd
Ctrl + YGenopret
Ctrl + FFind i fil
Ctrl + HFind & Erstat
Ctrl + /Kommenter / fjern kommentar pa linje
TabIndryk markering
Ctrl + SpaceManuel autofuldfoersel
EscapeLuk autofuldfoersel / modal
A+ / A−Forøg / formindsk skriftstørrelse
Right-click fileKontekstmenu
Right-click tabFane-kontekstmenu
Drag tabOmarrangér faner
Drag sidebar borderSkift størrelse på sidepanel
Double-click borderNulstil sidepanelbredde til standard
📋

Krav

  • PHP 8.0 eller nyere — testet op til PHP 8.4 (kræver PHP 8.0+ til str_starts_with())
  • ZipArchive-udvidelse — tilgængeligt pa de fleste delt webhosting som standard
  • Mappen writable/ skal være skrivbar — oprettes automatisk ved foerste koering
  • Ingen Composer · Ingen npm · Ingen database · Ingen framework
Se Priser → ← Tilbage til tyrus.dk v1.0.0 · Kommerciel Licens · © 2025 A. Angel Țîru / Tyrus