file_put_contents, stabieler?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Java Developer

Java Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

Software Programmeur

Functie omschrijving Voor onze opdrachtgever in omgeving Rotterdam zijn wij opzoek naar een software programmeur die goed kan schrijven in de talen C of C++ en die het leuk vind om te werken met Linux! Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed verloopt. Je zult klanten ondersteunen. Verder zul je technische ontwerpen en gebruikersdocumentaties schrijven en deze onderhouden. Bedrijfsprofiel Dit bedrijf wil de klanten een volledige oplossing kunnen bieden, waarbij ze een

Bekijk vacature »

.NET Developer

Dit ga je doen Tot jouw takenpakket behoort onder andere: Webapplicaties ontwerpen, bouwen, testen en implementeren in .NET/C#.; Ontwikkelen, implementeren en beheren van maatwerkapplicaties; Onderhouden en beheren van standaardpakketten; Onderzoeken en beoordelen van nieuwe technieken. Hier ga je werken Als .NET ontwikkelaar kom je te werken bij een grote semioverheidsinstelling in Nijmegen. De organisatie staat garant voor het leveren van onderwijs en les- en onderzoeksmateriaal voor duizenden betrokkenen. De organisatie wil bijdragen aan een gezonde, vrije wereld met gelijke kansen voor iedereen. Binnen de teams hangt een open en collegiale cultuur met veel aandacht voor een prettige en sociale werksfeer.

Bekijk vacature »

Medior Front-end Developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als Medior Front-end 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. Onze klantenkring is groot en divers, dat vraagt om flexibiliteit van jou. Tegelijkertijd betekent dit dagelijks nieuwe dingen leren én dat geen werkdag hetzelfde is. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling waarbij iedereen welkom is, zowel

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 »

Freelance Fullstack Java Developer

Functieomschrijving Voor een opdrachtgever in omgeving Rotterdam zijn wij op zoek naar ervaren Fullstack JAVA Developers die graag op projectbasis willen werken. Je komt terecht bij een informele developers club die mooie projecten uitvoeren voor grote klanten. Ben je een ervaren freelancer of werk je in loondienst en ben je toe aan een nieuwe uitdaging? Lees dan snel verder want wie weet is dit een leuke vacature voor jou! Het fijne van deze werkgever is dat je zelf mag beslissen hoe je te werk wilt gaan. Wil je als freelancer werken dan is dat OK. Wil je de zekerheid hebben

Bekijk vacature »

Java Developer

Functie Wat ga je doen als Java developer? Jij komt terecht binnen een informeel team waarin je verantwoordelijk bent voor de backend systemen voor grote klanten als Ziggo en KPN. Als Medior Java developer werk je in teamverband en soms individueel. Gedurende de werkweek zal je veelvuldig sparren met je collega’s voor een goede implementatie van de software. Ben jij een echte Java developer? Ben je geïnteresseerd in de nieuwste technieken en de laatste ontwikkelingen? Dan ben je hier aan het juiste adres! Eisen Wat wordt er van jou verwacht? • Minimaal HBO/WO denk- en werkniveau; • Analytisch sterk, open

Bekijk vacature »

Traineeship Full Stack .NET Developer

Dit ga je doen Start op 7 augustus bij de Experis Academy en ontwikkel jezelf tot een gewilde Full Stack .NET Developer. Maar hoe ziet het traineeship eruit en wat kun je verwachten? Periode 1 De eerste 3 maanden volg je fulltime, vanuit huis, een op maat gemaakte training in teamverband. Je leert belangrijke theorie en krijgt kennis van de benodigde vaardigheden en competenties die nodig zijn om de IT-arbeidsmarkt te betreden. Zowel zelfstandig als in teamverband voer je praktijkopdrachten op het gebied van front- en backend development uit. Wat er per week op het programma staat kun je hier

Bekijk vacature »

Front end developer

Functie Het team bestaat uit User Experience designers, Data Scientists en Software Engineers met passie voor hun vak. De consultants en ontwikkelaars werken volgens de Design Thinking methode waarbij de eerste stappen van ontwerp en ontwikkeling zullen samenkomen in een proof of concept. Nadat is vastgesteld dat de oplossing voldoet aan de belangrijkste behoeftes worden producten of services gevalideerd door middel van korte iteraties. Hiermee zorgen ze ervoor dat het werk voldoet aan de technische vereisten en gebruikersbehoefte. Door het inzetten van de nieuwste technologieën die toekomstbestendig zijn weten ze klanten omver te blazen. Ook geven en organiseren ze veel

Bekijk vacature »

Senior .NET developer

Functie As a Senior .NET developer you will work in our Research & development team. Our team consists of 17 colleagues! We are currently busy setting up a completely new architecture for a new product. We use VS2022 and .NET 6.0 for our new product. Your function is therefore mainly backend oriented. Since we develop measuring equipment for the chemical industry, it is also very important to develop high-quality software for its control. You are also responsible for designing, implementing and testing new features. For this position its also very important to ensure future-proof and sustainable architecture. Eisen - A

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc 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

Bekijk vacature »

Software Programmeur PHP - JAVA

Functie Heb jij altijd al willen werken voor een bedrijf, dat veilige netwerkverbindingen levert, door middel van veilige oplossingen, die door middel van de nieuwste technologieën ontwikkelt zijn? Stop dan nu met zoeken! Voor een opdrachtgever in omgeving Moordrecht zijn wij op zoek naar een programmeur. Hoe kan jouw dag er straks uitzien? Je gaat software en webapplicaties ontwikkelen met behulp van de talen C / C++ / PHP. Je gaat technische klussen uitvoeren op locatie bij klanten. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een projecten goed verlopen. Je gaat klanten ondersteunen op

Bekijk vacature »

Magento developer

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als back-end developer fungeer je als het verlengstuk van hun klanten. Technisch complexe zaken pak je met liefde op, en hierin werk je samen met o.a. front-end developers en designers. Klanten verwacht hierin kwaliteit van het hoogste niveau en een proactieve, meedenkende rol bij het maken van zowel technische als strategische keuzes. Ga

Bekijk vacature »

Software Ontwikkelaar PHP

Functie omschrijving Full Stack Software Ontwikkelaar gezocht! Voor een bedrijf in de regio van Ermelo zijn wij op zoek naar een Software Ontwikkelaar die gaat bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van SaaS applicatie van dit bedrijf. Hierbij ga jij voor- en samenwerken met de klanten van de organisatie, het is hierbij dus van groot belang dat je communicatief vaardig bent en dat je beschikt over beheersing van zowel de Nederlandse als Engelse taal. Bedrijfsprofiel Waar ga je werken? Altijd al in een echt familiebedrijf willen werken? Dan is dit je kans! Het bedrijf waar je komt te

Bekijk vacature »

Senior/Lead Python developer

Functie Samen met je team, bestaande uit een senior, 2 mediors en één junior ontwikkelaar ga je op een Agile-gebaseerde aanpak werken aan hun software. Je hebt oog voor kwaliteit, risico’s en klantbelang. Communicatie met je collega’s en waar nodig ook met klanten speelt een belangrijke rol in het bereiken van een succesvol resultaat. Als persoon ben je slim, krijg je dingen voor elkaar en ga je resultaatgericht te werk. Binnen het development team is er veel zelfstandigheid, los van de stand-up (10:00 uur) en zo nu en dan pair-programming sessies. Technieken die zij gebruiken zijn o.a. Python, Django, MySQL,

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

21/11/2024 21:50:57
 
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.