Avatar billede horizon Nybegynder
27. april 2006 - 19:25 Der er 12 kommentarer og
1 løsning

Søg i fil, og skriv/erstat tekst

Jeg er ved at lave et netprogram hvor jeg har en indstillinger.php fil som indeholder adgangskoderne til bl.a. mysql serveren. Nu er jeg ved at prøve at lave en funktion der gør at man kan rette de oplysninger i den fil.

Men nu har jeg læst filhåndtering på php.net godt grundigt igennem, og jeg kan ikke gennemskue hvordan jeg kommer igang.

Altså skal få lavet noget der:
-åbner en fil (fopen sjovt nok :P)
-søger i en fil efter f.eks.:
<?php

...[snip]

//MySql Indstillinger
$MySql[Brugernavn] = XXX;
$MySql[Adgangskode] = YYY;
$MySql[Host] = ZZZ;
$MySql[Database] = ÆÆÆ;

[snip]...

?>
-erstat f.eks. "$MySql[Brugernavn] = XXX;" med "$MySql[Brugernavn] = CCC;"

ELLER

-tilføj AAA 2 linjer efter "$MySql[Database] = ÆÆÆ;"

Jeg synes ikke umiddelbart jeg kan finde noget tilsvarende. Er det eneste mulige at gøre så det at hvis en ændring sker i filen så skal den slettes og skrives på ny? Vil helst undgå dette nemmerlig.
Avatar billede coderdk Praktikant
27. april 2006 - 19:59 #1
hvad med at bruge serialize og unserialize sammen med fopen/fwrite/fclose og file_get_contents?
Avatar billede horizon Nybegynder
27. april 2006 - 20:08 #2
...ynk...

jeg forstår ikke helt hvad det er (un)serialize gør ved at læse det på php.net
Avatar billede coderdk Praktikant
27. april 2006 - 20:19 #3
Den laver f.eks. arrays om til tekst, men nu jeg tænker mig om, skal du nok ikke bruge det - Det lyder som en klassisk .ini fil:

[MySQL]
brugernavn=xxx
password=xxx
host=xxx
database=xxx

Så kan du bruge parse_ini_file: http://dk.php.net/parse_ini_file :)
Avatar billede horizon Nybegynder
27. april 2006 - 21:35 #4
hmm jeg kan ikke umiddelbart se hvordan jeg skal hente/bruge, gemme og ændre disse data i en ini fil (føler sig ret dum nu :P)
Avatar billede coderdk Praktikant
27. april 2006 - 21:51 #5
Normalt siger man at man selv skal rette i inifilen med en teksteditor, men det er jo bare at skrive den. F.eks.

// Skriv ny:
$fp = fopen( "settings.ini", "w" );
fwrite( $fp, "[MySQL]\n" );
fwrite( $fp, "brugernavn=$brugernavn\n" );
fwrite( $fp, "password=$password\n" );
fclose( $fp );

De kan hentes igen med:

$ini = parse_ini_file( "settings.ini", true );
$brugernavn = ( !empty( $ini['MySQL']['brugernavn'] ) ? $ini['MySQL']['brugernavn'] : '' );
$password = ( !empty( $ini['MySQL']['password'] ) ? $ini['MySQL']['password'] : '' );
Avatar billede horizon Nybegynder
27. april 2006 - 22:16 #6
skal jeg så køre den fwrite igen for at rette de data efter de er oprettet? for det er jo det dette går ud på, at rette disse data via et interface
Avatar billede coderdk Praktikant
27. april 2006 - 22:21 #7
Ja, du kører bare den "skriv ny" kode hver gang du vil gemme dine variable :)
Avatar billede horizon Nybegynder
27. april 2006 - 22:23 #8
fair nok! ikke noget med at slette filen først? det var jo dejligt nemt :D takker... smid et svar
Avatar billede coderdk Praktikant
27. april 2006 - 22:29 #9
fopen med "w" tømmer indholdet før den skriver :)
Avatar billede horizon Nybegynder
29. april 2006 - 21:58 #10
hvad er egentligt fordelene ved at bruge en ini fil i stedet for en almindelig php fil?
Avatar billede coderdk Praktikant
29. april 2006 - 22:15 #11
Tjah, hvis man laver et system der skal benyttes af andre, så er det vel meget rart at de kan sætte indstilligerne i én fil, i et forholdsvist almindeligt format. Ellers er der ikke rigtig nogle fordele ;)
Avatar billede coderdk Praktikant
29. april 2006 - 22:16 #12
Du kunne principielt også bare lave en settings.php med $brugernavn='blah'; osv
Avatar billede horizon Nybegynder
29. april 2006 - 22:34 #13
jeg troede bare det indebar noget ekstra sikkerhed el. lign. Kender ikke ini formatet så godt igen. Mere derfor jeg spurgte ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester