Konfigurationsfiler i PHP
|
Hej Rowl-brugere og brugerinder, hvis man kan sige det. I denne artikel vil jeg vise hvorfor og hvordan, .INI-filer bruges af et PHP-script. En INI-fil er en såkaldt konfigurationsfil. Den kan altså ikke alene udføre noget, men den bliver brugt af andre programmer og filer. Når man udvikler systemer i PHP, kan man med fordel benytte en INI-fil, i stedet for at oprette en PHP-fil ved navn ”config”, eller hvad jeres PHP-konfigurationsfiler nu plejer at hedde. En INI fil består egentlig kun af variabler og sektioner. På det grundlag, at du meget gerne skal vide hvad variabler er, vil jeg nøjes med at forklare sektioner. Hvis vi skal sammenligne en sektion med noget, ville det første, jeg kom til at tænke på, være en klasse. En sektion kan nemlig indeholde variabler, ligesom en klasse. Dog kan den ikke indeholde funktioner, igen fordi INI-filen i sig selv ikke kan udføre noget. Det har en lille ulempe, og det er, at da den ikke bliver oversat af serveren inden den når ud til klienten, er det muligt at se koden i .INI filen direkte i browseren, så hvis din INI-fil indeholder nogle følsomme data, gør du klogt i at kalde den noget lidt indviklet, og gemme den et godt sted på din server. Du bør måske heller ikke gemme meget vigtige oplysninger i en INI-fil, men risikoen for at andre finder den er jo stort set minimal. Før vi går i gang med at lave et PHP-script, der benytter INI-filer, skal vi kendes syntaksen på en INI-fil. Den er helt utroligt simpel. Et eksempel:
Hvis vi vil oprette en INI-fil med sektioner, gør vi således:
Prøv nu at lave en INI-fil, der ser således ud, og gem den som config.ini.
Nu har vi indlæst vores fil. Det første vi nu vil gøre, er at tjekke om den besøgende må bruge HTML i vores gæstebog. Bemærk, at jeg ikke vil lave koden til en gæstebog i denne artikel, bare så du ikke leder forgæves :]
$ini er et array--ikke en streng. Den indeholder navnene på alle vores sektioner. Hvert navn – eller sektion, om man vil – er et array, der indeholder navnene på alle vores variabler. Jeg vil her illustrere det med mine berømte Paint-evner. ![]() Nu har jeg endelig fået mig en server. Så håber jeg bare billedet bliver ved med at være der! Nå, videre. Vi kunne også udvide eksemplet med en database-forbindelse. Vores systemer skal være så fleksible og brugervenlige som muligt, så vi lader brugeren indtaste sine databaseoplysninger selv. Dette skal foregå i en INI-fil, i fald brugeren af systemet ikke har forstand på at tilkoble databaser i PHP. Altså har vi her kontakt.ini:
kontakt.php
Men dette kan hurtigt blive et relativt trivielt arbejde, og så er det dejligt med nogle genveje, så det skal du få. Først kigger vi på funktionen extract.
extract (array (”navn” => ”dexo”, ”alder” => 15)); … vil lave variablerne $navn og $alder, og de vil indeholde henholdsvis “dexo” og 15. Obs.: Læs mere om extract i PHP manualen inden du bruger den i alle dine scripts, da den kan have nogle mere eller mindre fatale konsekvenser. Den kan blandt andet overskrive dine andre variabler, hvis du giver den de forkerte argumenter. En anden dejlig funktion er array_map. Dens første argument er et såkaldt CALLBACK-argument, man smider altså navnet på en funktion deri, og så benytter array_map sig af den funktion. Jeg kombinerer tit array_map og extract med hinanden. Dette sparer mig for mange linier kode. Nu forestiller vi os vi har vores INI-fil, der bestemmer hvor vidt en bruger må benytte HTML i sine indlæg eller ej. Hvis han ikke må, skal vi til at bruge htmlentities på hver eneste felt i vores database-tabel, for at undgå HTML-tags. Det er virkelig irriterende, og helt unødvendigt, det kan klares sådan her:
$r [’forfatter’] bliver til $forfatter $r [’besked’] bliver til $besked … og så videre. Det forudsætter selvfølgelig, at vi har et ”forfatter” og et ”besked” felt i vores database-tabel. Det var det, nu kan jeg ikke komme på mere omkring INI-filer og praktiske funktioner. Det er måske værd at nævne, at dette kun kan lade sig gøre fra og med PHP4, men det er de færreste der kører med ældre versioner efterhånden. Til sidst vil jeg sige, at jeg meget gerne tager i mod kommentarer, ligeså vel som kritik, så længe sidstnævnte er konstruktivt og begrundet. Jeg håber du har læst hele artiklen igennem, inden du rater den, hvis du altså gør det, og at du vil lægge en kommentar, der beskriver hvorfor du har givet artiklen den karakter, du nu end måtte give, så jeg kan forbedre mig i fremtiden. Hilsen Dexo :-) Sidst redigeret 12:23 - 16/05/2007 |
|
Kommentarer
Giv din mening tilkende om denne artikel, eller læs andres.Har du spørgsmål eller brug for hjælp til denne artikel henvises du til forummet.
|
Super interesant artikel. Dog kunne du godt fortælle lidt om mulighederne for at sikre sine .ini-filer, istedet for blot at kalde den noget indviklet.. Fx. kan man via .htaccess ændre på de rettigheder som gør at filen kan læses i browseren, mener jeg. Eller man kunne evt. kalde den med endelsen .php? Ville det gøre nogen forskel? Eller forsøge med nogle små-hacks som: ;<?exit("Forsvind!") ; dine ini-variabler her ;?> Sidst redigeret 23:49 - 16/05/2007 |
Oprettet af:
|
| Nice 5 ! |
Oprettet af:
|
|
Du har fået fém af mig. En rigtig god, interessant og lærerig artikel. Jeg sidder også med det samme spørgsmål som Micra. Kan man beskytte sin .ini-fil? Selvfølgelig kan man jo bare lave en fil, som der fx hedder settings.php, også opretter sine variabler derinde, men det virker nu mere smart og professionelt at gøre det via .ini-filer. |
Oprettet af:
|
|
Martin > Ja, helt enig. Micra fandt faktisk en metode frem. Hvis du kalder din fil for (fx) settings.php Så laver du stadig en INI-syntax i den fil, men i starten skriver du: ;<? exit(); ?> og efter den linie kommer alle dine INI-sektioner og INI-variabler osv Edit: Du bruger self stadig parse_ini_file, selvom det er en PHP-fil. Eksempel: $fil = parse_ini_file("settings.php"); Sidst redigeret 11:34 - 19/05/2007 |
Oprettet af:
|
|
skide godt homie ! :D god forklaring og godt skrevet .. du får stuur 5tal af maj |
Oprettet af:
|
| Blæret nok. |
Oprettet af:
|
| Du har fået 4 af mig. Somsagt tidligere er det sjovt at høre om en funktion der ikke bliver brugt så meget. Igen vil jeg gerne høre hvad fordelen er ved konfigurationsfilerne i forhold til en almindelig .php fil der bliver included? Jeg kunne forestille mig at disse filer kunne redigeres med programmer, men hvilke, hvad er mulighederne i det og hvordan? Det kunne evt. være stof til en ny og rigtig spændende artikel. |
Oprettet af:
|
|
Jeg ved ikke om det er en fordel at bruge INI filer, men det er et alternativ. Det er rigtigt, de kan bruges og redigeres af programmer. Det kan PHP filer i og for sig egentlig også, men det kan ikke rigtigt betale sig. Fordelen ved INI filer kunne eventuelt være syntaksen. I PHP er det måske ikke den store fordel, da variablerne automatisk bliver indlæst og oprettet af PHP, men i andre programmeringssprog er det en stor lettelse, at syntaksen er så enkel. Jeg har blandt andet arbejdet med INI filer i Delphi, det er blandt andet klart at foretrække fremfor TXT filer. |
Oprettet af:
|
|
Rigtig god artikel, det kunne nemlig godt være et alternativ hvis man nu skal til at lære andre programmeringssprog end PHP, hvor syntaksen "sværere". Et stort 5 tal, jeg synes du formår at forklare tingene på en god måde, så man forstår det, og ikke skal læse det igennem 2-3 gange :) |
Oprettet af:
|

