file_put_contents, stabieler?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java Front-end Developer

Dit ga je doen Ontwikkelen van nieuwe functionaliteiten in Java met tools als Springboot, MS SQL Server (T-SQL) en JavaScript; Het onderhouden van de (web-)applicaties binnen een complexe omgeving; Werken aan de migratie van een monolithisch systeem naar een architectuur gebaseerd op Kubernetes; Code reviews met collega's en actieve kennisuitdelingsessies voeren; Het uitvoeren van unit- en systeemtests Experimenteren met nieuwe tools en technieken. Hier ga je werken Binnen deze organisatie kom je te werken op de afdeling die gegevens verzamelt vanuit het hele land. Denk hierbij aan vertrouwelijke persoonsgegevens. Het team verwerkt al deze data met als doel het waarborgen

Bekijk vacature »

PHP Developer (junior functie)

Functie omschrijving Wij zijn op zoek naar een PHP Developer! Ben jij een starter en wil je werken bij een jong en leuk bedrijf? Lees dan verder! Wij zijn op zoek naar een PHP Developer binnen een junior functie. Binnen dit bedrijf gaat het om persoonlijke aandacht en ontwikkeling! Je komt te werken voor een leuk communicatiebureau die alles op het gebied van online en offline communicatie doet. Dit doen zij voor verschillende branches, waardoor je aan diverse soorten projecten mag werken, dit maakt deze baan erg leuk! Daarbij werk je aan een door hun zelf ontwikkeld framework welke goed

Bekijk vacature »

Fullstack Developer

Functieomschrijving Heb je kort geleden jouw HBO diploma ICT development behaald? Of zit je nog aan het begin van je carrière en heb je affiniteit met C#.NET? Voor een erkende werkgever in de omgeving van Oosterhout zijn wij op zoek naar een fullstack developer. Als C#.NET developer werk je samen met een vooruitstrevend team aan het ontwikkelen van maatwerk software voor klanten. Je hebt affiniteit met SQL, maar nog belangrijker is dat je kennis en ervaring hebt met C#.NET. Jouw werkzaamheden zien er als volgt uit: Het ontwikkelen van onze high-availability en high-performance backend; Je begint de dag rond 8:30

Bekijk vacature »

Gezocht: Ervaren VB6 developer met C# ambitie!

Bedrijfsomschrijving Dit bedrijf is een vooraanstaande softwareleverancier die gespecialiseerd is in het ontwikkelen van software pakketten voor autoschade herstel bedrijven. De software wordt gebruikt door meer dan de helft van alle autoschade herstel bedrijven in Nederland. Het team van professionals is op zoek naar getalenteerde collega developers die hun vaardigheden willen inzetten om het bedrijf te laten groeien. Functieomschrijving Voor dit bedrijf zoek ik een ervaren VB6 / VB.NET developer met interesse om op termijn verder te gaan in C#. In deze functie ben je verantwoordelijk voor het onderhouden van de bestaande softwarepakketten. Een deel van de code is nog

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Functioneel applicatiebeheerder - SOP-SYS-SAM

TenneT is hard groeiend om de onze ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Functioneel Applicatiebeheerder voor het financiele domein op onze locatie Arnhem die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je gaat samenwerken in een team van circa 15 functioneel applicatiebeheerders en gaat onderdeel uitmaken van een DevOps team. Met dit team ga je applicaties (laten) ontwikkelen en beheren. Hierbij concentreer je je vooral op

Bekijk vacature »

.NET developer

Functie Als .NET ontwikkelaar ga jij aan de slag bij een van onze klanten actief in de High Tech Industrie. Onze klanten zijn voornamelijk gelokaliseerd in de omgeving van Eindhoven. Wij zijn erg selectief als het gaat om de projecten die wij accepteren en richten ons dan ook alleen op innovatieve en complexe projecten. Omdat onze klanten voornamelijk gespecialiseerd zijn in de machinebouw, werk jij ook vaak dicht tegen de machines aan. Ons team bestaat momenteel uit Embedded engineers, IOT developers en Cloud engineers. Wij werken voornamelijk aan Microsoft projecten waar er gebruik wordt gemaakt van WPF, UWP, .NET Core

Bekijk vacature »

Medior/senior Python developer

Functie Bedrijven komen bij deze organisatie om technische vraagstukken op te lossen en hierin ook tot oplossingen te komen waar ze zelf misschien niet aan gedacht hadden. Jij gaat vanuit je ervaring dus niet alleen hands-on aan de slag met het ontwikkelen, maar zult ook zeker adviseren en proactief meedenken met de klant. Er zijn meerdere lange en/of korte projecten en het type klanten is heel uiteenlopend. Zo kun je terecht komen in een multidisciplinair scrumteam waarin je als Python developer meewerkt, of juist voor een kleiner (Greenfield) project aan de slag gaan waarin je veel breder bezig bent. Door

Bekijk vacature »

Sportieve Junior C#.NET developer gezocht!

