Voor mijn kerkgemeente ben ik een sync. script aan maken zodat het leden bestand kan worden uitgelezen en weg geschreven naar een database.
Nu moet je voor fopen (die function gebruik ik) de rechten van de folder en file aanpassen naar ieder geval mod 775.
maar stel je weet de naam van het bestand en de folder dan zou je via de brouwser het volgende kunnen doen. www.adresvansite.nl/map/bestand.txt en je kunt alles lezen in het bestand.
Dat mag natuurlijk niet, want dit is gevoelige informatie.
Hoe kun je het dan wel openzetten voor PHP maar niet voor de buitenwereld?
Bestanden die niet -direct- in de browser aangeroepen mogen worden moeten altijd buiten de webroot (dit is meestal de www/public_html map) geplaatst worden.
Wat je ook kan doen, is het gewoon in een (mysql) database stoppen, en dan goed beveiliigen.
Maar als je nog geen database heb, lijkt het mij overbodig. zoniet, zet het dan in een DB, en als het echt moet kun je het laten aanroepen door php. Ik neem aan dat je weet hoe dat moet, zoniet kijk dan even naar mysql_real_escape_string, en deze tut. succes!
Jazeker, je kunt met PHP gewoon bij mappen die buiten de webroot liggen. Met ../ in het pad kun je 1 niveau omhoog en kun je dus overal uitkomen (zo lang je maar rechten hebt op opgevraagde mappen).
De .htaccess oplossing vind ik minder geslaagd, zorg er gewoon voor dat gebruikers niet weten waar die bestanden staan door ze buiten de webroot te plaatsen. Krijg je ook geen vervelende foutmeldingen als gebruikers die bepaalde map wel proberen te openen...
Het heeft even stil gelegen ivm de vakantie, maar ben er nu weer mee bezig gegaan. Ik heb een map aangemaakt buiten mijn www map, maar toch kan ik hem niet benaderen ondanks de rechten en owner op de ftp user.
Het is wel belangrijk dat de apache deamon (het webserver proces dat in feite php uitvoert) ook rechten heeft op die map. Meestal user: apache. Je kan het in ieder geval uittesten door even alle rechten rw-rw-rw op die map te geven.
rechten rw-rw-rw of 777, af hangend wat je gebruikt,
Waar bevind het bestand zich en waar het script?
als je het bestand naast je public_html hebt en het script erin, dan moet je het aanroepen in php met ../bestand.txt, zit het script in een andere map die weer in public_html bevind, dan is het ../../bestand.txt,
bevind de bestand zich in een map naast de public html, dan is het ../../map/bestand.txt.