Webprofis is een Forum waarin je vragen kunt stellen die webgerelateerd zijn. Heb je vragen over of problemen met je Webpagina, HTML, CSS, Javascript, PHP of andere client of serverside scriptingtalen? Stel ze dan gerust op dit forum.
Op dit forum zijn een aantal vrijwilligers actief die u graag met uw vragen willen helpen en u waar mogelijk een passend antwoord aanbieden.
Hebt u zelf veel ervaring en kennis met betrekking tot het bovenstaande? U bent van harte welkom om uw kennis met anderen te delen!
We hopen dat eenieder op dit Forum een leerzame ervaring mag opdoen.
Team Webprofis
We hopen dat eenieder op dit Forum een leerzame ervaring mag opdoen.
Team Webprofis
simple filemanagement systeempje
Login of Registreer om te reageren.
Reacties
maar net ff getest met een .txt bestandje in de hoofdmap dat alleen een dot bevat: dat is al genoeg; dan werkt alles
if(is_dir($dir.'/'.$file)){
Een file is nooit een dir he.
Je kunt er waarschijnlijk zelf wel een maken? Al zou ik gewoon localhost eerst alles maken, en daarna pas integreren in vanilla!
1000 keer sneller en je hebt alles voor het zeggen ;-)
Maw: staat er in de hoofdfolder slechts 1 map waarin submappen en daarin files, dan kan ik die files er niet uitgooien.
Staat er een map in een subfolder, dan kan ik die wel eruitgooien.
Maak ik in de hoofdfolder een 2e map aan of load een file up, dan kan ik wel files uit subfolders verwijderen. En mappen natuurlijk ook, maar dat kon ik zowieso al
Er moet dus minimaal een 2e map of een file in de hoofdfolder staan wil ik files uit subfolders kunnen verwijderen
$MainDir = 'uploads/sfm/'.$UserID;
Deze telt vanaf de hoofdmap de size van alle files samen; inclusief wat er in subfolders staatMaak gewoon de htaccess file gelijk aan per userDir waarin je directory listing etc regels...en zorg dat die file niet gezien wordt.
Maar dat vind ik echt een schapezak oplossing (want het is een gaar gegeven, wat vast ergens nog haken of ogen vertoont!!), maar in dit geval kun je er je gemak/voordeel mee doen...
Moet alleen nog ff de
uploads
directory ensfm
directory eruithalen en dan de hash van de userID vervangen doorRoot
ofHome
of zoietsDoe ik het ervoor, dan gooit ie de ankers van de folders eruit en de size van de files geeft ie nie t meer weer.
dus die breadcrumbs staan nu onder de files. Die moeten natuurlijk erboven komen te staan. Hoe a ik dat oplossen?
Die foreach van de breadcrumb gebruikt alleen de url en verder niets...
uploads
ensfm
uit de breadcrumbs en vrandert de hash inRoot
Enige is dat ik nu 2 // aan het begin heb die ik er eigenlijk nog uit wil hebben.
de url moet beveiligd worden:
Dit: http://develop3.webprofis.nl/sfm?dir=uploads/
en http://develop3.webprofis.nl/sfm?dir=uploads/sfm/ en http://develop3.webprofis.nl/sfm?dir=. moet allemaal niet meer mogelijk zijn
regel 37 hierboven is: Maw: elke delete string bevat minimaal
'delete=uploads/sfm/'.$UserID
Die toestaan. Alle andere deletes zijn al beveiligd en worden ook niet toegestaan
De rest heb ik uitvoerig getest. Alle scenarios doorgelopen en zover ik kan overzien werkt alles naar behoren.
Als iemand zin heeft om nog ff wat scenarios te testen, graag! Kan best hier en daar nog wat bugs tegenkomen.
http://develop3.webprofis.nl/sfm (wel eerst inloggen)
je kunt nu geen .php files uploaden omdat de extensie niet in de array staat. Maar wat als iemand nu een php bestand op zijn pc heeft die bijv heet: test.php en die hernoemt op zijn pc naar test.jpg.
Vervolgens gaat ie test.jpg uploaden en eenmaal geupload hernoemt ie hem terug tot test.php. En laten we even uitgaan van worst case scenario: in test.php staat een
unlink()
Maw: als je renamen toestaat kan iemand je zoiets flikken toch?
of nog beter, je zorgt dat de extentie helemaal niet aangepast kan worden.
\Wat is meest logisch om dit te controleren: je kunt denk ik niet in een zip folder kijken en zeggen: dat .php filetje wordt niet extract?
Of wel extracten en kijken als er .php file is in de dir, die direct unlinken?
Zo staat ie nu in de foreach.
Als ik
header ("Location: ".'?dir='.rtrim($treeDir, "/"));
hierboven uitcomment, schiet ie terug naar de webroot. Hoe kan ik dat voorkomen? Hij zou eigenlijk op de pagina (met bijvoorbeeld de submap) moeten blijven staan. Ik wil nl een AJAX reload gebruikenDan heb je vast elders een header location, want bovenstaande code zegt nergens dat je moet redirecten als je de header uitcomment!
Hij zou dan gewoon op
url.com?delete=meukHier
moeten blijven staan!En nogmaals, zet een exit na een header location! Dit zou namelijk wel eens de oplossing voor je redirrect kunnen zijn...
Logisch denk ik ook want als je in een subfolder staat is de url altijd iets van: sfm?dir=uploads/sfm/hash/ folder1/subfolder1...
en omdat de url nu delete=......laat ie de root weer zien
Hieronder is het complete bestand:
Verder heb je zomaar wat ifjes in je code staan, maar dat is niet de manier i.m.h.o.
Want zo kun je zoals je nu voorhebt, dus inderdaad aan meerdere voorwaarden voldoen en dus onjuiste meuk te zien krijgen.
Zo (iets) hoort het of iets met een switch kan ook...legio van manieren, zolang het maar gestructureerd is en niet werkt met random ifjes
En je moet nu nog niet denken aan ajax, EERST moet alles werken ZONDER javascript, pas als ALLES werkt MET JUISTE FOUTAFHANDELING ETC, moet je pas de gebruiker(browser) erbij gaan betrekken!
die();
is toch equivalent toexit();
??edit, oh, blijkbaar wel, ik heb dat altijd verkeerd begrepen