Bedrijfsomschrijving Wil jij werken aan webapplicaties bij de marktleider binnen de branche? Voor een klant in de buurt van Oosterhout ben ik op zoek naar een Fullstack .NET developer. Dit bedrijf bestaat bijna 10 jaar en is inmiddels uitgegroeid tot marktleider in Nederland en heeft tevens kantoren in meerdere landen in Europa. Dit bedrijf bouwt webapplicaties waarbij internationaal enkele honderdduizenden deelnemers, soms tegelijk, een beroep doen op de realtime data uit deze applicaties. Dit brengt erg veel technische uitdaging met zich mee. Ze ontwikkelen nieuwe applicaties maar ook bestaande applicaties worden uitgebreid en verbeterd. Hier kan jij een onderdeel van

Bekijk vacature »

C#.NET Developer

Functieomschrijving We are looking for a dutch native speaker In deze uitdagende functie ga je werken als onderdeel van het development team, in de functie van C#.NET Developer, Je gaat maatwerk software bouwen voor diverse klanten. Ook optimaliseer je bestaande software en bouw je API koppelingen. Je bent vooral met back-end development bezig. Je krijgt veel vrijheid in deze functie en je krijgt de kans om mee te denken in bedrijfsprocessen. Deels thuiswerken is geen enkel probleem! Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Het is van oorsprong een familiebedrijf, die gestart zijn met het bouwen van

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Front-end React developer

Functie Het frontend team bestaat momenteel uit 4 dedicated front-enders en is hard aan het groeien! Ook werken er diverse designers waar je veel mee schakelt. Samen leveren jullie een essentiële bijdrage aan de applicaties die ze voor hun klanten realiseren, jij bent hierin de schakel tussen de eindgebruiker en de slimme backend. Je werkt in het frontend team samen met de backend teams en product owners om te zorgen dat onze applicaties een fijne gebruikerservaring opleveren. Ze werken o.a. met: React, Atomic design, Styled components, JavaScript / TypeScript, NPM, Webpack Blade templates, HTML, SCSS, Git flow. Eisen • HBO

Bekijk vacature »

C# .NET Software Ontwikkelaar

Functie omschrijving Gezocht: Software Developer C# .NET voor een dynamische organisatie! Ben je onlangs afgestudeerd of ben je toe aan de volgende stap in je professionele carrière? Lees dan verder! We zijn momenteel op zoek naar een Software Developer die klaar is voor een nieuwe uitdaging en die onze eindklant in de regio Arnhem kan versterken. In deze functie werk je aan verschillende projecten en bezoek je vaak klanten. Je kunt een rol verwachten met veel uitdaging, diversiteit en verantwoordelijkheid. Bedrijfsprofiel Binnen welke organisatie ga je aan de slag? Je gaat werken bij een organisatie die zich specialiseert in het

Bekijk vacature »

PHP Developer

Dit ga je doen Ontwikkelen, implementeren en testen van PHP-oplossingen en Apps voor klanten en bedrijfsprocessen; Opstellen van requirements en uitwerken van de oplossingen; Testen van software en borgen van een soepele overdracht, inclusief documentatie; Proactief adviseren vanuit eigen expertisegebied over ontwikkelingen en verbeterpunten in technische toepassingen en processen binnen de organisatie. Hier ga je werken De organisatie is een ambitieuze en vooruitstrevende speler in de markt in de regio Rotterdam. Ze zijn de snelst groeiende in hun branche. Met een excellent aanbod en service willen zij de beste keuze zijn voor hun bestaande en nieuwe klanten. Dit alles doen

Bekijk vacature »

Account Developer

Voor Bol.com zijn wij per direct op zoek naar een Account Developer voor 32-40 uur per week op het kantoor in Utrecht. Wil jij een directe bijdrage leveren door partners van de juiste data-inzichten te voorzien en via campagnes op nieuwe platformkansen en features te wijzen? Ben jij analytisch sterk en kun jij dit vertalen naar plannen en inspirerende gesprekken? Lees dan snel verder! wat bieden wij jou Salaris van €2400 - €2600 obv 40 uur Minimaal 6 maanden Werklocatie is Utrecht Werken bij bol.com wie ben jij Jij bent commercieel gedreven en weet altijd aan de juiste knoppen te

Bekijk vacature »
Niek Ha

Niek Ha

26/11/2008 13:51:00
Quote Anchor link
Goedemiddag,

Ik had een vraag over file_put_contents, of eigenlijk niet specifiek die functie maar het checken / beveiligen ervan.

Alles werkt perfect wat ik in mijn script heb staan. Maar weten jullie hoe ik het beter kan doen zodat het veiliger / stabieler is.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
    function schrijven()
        {

            $inhoud = $this->rij_kolommen . $this->rij_inhoud;
            file_put_contents($this->bestand, $inhoud);
            chmod($this->bestand, 0777);
        }

?>
 
PHP hulp

PHP hulp

19/05/2024 12:40:21
 
