PHP In bestanden schrijven en lezen

artikel details Artikel details
In Artikels » PHP
Door BigSmoke
08-02-2008 12:10
Bron
PHP, CHMOD, fopen
share Share
Toevoegen aan eKudos Toevoegen aan NUjij Toevoegen aan Technorati Toevoegen aan Del.icio.us facebook E-mail naar een vriend Plaatsen/stemmen op MSN Reporter Blig it! Voeg toe op netjes.be
artikels Soortgelijke artikels
Volledig artikel Cronjobs
Volledig artikel Cheat Sheets
Volledig artikel Mysql Injectie
Volledig artikel Informatie opvragen zonder...
Volledig artikel PHP variabelen en operatoren


Adverteren bij Daisycon


Met PHP is het mogelijk om bestanden op de server te openen en hier data in te schrijven. Dit biedt heel wat mogelijkheden. Zo kan je zonder database informatie opslagen. Het nadeel hiervan is wel dat als iemand het bestandje op je server kan vinden hij dit gewoon kan uitlezen.

Je kan bestanden in bestanden schrijven, bestanden openen door middel van 4 PHP functies.
Fopen: Bestand selecteren en kiezen wat ermee te doen
Fputs: Iets in het bestand schrijven (= Fwrite)
Fgets: Informatie uit het bestand halen
Fclose: Bestand weer sluiten

Vervolgens moet je het bestand waarmee je wil werken de rechten geven dat deze mag worden geopend, dat hierin mag worden geschreven etc. Meer info hierover later.

Een voorbeeld met file.html
<?
$bestandOpenen = fopen('files/file.html', 'w');//Open het bestand met type schrijven
fputs($bestandOpenen, 'Lorem Ipsum');//schrijf 'Lorem Ipsum' in het bestand
fclose($bestandOpenen);//Sluit het
?>

Als we dit script uitvoeren zal er Lorem Ipsum in het bestand zijn geschreven. De vorige inhoud van het bestand zal tevens verwijdert zijn. Dit komt doordat ik voor optie w heb gekozen. Andere opties:
r = Openen voor alleen lezen, begin het lezen aan het begin van het bestand.
r+ = Openen voor lezen en schrijven, begin bij het begin van het bestand. De vorige inhoud zal bij het schrijven dus niet vervangen worden.
w = Openen voor allen schrijven. Verwijder alles wat er reeds instaat en maak het bestand aan als het niet bestaat.
w+ = Openen voor lezen en schrijven. Verwijder alles wat er reeds instaat en maak het bestand aan als het niet bestaat.
a = Bestand openen voor alleen schrijven. Laat andere inhoud erin staan en begin met schrijven op het einde van het bestand. Maak het bestand aan als het niet bestaat.
a+ = Openen voor lezen en schrijven. Begin bij het einde van de file. Maak het bestand aan als het niet bestaat.

Door een ander type te plaatsen kan je er dus voor zorgen dat je bestant eerst helemaal leeg is, dat je begint met schrijven aan het begin van het bestand of dat je aan het einde begint met schrijven.

Merk wel op dat het bestand op de server eerst de CHMOD 777 moeten krijgen. Met filezilla (ftp) kun je dit doen door rechter muisknop op het bestand en te kiezen voor file attributes.
chmod filezilla


<?

$file = "file.html";

$openBestand = fopen($file, "r");
// haal de tekst eruit
$data = fgets($openBestand, 4096);
// sluit het bestand weer
fclose($openBestand);

// toon wat er in het bestand staat
echo $data;
?>


Als je eerst zelf het bestand file.html aanmaakt en hier wat tekst inzet kun je met bovenstaande scriptje alles erweer uithalen en in je PHP pagina weergeven. De 4096 is de buffer van het bestand. Met 4096 geeft je aan dat hij regels moet openen van 4096 bytes.

Om enters in je bestand om te zetten naar html enters (<br />) kan je gebruik maken van de functie nl2br. Dus bij het weergeven van $data doe je dit: echo nl2br($data);

Door gebruik te maken van fopen kan je bijvoorbeeld
- de bezoekers tellen.
- een lijst met IP's van bezoekers die je vervolgens kan bannen.
- ...


1. Reactie door Roger op 23-11-08 20:11

Hoi,

Ik heb het bestand geprobeerd, maar zie enkel de eerste regel van hetgeen ik inlees.  Moet er nog een instelling veranderd worden? Of heeft dit te maken met harde returns in de broncode die ingelezen wordt?

Om op dit artikel te reageren dient u een account aan te maken.


webhog