ik ben met een script bezig die ervoor zorgt dat ik directorys kan aanmaken met een automatisch gegenereerde naam in mijn user panel. maar ik wil nu er ook voor zorgen dat er daarna een txt file met wat info van me inputfield automatisch word toegevoegd aan de directory die net is aangemaakt. hier is een voorbeeld van mijn script.
een map aanmaken lukt, maar txt file met content van me input fields toevoegen aan de net aangemaakte map krijg ik niet voor elkaar dus wat zou ik hierbij toe moeten voegen om dat te laten lukken.
ik heb in mijn html 4 input fields en al die info moet in een txt komen met dus de aangemaakt directory.
hopelijk is het te volgen en kan iemand me helpen!
<?php
$bytes = 5;
$result = bin2hex(random_bytes($bytes));
if(isset($_POST['submit'])) {
$folder = $_POST['pathname'];
$dirPath = 'c:/xampp/htdocs/amkscript/'.$folder;
$result = mkdir($dirPath);
if ($result == '1') {
echo $dirPath . " has been created";
} else {
echo $dirPath . " has NOT been created";
}
header('location:index.php');
}
?>
dankjewel bart en iedereen alles werkt perfect!
nu wil ik het volgende krijgen in het script:
ik wil dat alle directorys die ik heb aangemaakt de txt files van gedisplayd worden in mijn html (zelfde plek waar ik directorys aanmaak) in een individuele tabel, en in die tabel zie je weer de inhoud van de txt file met daar aan een delete button om die tabel/directory en alle inhoud weer te kunnen verwijderen.
alleen mijn admin panel folder zit in dezelfde directory waar al die nieuwe directorys worden aangemaakt en ik wil dus niet dat ik straks de inhoud van die folder te zien krijg. ik moet dus echt alleen de inhoud van alle txt bestanden kunnen zien van de directorys/folders die ik net heb aangemaakt. en iedere nieuwe directory die erbij komt word gelijk gedisplayed. als dit werkt ben ik bijna klaar met het script. hopelijk is het nog te volgen.
misschien lijkt het allemaal te veel gedoe en ik weet een database zou logisch zijn als je mijn voorbeelden bekijkt maar het moet echt allemaal op deze manier gaan, dit is namelijk een opdracht van een klant en het moet gewoon nou eenmaal op deze manier anders zal de rest van de bijkomende backend bugs opleveren, (dus alle data die je ziet is niet wat daadwerklijk wat er in de txt komt te staan maar anders word het te ingewikkeld verhaal en doe het steeds in delen hopelijk geeft dat een beetje opheldering waarom het perse zo allemaal moet.
alleen mijn admin panel folder zit in dezelfde directory
Oef, dat lijkt mij niet optimaal.
Doet het er toe waar deze directories precies staan, of gaat het meer over de aanwezigheid? In het laatste geval zou ik opteren voor een aparte "hoofd"directory buiten de webroot die als een soort van kapstok dient voor alle directories en tekstbestanden die je hieronder aanmaakt. Op die manier heb je een aparte "zandbak" voor deze functionaliteit, en zie je ook geen andere informatie en kun je ook niet per ongeluk ongerelateerde bestanden en directories verwijderen.
Dus maak van $dirpath een (vaste) verwijzing naar een locatie die uitsluitend bedoeld/geschikt is voor dit doel. Bij voorkeur buiten de publieke webdirectory, zodat deze bestanden nooit rechtstreeks te benaderen zijn. Dit is waarschijnlijk uit security oogpunt ook beter.
het doet er wel doe waar de directory staat, het is de bedoeling dat er website content etc gekopieerd word naar de aangemaakte directorys dus als de directory naam is "vlinder" moet ik de content kunnen zien op www.mijnwebsite.nl/vlinder dus het is wel noodzakelijk dat het in publieke webdirectory zit, admin panel daarin hoeft niet perse in dezelfde directory te zitten maar waar kan ik mijn admin panel dan beter kwijt? aub wat voorbeeld code aangesloten op wat ik al eerder gepost heb en wat bart hierboven heeft.
daarbij is het me gelukt om txt inhoud te zien van mijn nieuw aangemaakt directory alleen als ik weer een nieuwe aanmaak veranderd het alleen steeds naar de nieuw aangemaakt directory maar ik wil alle directorys zien in een soort loop, ik wil ze dus constant in een tabel te zien krijgen individueel dus als voorbeeld:
directory "A":krijgt een tabel in html => directory "B":krijgt een tabel in html => directory "C":krijgt een tabel in html => etc etc
dus iedere aangemaakt directory krijg ik txt inhoud van gezien en aan die tabel wil ik een verwijder button die specifiek heel die directory verwijderd inclusief alle content. hopelijk is het een beetje duidelijk, zo ziet mijn code er nu uit in een html div:
Hm, maar hoe je een pagina serveert hoeft niet per se 1:1 gekoppeld te zijn met hoe je betandenindeling is. Je zou de content ook buiten de webdirectory kunnen opslaan (en zelfs kunnen cachen in de database of op een andere manier).
Wanneer iemand een pagina opvraagt dan zou je dit ook naar een centraal doorgeefluik kunnen sturen (index.php) en daarvandaan kijk je in je content-directory of je daar informatie kunt vinden. Hiervoor zou je ook require() of include() kunnen gebruiken, je haalt deze informatie immers lokaal op.
Ik neem ook aan dat het controlepaneelspul niet letterlijk in de publieke webdirectory staat, maar dat dit een soort van symbolische link is? En anders zou je bij het uitlezen van de directories hier specifieke directories uit kunnen filteren.
Daarbij, we hebben het hier dus over content-creatie. Dit kun je ook via de database regelen? Het enige wat je opslaat is het pad (hoe deze content bereikbaar dient te zijn) en de inhoud zelf: html, text, of wat dan ook. Dan, met de eerder voorgestelde techniek (de "single point of entry" in je applicatie: index.php) vergelijk je het aangeroepen pad met de "paden" die staan opgeslagen bij deze teksten. Hier heb je helemaal geen losse bestanden of directories voor nodig.
Het enige wat je hiervoor nodig hebt is:
- een mechaniek dat alles intern doorstuurt naar index.php
- een databasetabel met hierin de velden pad, content, en wat je nog meer wilt opslaan
- een index.php bestand die de aangeroepen URL uitleest, een database-query uitvoert die controleert of er zo'n pad bestaat, en zoja, de bijbehorende content serveert
oke ik wist niet dat het ook zo kon maar alsnog weet ik niet waar ik precies naar opzoek moet qua info en code. dit kan ik nog wel: "een databasetabel met hierin de velden pad, content, en wat je nog meer wilt opslaan" maar de eerste en laatste benodigdheden weet ik niet precies waar ik naar moet kijken dus graag zie ik wat extra helpende info tegemoet komen :) alvast bedankt!
Hiermee zorg je dat alles, behalve de fysiek bestaande bestanden en directories, doorgestuurd worden naar index.php. Dat is dan de voordeur waar alle aanvragen op binnenkomen zodat je die op een centrale plek kan afhandelen en naar de juiste plek kan dirigeren.
nog steeds een hoop vraagtekens voor mij.. ik heb het doorgenomen maar ik blijf stuiten op het feit dat ik 3 index pages heb die ik doormiddel van "option" wil laten zien aan het aangemaakt path dus stel ik heb index1 index2 en index3 dan wil ik dat bijv www.mijnwebsite.nl/vlinder index3 kan zien en /hond weer index1 etc etc. maar als ik zo kijk vraag ik me af hoe ik doet voor elkaar krijg met htaccess, (ik gebruik nu xampp maar word uiteindelijk gebruikt voor ubuntu 18 dus) daarom via de manier hoe ik het eerst deed leek mij het een stuk practicer aangezien ik ook niet echt weer te werken met htaccess. hopelijk is het allemaal niet teveel. zie graag uitgebreide info :)
Het punt is dat een vaste voordeur via één index.php de beste manier is om de andere pagina's aan te roepen. Normaal ga je toch ook via je voordeur naar je keuken, woonkamer, slaapkamer etc, waarbij je na het binnenlopen door de voordeur je jas ophangt, sleutels neerlegt etc... ;-)
Dat laatste zijn acties die je altijd uitvoert als je je huis binnen gaat. Je kan ook ervoor kiezen om losse bestanden aan te maken, die je direct benadert zoals: slaapkamer.php, keuken.php etc.... maar dat betekent dan dat je steeds door een raampje klimt, en in elke kamer een kapstok voor je jas moet ophangen en een plankje voor de sleutels moet aanbrengen.
Dat is niet efficiënt....
Dus daarom is het zinvol om eerst de .htaccess aanmaken, die ervoor zorgt dat je wordt doorverwezen naar de index.php. Daarna moet je jouw index.php aanmaken, en die leest dan je URL uit, zodat je zelf je acties ermee kan aanleggen. Eventueel kan je daarin nog een authenticatie-beveiliging inbouwen, ban-controle of andere controles die steeds plaats moeten vinden. En daarna kan je de gegevens uit de URL verwerken en de gebruiker doorsturen naar de juiste pagina.