Jelmer -

Jelmer -

26/11/2008 14:14:00
Quote Anchor link
Wat doet het? Iets in een bestand zetten, wat wil je daar veiliger aan hebben?

Ik gok dat dit stukje een onderdeel is van een script dat een database-tabel in een CSV-bestand zet. In dat geval zou ik juist niet voor file_get_contents kiezen, omdat die juist geschikt is om alles wat in het geheugen zit in één keer in een bestand te schrijven. Stel dat je een boel data in je database hebt zitten, dan moet die eerst allemaal in zijn geheel in het geheugen. Er is een redelijke kans dat dat op een gegeven moment niet meer past.

Juist hier kan je goed de "oude" functies gebruiken die naar een stream schrijven. Streams zijn trouwens relatief nieuw in PHP, maar zijn gemodelleerd op het oude fopen & fwrite systeem, juist omdat dit bestwel efficiënt is.

Je opent een maal een pointer naar een bestand, en vult het vervolgens met fwrite op. Je hoeft op zich maar een heel klein beetje in je geheugen te hebben, bijvoorbeeld 1 regel uit je db, want direct nadat je fwrite hebt aangeroepen is het klaar, en staat het in het bestand.

(op de achtergrond zijn er nog allemaal caches in je besturingssysteem, de driver en de harde schijf zelf waardoor het niet helemaal waar is, maar daar hoef je je geen zorgen om te maken.)

Één nadeel ten opzichte van file_put_contents is dat wanneer je tijdens het lezen & schrijven van de regels een fout tegenkomt, je met een half af bestand zit. Zeker wanneer je een eerder bestand vervangt met in dit geval een slechte kopie is dat vervelend. In jouw voorbeeld zou als het goed is file_put_contents dan niet eens meer aangeroepen worden, omdat dat pas de laatste stap is. Maar ook dit probleem is makkelijk te verhelpen door niet te schrijven naar het definitieve bestand, maar naar een tijdelijk bestand. Is al het schrijven dan klaar en succesvol, dan pas gooi je het oude bestand weg en verplaats (hernoem) je het nieuwe naar zijn definitieve naam.
 
Niek Ha

Niek Ha

26/11/2008 14:53:00
Quote Anchor link
Ja sorry dat ik niet duidelijk was in de beschrijving.
Ik wil inderdaad uit een database gegevens halen en deze in een .csv file zetten. Inprincipe maakt het niet uit wat voor file het word. het kan ook makkelijk .txt zijn, maar in dit geval gaat het om een .csv file.
Het is inderdaad een onderdeel uit een script wat ik gemaakt heb.

Ik ben wel thuis met fopen, fwrite, fputs enzo maar file_put_contents werd door iemand aangeraden. Waarom weet ik niet dat zal ik ooit nog wel eens horen. Ik ben er mee aan de gang gegaan maar het lijkt te makkelijk om iets in een bestandje te zetten. Geen checks? Geen foutafhandeling?

file_put_contents($this->bestand, $inhoud);

Ik dacht dat er misschien wel iets was om eventuele fouten die er kunnen komen (omdat er iets niet goed is ingevoerd door een latere gebruikt) te beveiligen.
 
Jelmer -

Jelmer -

26/11/2008 15:15:00
Quote Anchor link
file_put_contents is "perfect". Het zet gewoon $inhoud in $this->bestand. Intern gebruikt het de stream-functies van PHP. Er zijn geen magic karakters, en volgens mij zal hij ook niet snel zeuren over nullbytes. Al het onveilige wat in $inhoud staat, zal ook in het bestand terecht komen. Bevat $inhoud bijvoorbeeld PHP-code, en is er een mogelijkheid om het bestand uit te voeren dan kan die code worden uitgevoerd. (bijvoorbeeld een "lek" include-statement of de bestandsnaam bevat .php en is aanroepbaar van buitenaf)

Verder zit er geen extra beveiliging in file_put_contents. Is de schijf vol tijdens het schrijven van het bestand? Dan houdt hij er mee op. De al geschreven bytes staan dan in het bestand, en dat draait hij niet terug. Hij zal dan FALSE teruggeven (als ik de broncode van PHP lees tenminste, de documentatie zegt dat hij een INT teruggeeft)

Trouwens wel handig om gewoon eens de broncode van PHP te downloaden. Dan kan je vrij gemakkelijk goed uitzoeken wat interne functies nu werkelijk doen. PHP is geschreven in alleen C, dus als je PHP snapt snap je de broncode van PHP zelf ook grotendeels wel.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
 
Niek Ha

Niek Ha

26/11/2008 15:20:00
Quote Anchor link
Ok bedankt, dan ga ik het wel zo laten staan. Een functie maken om te kijken of er te weinig ruimte over is lijkt me dan ook wat te ver gaan. Bij het script wat ik gebruik overschrijft hij namelijk het oude bestand. Niet dat zo groot gaat worden dat je geen space meer hebt xP. Maarja................. het kan
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.