file_put_contents, stabieler?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

SQL developer

Functieomschrijving Voor een erkende werkgever in de omgeving van Tilburg zijn wij op zoek naar een ervaren SQL ontwikkelaar. Hier wordt jij mede verantwoordelijk voor zowel de design en implementatie van SQL-databases als voor het verstaan van de processen van klanten naar het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt er als volgt uit te zien: Het ontwerpen en implementeren van databaseschema's: Je bent in staat om een database te ontwerpen en de structuur van tabellen, relaties, indexen en andere objecten te definiëren; Het schrijven van complexe SQL-query's: Je kunt complexe query's schrijven om gegevens uit de database

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Back end developer PHP

Functie Heb jij altijd al eens bij een bedrijf willen werken waar jij géén nummertje bent, die alleen maar uitvoerend werk doet? Dan zou je hier perfect passen! Tuurlijk, je werkt aan projecten voor grote of kleine bedrijven… Het enige verschil hier is, jouw mening telt hier écht. Jouw inbreng wordt gewaardeerd, serieus genomen en gebruikt. En vergeet niet, je werkt niet alleen aan deze projecten. Er werken in totaal ruim 25 developers en designers, onderverdeeld over 3 development teams. Voornamelijk bestaande uit Medior en Senior developers, die samen voor een inspirerende en ambitieuze omgeving zorgen. Hun visie is namelijk

Bekijk vacature »

Software programmeur

Functieomschrijving Voor een erkende werkgever in de regio van Goes zijn wij op zoek naar een enthousiaste software programmeur met PHP/Symfony ervaring. Een gedreven persoon die het development team komt versterken met het aanpakken van complexe projecten. Ben jij op zoek naar een baan met veel uitdaging binnen een snelgroeiend e-commerce bedrijf, waar je de tijd en ruimte krijgt voor zowel professionele als persoonlijke groei? Lees dan snel verder! Dit ga je doen: Beheer en ontwikkeling van de serviceportal in Symfony en de webshops in de tweede versie van Magento; Testen en door ontwikkelen van software; Ontwikkelen van nieuwe functionaliteiten;

Bekijk vacature »

Ervaren Full-Stack PHP Developer

Functieomschrijving Gezocht! Ervaren PHP Developer! Voor een organisatie in de regio Harderwijk zoeken wij een ervaren PHP Developer die het IT team van dit bedrijf gaat versterken. We zijn op zoek naar een enthousiaste en breed georiënteerde IT-er die het innovatieve bedrijf nog een stap verder kan brengen. Voor deze functie zoeken wij iemand die communicatief goed is en die zelfstandig problemen op kan lossen. Je werkt samen met een externe ontwikkelpartij en kunt hun dus uitdagen op het geleverde werk. Het schrijven van concepten aan de AI en hardware kant valt onder je verantwoordelijkheden. Het bedrijf noemt zichzelf een

Bekijk vacature »

Software Developer

Dit ga je doen Je bent verantwoordelijk voor de warehouse applicatie die een integratie heeft met de PLC laag; Je ontwikkelt in C#/.Net; Je werkt mee aan de migratie naar .NET 6; Je bent verantwoordelijk voor het ontwikkelen van interfaces en het visualiseren van componenten; Je denkt mee over het design voor business oplossingen; Je bent verantwoordelijk voor het testen van de gebouwde oplossing. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Software Developer. Zij zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van

Bekijk vacature »

Grafisch vormgever

Standplaats: Maasland Aantal uren: 32 – 40 uur per week Opleidingsniveau: HBO werk- en denkniveau Ben jij een ambitieuze grafisch vormgever met een passie voor creativiteit en oog voor detail? Vind jij het daarnaast leuk om ook marketingactiviteiten op te pakken? Dan zijn wij op zoek naar jou! Bedrijfsinformatie Westacc Group BV is het zusterbedrijf van HABA en specialiseert zich in (maatwerk) oplossingen voor (elektro) techniek en verlichting in de kampeerbranche. Zij produceren en assembleren onderdelen voor caravans, campers en boten. Voor een groot aantal caravan- en campermerken leveren wij producten als zekeringkasten, invoerdozen, acculaders, schakelmateriaal en verlichting. De producten

Bekijk vacature »

.NET Developer

Dit ga je doen (Door)Ontwikkelen van het applicatielandschap; (Door)Ontwikkelen van microservices; Bouwen van nieuwe functionaliteiten; Verbeteringen aandragen voor het applicatielandschap; Sparren met de business. Hier ga je werken De organisatie is werkzaam in de financiële dienstverlening met meer dan 200 medewerkers en meer dan 250.000 eindgebruikers is het een van de grotere binnen haar branche. Je komt te werken in een team waarmee je verantwoordelijk bent voor het ontwikkelen en onderhouden van de financiële applicaties binnen de organisatie, denk hierbij aan het bouwen en onderhouden van portalen. Als .net developer ga jij het development team ondersteunen met de transitie naar

