Schrijf/Write functie
Met deze functie kun je op een gemakkelijke manier naar een bestand schrijven. Zonder al die fopen en fclose zooi en je kunt er gemakkelijk zelf dingen aan toevoegen.
Het kan best zijn dat dit script eigenlijk TE gemakkelijk is voor de scriptlib. Maar aangezien de vraag al vaker in het forum gesteld is, dacht ik: ik post hem toch maar.
Aan de admins om te beslissen of de functie mag blijven staan.
Werkt alleen op PHP 5 en hoger
Gesponsorde koppelingen
PHP script bestanden
11 reacties op 'Schrijf/Write functie'
Gesponsorde koppelingen
Volgens mij voegt je functie niks toe aan de bestaande file_put_contents, al had je alleen maar is_writable ipv file_exists gebruikt was het al beter geweest. file_exists heeft hier namelijk niets mee te maken, een bestand kan namelijk ook gemaakt worden als het niet bestaat.
Bovendien return je de fout melding, dit kan beter een return false zijn en evt een trigger_error.
Je hebt ook je eigen oplossing verzonnen voor de constante FILE_APPEND ;)
Bovendien return je de fout melding, dit kan beter een return false zijn en evt een trigger_error.
Je hebt ook je eigen oplossing verzonnen voor de constante FILE_APPEND ;)
Boaz:
Volgens mij voegt je functie niks toe aan de bestaande file_put_contents
Dat wel
Boaz:
al had je alleen maar is_writable ipv file_exists gebruikt was het al beter geweest
Aangepast
Boaz:
Bovendien return je de fout melding, dit kan beter een return false zijn en evt een trigger_error.
Ook aangepast :-)
Kan je even een link naar een werkend voorbeeld geven aub.
- Wat als de HTTP-wrapper afstaat en je wil lezen met file_get_conetnts() uit een bestand gelegen in een hogere map: krijg je een open_basedir restriction
Dit kan ik natuurlijk oplossen met cURL te gebruiken.
Voor de rest vind ik het een leuk scriptje al moet ik me aansluiten bij Boaz dat het eigenlijk toch niet echt veel veranderd aan de funktie file_put_contents() die gebruik ik nu met de funktie cURL om fopen() te vervangen voor het uitlezen van bestanden daar ik anders errors krijg bij het uitlezen van bestanden op externe locaties omdat de http-wrapper en de funktie fopen() uitgeschakeld zijn. (ik kan dus ook jouw script niet gebruiken voor bestanden uit te lezen in hoger gelezen mappen.)
Update: is enkel met de file_get_contents() dat je error krijgt en dit ook enkel als de http-wrapper afstaat. Je kan wel willen lezen/schrijven naar een bestand op je eigen server maar in een hogere map bvb.: ../../index.txt of /index.txt. ik krijg alvast open_basedir restriction op de file_get_contents().
Schrijven naar een externe lokatie niet gaan??? en Als het een externe locatie is waar je wel rechten op hebt bvb. naar een bestand op een andere server/domein van je eigen??
Dacht ik toch niet als ik in mijn .htaccess bestand op de andere server een bepaald ip adres toelaat (adres van mijn andere server) en de rest niet??
@PHP Newbie: het is en blijft wel een zeer handige funktie en zal ze zeker gebruiken moet gewoon enkel de file_get_contents(); vervangen door een cURL funktie om het bestand uit te lezen.!!!
- Wat als de HTTP-wrapper afstaat en je wil lezen met file_get_conetnts() uit een bestand gelegen in een hogere map: krijg je een open_basedir restriction
Dit kan ik natuurlijk oplossen met cURL te gebruiken.
Voor de rest vind ik het een leuk scriptje al moet ik me aansluiten bij Boaz dat het eigenlijk toch niet echt veel veranderd aan de funktie file_put_contents() die gebruik ik nu met de funktie cURL om fopen() te vervangen voor het uitlezen van bestanden daar ik anders errors krijg bij het uitlezen van bestanden op externe locaties omdat de http-wrapper en de funktie fopen() uitgeschakeld zijn. (ik kan dus ook jouw script niet gebruiken voor bestanden uit te lezen in hoger gelezen mappen.)
Update: is enkel met de file_get_contents() dat je error krijgt en dit ook enkel als de http-wrapper afstaat. Je kan wel willen lezen/schrijven naar een bestand op je eigen server maar in een hogere map bvb.: ../../index.txt of /index.txt. ik krijg alvast open_basedir restriction op de file_get_contents().
Schrijven naar een externe lokatie niet gaan??? en Als het een externe locatie is waar je wel rechten op hebt bvb. naar een bestand op een andere server/domein van je eigen??
Dacht ik toch niet als ik in mijn .htaccess bestand op de andere server een bepaald ip adres toelaat (adres van mijn andere server) en de rest niet??
@PHP Newbie: het is en blijft wel een zeer handige funktie en zal ze zeker gebruiken moet gewoon enkel de file_get_contents(); vervangen door een cURL funktie om het bestand uit te lezen.!!!
een link naar een voorbeeld vond ik niet nodig Joeri, aangezien het gewoon een functie is die naar een bestand schrijft, valt volgens mij niet veel aan te laten zien..
Ik heb het net even getest, en ik kan gewoon schrijf('../file.txt', 'tekst'); doen...
Ik heb het net even getest, en ik kan gewoon schrijf('../file.txt', 'tekst'); doen...
Edit:
Verder kun je toch niet schrijven naar externe locaties, dus heb je ook geen functie nodig die externe bestanden kan controleren...
Verder kun je toch niet schrijven naar externe locaties, dus heb je ook geen functie nodig die externe bestanden kan controleren...
Edit:
Dan kan het nog niet, enige manier om het bestand te wijzigen is dan via FTP, want jij kunt niet zomaar "rechten" krijgen op een bestand op een andere server, want als jij het bestand mag wijzigen vanaf jou server, kan ik dat ook vanaf de mijne :-)
Dan kan het nog niet, enige manier om het bestand te wijzigen is dan via FTP, want jij kunt niet zomaar "rechten" krijgen op een bestand op een andere server, want als jij het bestand mag wijzigen vanaf jou server, kan ik dat ook vanaf de mijne :-)
Edit:
Oke, daar heb je een punt, maar een PHP'er die dit script nodig heeft (dus niet gebruikt, maar nodig heeft omdat diegene het zelf niet kan schrijven) zal zo ver echt nog niet zijn.
Dus wil je het op die manier gaan gebruiken zul je een eigen functie moeten schrijven.
Oke, daar heb je een punt, maar een PHP'er die dit script nodig heeft (dus niet gebruikt, maar nodig heeft omdat diegene het zelf niet kan schrijven) zal zo ver echt nog niet zijn.
Dus wil je het op die manier gaan gebruiken zul je een eigen functie moeten schrijven.
Niks officieel. Niet alle constanten worden met hoofdletters geschreven, onzin! De meeste mensen doen dat ja, maar heeft niks met officieel te maken. Zie www.php.net/define
Zoiets?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
function schrijf ( $bestand , $tekst, $begin = false )
{
$version = explode ( '.' , phpversion () );
if ( intval ( $version[0] ) >= 5 )
{
#Eerst controleren of het bestand wel bestaat, of misschien is het niet schrijfbaar
if ( ( !file_exists ( $bestand ) ) OR ( !is_writable ( $bestand ) ) )
{
#Het gekozen bestand voldoet niet, dus "fout" "teruggeven"
return false;
}
else
{
if ( $begin === true ) //en begin is true
{
$write = $tekst . file_get_contents ( $bestand ); //dan schrijven we aan het begin van het bestand
}
else //Als begin niet true is
{
$write = file_get_contents ( $bestand ) . $tekst; //dan schrijven we achteraan het bestand
}
if ( file_put_contents ( $bestand , $write ) ) //als het schrijven gelukt is
{
return true; //geven we true terug
}
else //als het schrijven niet gelukt is
{
return false; //geven we false terug
}
}
}
else
{
#Als de versie lager dan 5 is
#Dan zullen we met fopen enz. moeten gebruiken
if ( !$handle = @fopen ( $bestand , 'r' ) )
{
return false;
}
if ( !$inhoud = @fread ( $handle , filesize ( $bestand ) ) )
{
return false;
}
if ( !$sluiten = @fclose ( $handle ) )
{
return false;
}
if ( $handle = @fopen ( $bestand , 'w' ) )
{
$tekst = ( ( $begin === true ) ? ( $tekst . $inhoud ) : ( $inhoud . $tekst ) );
if ( !$resultaat = @fwrite ( $handle , $tekst ) )
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
}
?>
function schrijf ( $bestand , $tekst, $begin = false )
{
$version = explode ( '.' , phpversion () );
if ( intval ( $version[0] ) >= 5 )
{
#Eerst controleren of het bestand wel bestaat, of misschien is het niet schrijfbaar
if ( ( !file_exists ( $bestand ) ) OR ( !is_writable ( $bestand ) ) )
{
#Het gekozen bestand voldoet niet, dus "fout" "teruggeven"
return false;
}
else
{
if ( $begin === true ) //en begin is true
{
$write = $tekst . file_get_contents ( $bestand ); //dan schrijven we aan het begin van het bestand
}
else //Als begin niet true is
{
$write = file_get_contents ( $bestand ) . $tekst; //dan schrijven we achteraan het bestand
}
if ( file_put_contents ( $bestand , $write ) ) //als het schrijven gelukt is
{
return true; //geven we true terug
}
else //als het schrijven niet gelukt is
{
return false; //geven we false terug
}
}
}
else
{
#Als de versie lager dan 5 is
#Dan zullen we met fopen enz. moeten gebruiken
if ( !$handle = @fopen ( $bestand , 'r' ) )
{
return false;
}
if ( !$inhoud = @fread ( $handle , filesize ( $bestand ) ) )
{
return false;
}
if ( !$sluiten = @fclose ( $handle ) )
{
return false;
}
if ( $handle = @fopen ( $bestand , 'w' ) )
{
$tekst = ( ( $begin === true ) ? ( $tekst . $inhoud ) : ( $inhoud . $tekst ) );
if ( !$resultaat = @fwrite ( $handle , $tekst ) )
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
}
?>
Om te reageren heb je een account nodig en je moet ingelogd zijn.
- Details
Door:
PHP Newbie- 6 jaar geleden
- 670 x bekeken
- Labels
- Geen tags toegevoegd.
- PHP scripts opties
- PHP algemeen
- Nieuwste PHP scripts
- PHP script toevoegen


PHP hulp
0 seconden vanaf nu