Bekijk vacature »

Medior/senior Back-end developer gezocht!

Functie Vanwege de groei binnen het bedrijf zijn we op zoek naar versterking in het devlopmenttean. Als back-end developer bouw je aan de bedrijfssoftware die ons helpt bij de primaire processen. Een leuk (intern) project dus waarbij je de software continu doorontwikkeld! Je werkt in een klein team, we hebben dagelijks stand-ups en iedere twee weken een scrum-sessie, begeleid door onze Scrum Master. Hierin krijg je uitgebreid de kans om je ideeën te presenteren, en te overleggen met je mede-ontwikkelaars en de Product Owner. Binnen de ontwikkelteams gebruiken we Trello, Gitlab, Jiira, Confluence en Boockstack. Hiernaast werken ze met de

Bekijk vacature »

.NET Developer Medior Senior

Dit ga je doen Ontwikkelprocessen verder optimaliseren en verder ontwikkelen met C#; CI/CD-pipelines automatiseren; Herbruikbare componenten maken; Testen; Front-end pagina's gebruiksvriendelijk maken. Hier ga je werken Als .NET Developer kom jij terecht binnen een grote en internationale organisatie. Zij streven naar een positieve impact op de mens, milieu en maatschappij. Het bedrijf is oorspronkelijk een familiebedrijf en werkt aan de productie van hoogwaardige en technische systemen voor de gezondheidszorg. Momenteel willen zij betere ontwikkelprocessen creëren op internationaal gebied en staat kwaliteit en veiligheid voor hun op nummer 1! Als .NET Developer werk jij aan het ontwikkelen van verbeterde software voor

Bekijk vacature »

Software Developer

Bij een bedrijf in de machinebouw, regio Roosendaal, zijn we op zoek naar een: Software Developer Waar ga je werken? Onze opdrachtgever is gespecialiseerd in de grondverzetmachines. Al meer dan 50 jaar leveren ze zowel nationaal als internationaal diverse machines. Het is een familiebedrijf met een informele werksfeer. Wat ga je doen? Als Software Developer je verantwoordelijk voor: - Je werkt voortdurend aan oplossingen voor het op afstand bewaken en besturen van oogstmachines; - Het visualiseren van gegevens in rapporten, apps of andere formaten; - Voorspellend machineonderhoud; - Taakplanning; - Je schrijft aangepaste plug-ins om gegevens te importeren of exporteren

Bekijk vacature »

Software Developer

Longship.io gaat de wereld veroveren met baanbrekende software en legendarische... pizza-avonden! Lees hier de vacature van Software Developer! Bij Longship werken we met een team van 5 mensen aan software voor laadpaal operators. Longship is ontstaan in 2020 met als doel om de elektrische mobiliteitstransitie aan te jagen. We zijn nu al een wereldwijde speler doordat we continu voorop lopen in innovatie. Ons platform helpt het versneld elektrificeren van wagenparken, internationaal! Wij zijn een startup met grote ambities die we willen bereiken met een relatief klein en efficiënt team. Je krijg de kans om ontzettend veel te leren van ervaren

Bekijk vacature »

.NET Developer C#

Dit ga je doen Als developer nieuwe gave features implementeren; Werken met technieken als C# .NET en (REST) API's webservices; Ontwikkelen van koppelingen middels API's; Maken van technische keuzes en beslissingen over de architectuur; Junior collega's coachen; Initiatief nemen voor nieuwe technische mogelijkheden; Je bent een belangrijke schakel - en vindt het leuk - om te schakelen met de business. Hier ga je werken Als C# .NET Developer wordt je verantwoordelijk voor het ontwikkelen van applicaties voor belangrijkste product van deze organisatie. Dit product is een applicatie voor alles omtrent hypotheken. De programmeertaal die je hierbij beheerst is C#. Er

Bekijk vacature »

Junior/Medior Front-end developer

Functie Als Front-end developer werk je intensief samen met 1 van de UX-designers en denk je mee over de gebruiksvriendelijkheid en design van onze web- en mobile apps. Je bent betrokken bij sessies met gebruikers om designs te valideren en usability van de app-in-wording te testen. Vervolgens gebruik je dit om samen met je team waarin ook back-end (.NET) developers zitten, te zorgen voor de realisatie van de best mogelijke apps voor studenten en docenten. Eisen • Je hebt een hands-on development en coding mind-set en werkt graag aan een high quality code base welke je consequent onderhouden kan worden

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

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

22/12/2024 06:32:18
 
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.