Movatterモバイル変換


[0]ホーム

URL:


Spring til indhold
WikipediaDen frie encyklopædi
Søg

PHP

Fra Wikipedia, den frie encyklopædi
Der er for få eller ingenkildehenvisninger i denne artikel,hvilket er et problem. Du kan hjælpe ved at angivetroværdige kilder til de påstande, som fremføres i artiklen.
PHP
Original skaber(e)Rasmus Lerdorf
Udvikler(e)The PHP Development Team
Udgivet8. juni1995
Stabil version8.0.1(7. januar2021)
StatusAktiv
Skrevet iC
OperativsystemUnix-lignende,Windows
PlatformPlatformsuafhængigt
LicensPHP License
Hjemmesidephp.net
Læs den relaterede bog
Programmering:PHPWikibooks.
For alternative betydninger, sePHP (flertydig).(Se også artikler, som begynder med PHP)

PHP er etobjekt-orienteretserver-sideprogrammeringssprog anvendt til udvikling af dynamiskewebapplikationer ogwebsteder. Sproget blev grundlagt afRasmus Lerdorf og udgivet første gang den8. juni1995. Projektet eropen source, hvilket basalt set betyder, at alle har adgang til den underliggende kildekode, der er skrevet iprogrammeringssprogetC. "PHP" er etrekursivt akronym for "PHP: HypertextPreprocessor", men stod tidligere for "Personal Home Page Tools".

PHP er anvendt til at udvikle prominente services somFacebook,Wikipedia,Yahoo,WordPress,Drupal, m.fl. Det er det mest udbredte sprog til dynamiske webløsninger, fordi det har et stort fællesskab (community) i sit bagland. Det har gjort sproget interessant for nybegyndere såvel som øvede. PHP ligger i direkte konkurrence medMicrosofts.Net-framework,Ruby,Python ogPerl.

Historie

[redigér |rediger kildetekst]

PHP startede som et lille, simpeltCGI-script iPerl, der skulle bruges til at overvåge trafikken på Rasmus Lerdorfs personlige hjemmeside. Det var på dette tidspunkt aldrig intentionen, at sproget skulle nå ud over hans egen private server. Da Perl-scriptet var for langsomt til at løse sin opgave, blev den omskrevet til C.

Andre personer der brugte samme server opdagede Rasmus' CGI-wrapper, og spurgte om de kunne bruge den på deres respektive projekter. Ikke lang tid gik der, før der opstod efterspørgsel på mere funktionalitet. Som følge af efterspørgslen samlede Lerdorf en – efter eget udsagn halvfærdig – distribution med dokumentation, mailing-liste og FAQ. Distributionen blev kaldtPersonal Home Page Tools, men ændrede senere navn tilPersonal Home Page Construction Kit.

Umiddelbart efter fortsatte Rasmus arbejdet og skrev den grundlæggende funktionalitet til at forbinde til, og arbejde med, en SQL-database. Dette værktøj blev kaldtForm Interpreter, eller blotFI.

PHP 3

[redigér |rediger kildetekst]
Andi Gutmans

I den senere om- og sammenskrivning blev det for første gang muligt at indsætte sin dynamiske PHP-kode i HTML-kontekst, frem for i separate filer. PHP 3 var endnu en omskrivning der blev udformet i samarbejde medAndi Gutmans ogZeev Suraski.

De blev lavet som en komplet omskrivning af PHP/FI, da PHP/FI i følge udviklerne var underdimensioneret til at lave eteCommerce-program de arbejdede på til et universitetsprojekt.

For at bygge på PHP/FI's eksisterende brugerbase samarbejdede Andi og Zeev med Rasmus, og offentliggjorde PHP 3.0 som den officielle efterfølger til PHP/FI.

PHP 3.0 blev officielt udgivet i juni 1998, efter omkring 9 måneder i offentlig test.

PHP 4

[redigér |rediger kildetekst]

I vinteren 1998 gik Andi og Zeev i gang med en omskrivning af PHP's kerne. Målet var at forbedre ydeevnen af komplekse applikationer. Den nye motor, døbtZend Engine, opfyldte målene. PHP 4.0 blev baseret på denne motor, og kombineret med en bred vifte af nye funktioner blev det udgivet i maj 2000.

PHP 5

[redigér |rediger kildetekst]

PHP 5 blev udgivet i juli 2004 efter flere års aktiv udvikling og test. Version 5 er drevet af kernenZend Engine 2.0. I PHP 5 kom der øget fokus på at forbedreOOP-delen, men der fulgte en lang række rettelser og tilføjelser, samt konventionelle modificeringer.

En anden markant ændring var automatisk hensyn til tidszoner, når man anvendte f.eks.date- ogstrtotime-funktionerne. Fra og med PHP 5 vil parametre og resultater til/fra disse funktioner være påvirket af serverens tidszone. Det betyder, at UNIX-tidspunktet "0" der iGMT tilsvarer1. januar1970 kl. 00:00, på danske servere automatisk blev konverteret til kl. 01:00. På trods af denne implementering af mange blev anset som en effektivisering, opstod der mange problemer under migreringen fra PHP 4 til 5, ganske enkelt fordi mange udviklere ikke var opmærksomme på denne ændring. Altså, ville den kode de var skrevet med manuelt hensyn til tidszoner, pludselig være automatisk, og i langt størstedelen af tilfældene derfor returnere ukorrekte resultater.

I PHP 5.1 blev der tilføjet understøttelse afPDO (PHP Data Object), der er et objekt-orienteret, mere sikkert og mere fleksibelt alternativ til den traditionelle MySQL-implementering. Det er ydermere annonceret at grundlæggende MySQL API vil blive fjernet fra PHP. Det vil dog ske ved en langsom udfasning, da man er velvidende omkring, at det stadig er det mest anvendte API til databaseadgang. Udviklere skal derfor begynde at anvende eksempelvis PDO,MySQLi eller tilsvarende alternativer.

I PHP5.3 blev tilføjet muligheden for at lave anonyme funktioner.

PHP 5.4

[redigér |rediger kildetekst]

PHP 5.4 blev resultatet af det der skulle have været PHP 6. En af de kritiske ændringer i PHP version 5.4 har været beskyttelse mod en hacking-metode kaldthash inject, hvor data sendt til serveren, er sammensat på en sådan måde, at det vil skabe enorme mængder ekstra beregninger på serveren, når dataene skal sorteres.

Der er også tilføjet et nytypehinting,callable. Det betyder, at man kan påtvinge at det parameter der videregives til en funktion kan kaldes – dvs. det typisk er en funktion.

PHP-teamet har også indført en ny notation for arrays, på formen[1, 2, 3, ...]. Samtidig er det blevet muligt, at gå direkte til en nøgle i et array returneret af en funktion. Eksempler på begge dele demonstreres her:

functiontest(){return['Værdi et','Værdi to'];}echotest()[0];// Værdi et

Den såkaldte "error supression", @-tegnet, man kan sætte foran funktioner for at de ikke skal udskrive fejlbeskeder, er blevet forbedret i sin hastighed. Oprindeligt var der tale om at udfase denne konstruktion.

Der kom også understøttelse aftraits i OOP.

PHP er også blevet udstyret med en indbygget webserver. Denne er dog ikke beregnet til offentligt brug, men udelukkende til at teste sin kildekode.

Den omstridte og berygtedesafe mode er blevet fjernet fuldkomment fra PHP, hvilket blev varslet flere år før annonceringen. I samme ombæring erregister_globals ogregister_long_arrays også fjernet.register_globals har i mange år været til stor bekymring for sikkerheden i PHP-applikationer, da funktionen gør det nemt for uvedkommende at sende variabler med potentielt farligt indhold ind og blande sig i koden. Nårregister_globals var slået fra, eller som nu fjernet, skal programmøren selv importere udefrakommende variabler, og har derfor bedre kontrol med hvilke der kommer ind, og hvorledes de bliver valideret.

PHP 7

[redigér |rediger kildetekst]

I2014 og2015 blev der udviklet en ny stor PHP-version, som blev nummereret PHP 7. Nummereringen af denne version involverede en del debat.[1] Mens PHP 6 Unicode-eksperimentet aldrig var blevet frigivet, henviste flere artikler og bogtitler til PHP 6-navnet, hvilket kunne have forårsaget forvirring, hvis en ny version skulle genbruge navnet.[2] Efter en afstemning blev navnet PHP 7 valgt.[3]

PHP 7 introducerede også nye sprogfunktioner, herunder returnertypeerklæringer til funktioner,[4] som supplerer de eksisterende parametertypeerklæringer og understøtter de skalære typer (integer, float, string, and boolean) i parameter og retur type erklæringer.[5]

Overblik

[redigér |rediger kildetekst]

PHP benyttes til at skabe dynamisk indhold, herunderwebshops,fora,CMS-systemer,intranets,databasebehandling, osv. Da det er et såkaldtgeneral-purpose sprog er det ikke begrænset til at løse en bestemt slags opgaver, og udvikleren er derfor givet kreativ frihed, dels til at definere sin opgave, og dels til fremgangsmåden hvorpå denne skal løses. Disse to parametre gør sig ikke gældende for alle programmeringssprog.

Server

[redigér |rediger kildetekst]

PHP afvikles på webserver-software som eksempelvisApache ellerIIS. Almindeligvis når en besøgende ankommer til en hjemmeside, forespørges der på en side, og denne returneres af serveren. Her vil der på statiske webløsninger være tale omHTML ogCSS. Når besøgende ankommer til en PHP-baseret server, vil en fortolker være til stede i processen mellem at en besøgende efterspørger på en side, og modtager den efterspurgte side. På dette ekstra trin i processen vil PHP-koden blive fortolket og behandlet, og således returnere et dynamisk resultat.

PHP har tre præ-installerede API'er til arbejde meddatabaser.

Filendelse

[redigér |rediger kildetekst]

Som endelse påfilnavne for PHP-filer benyttes ofte .php, .php3, .php4, .php5 eller .phtml. Tallene der står i forlængelse af .php kan bruges af webserveren til at identificere, hvilken version af php-fortolkeren der skal bruges. Til fremvisning af selve PHP-filerne medsyntaksfremhævning kan endelsen .phps på filnavnet benyttes.

Afgrænsning

[redigér |rediger kildetekst]

For at fortælle webserveren at der er tale om PHP koden, skal man afgrænse koden med nogle tags. Hvis man ikke gør det vil koden bare blive fortolket som almindelig tekst/HTML.Et PHP script starter altid med <?php eller <? og slutter med ?>, dog kan det også behandles ved brug af et HTML tag; <script language="php">. Der bruges dog også <?= ?> til et direkte print i html kode. Det ses ligeledes sjældent, at PHP åbnes med ASP tags som <% og %> og <%= %> til direkte print. Det er gyldig, hvis "asp_tags" er slået til i PHP konfigurationen – men dog yderst sjældent man ser det i praksis. Af hensyn bagudkompatibilitet bruges den såkaldte "shorthand" (<?=?>) kun sjældent i systemer der skal distribueres til forskellige servere. I PHP 6 er muligheden for brug af ASP tags blevet fjernet.

PHP i webmiljøer

[redigér |rediger kildetekst]

Når enbrowser forespørger om en PHP-side, så fortolkes koden først af webserveren vha. etplug-in-program, der entenoversættes sammen med webserveren (oftestApache underGNU/Linux ogUnix – seLAMP) eller som et CGI/ISAPI-program (oftest Internet Information Server eller Apache underWindows), der så genererer websiden, inden den bliver sendt af sted tilbage til browseren, som fortolkerHTML-koden og viser hjemmesiden.

Anvendelse

[redigér |rediger kildetekst]

PHP benyttes blandt andet af til generering afWikipedias websider, hvor den samlede PHP-løsning hedderMediaWiki.

PHP kan også bruges til andre formål end blot dynamiske websider, blandt andet kan shell scripts og programmer medgrafisk brugerflade (gennemGTK+) også kodes med dette sprog.

PHP kan ses som et open source-alternativ tilMicrosoftsActive Server Pages (ASP) og tilCGI/Perl.

Fortolkeren til PHP er for det meste Zends Zend Engine, der er skrevet iC, og er blevet brugt i PHP siden PHP3 blev udgivet. PHP5, som blev udgivet d.13. juli2004, bruger Zend Engine II.

Til PHP findes der et udvidelsessæt af komponenter og hyppigt benyttede kodestykker –PEAR (PHPExtension andApplicationRepository) – meget i stil medCPAN tilPerl.

Klassifikation

[redigér |rediger kildetekst]

PHP er kategoriseret som dynamisk og svagt, når det drejer sig om datatyper. Det betyder dels, at man kan arbejde med variabler og funktioner der ikke er deklareret fra start af, og ydermere, at der ikke er et striks forhold mellem en variabel-type og den type data variablen indeholder. Dvs. at undervejs i eneksekvering kan den samme variabel godt have inholdt både tekststrenge, tal, objekter og ressourcer. Dette gør sig eksempelvis ikke gældende i sprog som C++ og Object Pascal, hvor man måkonvertere på tværs af typer.

PHP er ogsåimperativ programmering.

PHP kontra konkurrenterne

[redigér |rediger kildetekst]

PHP er i almindelighed stærkt på sin performance/hastighed, samt at være open source og solidt understøttet af udviklerfællesskabet. Der findes mange fora og hjemmesider der tilbyder hjælp, guides og artikler, såvel som der findes tusindvis af udvidelser, frameworks og API'er.

.Net

[redigér |rediger kildetekst]

.Net er et samletframework fraMicrosoft der i web-sammenhæng spænder overC#,C++ ogVisual Basic. .Net er ofte foretrukket af virksomheder grundet sin stærkere implementering (af bl.a.MVC) og bagud-kompatibilitet, og fordi netop .Net har været anvendt til business i mange år. De to sprog/frameworks kan et langt stykke hen ad vejen løse de samme opgaver.

Python

[redigér |rediger kildetekst]

En af de fremtrædende forskelle på Python og PHP er rent æstetisk. PHP anvender såkaldte "curly braces", altså tegnene { og }, til at markere begyndelse og afslutning på kode-sektioner. Disse har aldrig været en del af Python, og skal man tro udviklerne, samt eteaster egg plantet i Python, kommer det aldrig til at ske. De to fællesskaber har interne drillerier, der bygger på, at hvis man kan lide curly braces, så bør man vælge PHP, og hvis man ikke kan, så bør man vælge Python.

Ruby

[redigér |rediger kildetekst]

Ruby bliver ofte sammenlignet med PHP, i forbindelse medRails. Rails er Rubys stack til webudvikling. Som Python er Ruby meget læsligt i syntaksen og har ikke påkrævede semikolon. I forhold til Python kræver Ruby ikke indentation i syntaksen.I forhold til PHP, kører mange af rails funktioner gennem en terminal og giver udvikleren andre og nogle gange flere muligheder til deployment og maintenance.

Perl / CGI

[redigér |rediger kildetekst]
KostTekst mangler, hjælp os med at skrive teksten

Syntaks

[redigér |rediger kildetekst]

PHP har en relativt fri syntaks, der langt hen ad vejen tillader programmøren at skabe sin egen stil. Der er delte meninger om den store frihed, hvor nogle mener, det har medført for meget rodet kode fra programmører der er uerfarne i teamwork, mens andre argumenterer for, at det gør sproget sjovere at arbejde med. Der findes flere definerede standarder, herunder PHPs egenPECL har en guide til, hvad der anses for korrekt syntaks. Idéen med en sådan fælles standard er simplificeringen af at dele og forstå andre udvikleres kode samt lettere at forstå sin egen kode, når man i fremtiden skal vedligeholde og tilrette den.

Hello world

[redigér |rediger kildetekst]

Det klassiskeHello, World!-eksempel:

<?phpecho"Hej verden!";?>

Variabler

[redigér |rediger kildetekst]

Variabler er applikationens hukommelse, hvor man lagrer værdier, man har i sinde at bruge på et senere tidspunkt. I nedenstående, meget simple – og meget statiske – eksempel, oprettes to variabler, x og y, og deres værdi bliver beregnet og lagt ind i variablen,resultat. Endeligt bliver resultatet skrevet, så den besøgende på hjemmesiden, vil kunne se det.

<?php$x=4;$y=5;$resultat=$x+$y;echo$resultat;// 9?>

I modsætning til mange andre programmeringssprog, er det ikke en forudsætning at man i PHP definerer en variabel før man bruger dem.

If / Else

[redigér |rediger kildetekst]
<?php// if – elseif($variabel<10){echo"Variablen er mindre end 10";}else{echo"Variablen er større end eller lig med 10";}?>

Løkker

[redigér |rediger kildetekst]

En løkke er en algoritme der gentager et operationx antal gange. X kan enten være fast defineret eller variabelt. PHP understøtter flere typer af variabler.

  • For
  • Foreach
  • While
  • Do – While

Eksempel på enwhile-løkke der arbejder med udskriver iterations-værdien så længe denne er under 10.:

<?phpwhile($i<10){echo$i;$i++;}?>

Enfor-løkke løber fra én værdi til en anden. Der eksisterer en række måder at udtrykke dette interval på, hvor nedenstående viser den mest almindelige. Det tredje parameter ifor-løkken udtrykker den måde hvorpå værdien stiger eller falder. I størstedelen af tilfældene vil man benytte $i++ der ved hver iteration i løkken ligger en værdi til variableni. Man kunne også skrive eksempelvis$i-- for en nedadgående løkke, eller eksempelvis$i = $i + 4 hvis springene skal være på intervaller á 4.

<?phpfor($i=0;$i<=20;$i++){echo$i."<br />";}?>

Foreach-løkken bruges til at gennemløbe alle nøgle/værdi-sæt i etarray. PHP understøtter associative arrays, og man kan derfor ikke kategorisk være sikker på at nøglerne går fra fx 0 til 20, og derfor vil enfor-løkke ofte vise sig at være utilstrækkelig til at løse opgaven.

<?php$a=array(1,2,3,17);foreach($aas$v){echo"Værdien af\$a:$v.\n";}?>

Klasse

[redigér |rediger kildetekst]

Klasser og objekter blev indført i PHP 3, men forbedret væsentligt i særdeleshed PHP 5 og 5.4. En simpel klasse kan defineres således:

classAudiextendsBil{private$model;publicfunction__construct($model){$this->model=$model;}}

Det tilsvarende objekt kan instantieres på denne måde:

$audi_r8=newAudi("R8");

Det er muligt at lave statiske funktioner, der kan kaldes globalt i programmet og uden først at instantiere klassen. Disse tilgås med den såkaldtescope resolution operator (::) på denne facon:

Audi::audis_historie();

Statiske funktioner defineres på samme vis som alm. funktioner, men benytter signaturen "static" før nøgleordet "function".

Community og udvidelser

[redigér |rediger kildetekst]

PEAR og PECL

[redigér |rediger kildetekst]
KostTekst mangler, hjælp os med at skrive teksten

Frameworks

[redigér |rediger kildetekst]
Hovedartikel:Frameworks til PHP.

Der eksisterer en lang række tredjepartsframeworks til PHP.

Bøger og dokumentation

[redigér |rediger kildetekst]
KostTekst mangler, hjælp os med at skrive teksten

PHP dokumentationen findes på PHPs officielle hjemmesidephp.net. Dokumentationen beskriver de forskellige dele af sproget og der er ofte eksempler på brug af f.eks. funktioner.

Fællesskab

[redigér |rediger kildetekst]
KostTekst mangler, hjælp os med at skrive teksten

Ydelse

[redigér |rediger kildetekst]

Normalt anses PHP som værende et hurtigt programmeringssprog, men programmørens forståelse for funktionerne og algoritmer er lige så vigtig for, at koden giver den højest mulige ydelse. I enkle eksempler måles ydelse med PHPs indbyggede microtime()-funktion, der giver det aktuelle tidsstempel imikrosekunder. PHP har mange funktioner, der i grunden gør de samme ting, men ikke nødvendigvis på samme måde, hvorfor de er forskellige i deres afviklingstid. Afhængigt af situationen er udskrivefunktionen "echo" nogle gange hurtigere end den tilsvarende "print." Men i særlige tilfælde vil print-funktionen være hurtigere. Et andet eksempel er sammenligningsoperatorerne == og ===. Sidstnævnte er hurtigere, men giver kun det ønskede resultat hvis de to datatyper er identiske.

Normalt er der tale om forskelle på nano- og mikrosekunder. I disse tilfælde er ydelsen i højere grad et kvalitetsstempel end en praktisk nødvendighed. Der findes dog undtagelser i særligt komplekse, omfattende eller meget anvendte systemer, hvor god forståelse for ydelse er nødvendig. Dette omfatter især, hvilke løkker der benyttes, hvordan de benyttes og antal af kald til databasen.

Sikkerhed

[redigér |rediger kildetekst]

Et af de mest alment kendte sikkerhedsproblemer i PHP er superglobale variabler og heraf risikoen forSQL-injections. SQL-injections er kort og godt, at der indsættes et eller flere specialtegn (typisk ' eller ") i de data der fremsendes til serveren. Hvis applikationen ikke er tilstrækkeligt beskyttet, vil disse tegn åbne muligheden for at personer med indgående kendskab til SQL kan udtrække og manipulere data, de ikke var tiltænkt.

Før version 5 var de såkaldtemagic_quotes slået til som standard, men de er siden slået fra som standard, for at blive fuldkommen udfaset i version 5.4.magic_quotes hjælper begyndere med at beskytte sig mod SQL-injections, men som Rasmus Lerdorf og andre fremtrædende PHP-personligheder har argumenteret for, er det ultimativt ikke sprogets ansvar eller opgave, og samtidig fremmer det indirekte ikke programmøren til at være opmærksom på potentielle sikkerhedshuller og trusler. PHP tilbyder dog en række værktøjer til beskyttelse mod SQL-injections, bl.a. funktionerneadd_slashes ogmysql_real_escape_string. Disse er beregnet til en klassisk, procedural tilgang til databaserne. Benytter man det objekt-orienterede PDO er der praktisk talt ingen risiko for injections, data systemet holder parametre og forespørgsel adskilt.

Safe mode er lavet for at komme et sikkerhedsproblem til livs på delte servere. Det er lavet som et PHP script der går ind og sætter begrænsninger for hvad der er tilladt. En af de største begrænsninger er, at filbehandlingsmuligheder er stærkt begrænsede, og mange open source systemer vil derfor ikke virke. På mange danske webhoteller er der ikke mulighed for at slå safe mode fra på domænet, hvilket giver store problemer.Safe mode er da også fjernet i PHP 6.

Kritik

[redigér |rediger kildetekst]

PHP er kritiseret for sin inkonsistente navngivning af indbyggede funktioner og klasser, samt foruddefinerede konstanter. Nogle funktioner er for eksempel navngivet med underscores, som imysql_fetch_array, mens andre er navngivet med store startbogstaver, for at adskille ord. EksempelvisbindParam fraPDO-biblioteket.

PHP er også kritiseret for sin "løse tilgang" sammenlignet med eksempelvis sit modersprogC, der validerer på anvendte data-typer. I PHP er det muligt at blande tal, tekst, boolske værdier, mv. sammen. Det er bekvemt, hvis man er erfaren med PHP's håndtering og opførsel, men fra et programmeringsteoretisk synspunkt er det ikke altid velset. Når PHP skal afgøre, hvordan værdierne skal behandes, kigger den bl.a. på de logiske operatorer der er anvendt mellem værdierne. Et punktum "." vil indikere, at man ønsker at sammensætte stykker af tekst, mens matematiske operatører som +, -, / og * vil behandle udtrykket som sådan. Blander man et tekststreng, for eksempel "66 Test", ind i et sådant udtryk, foretager PHP en såkaldttypecasting. Det varierer mellem datatyper og kontekst, hvad resultatet bliver. I nævnte tilfælde bliver resultatet 66, fordi PHP er programmeret til at undersøge, hvad der står først i teksten. Er dette et tal, benytter den tallet i udtrykket og dropper resten af teksten. Står der intet tal, indsætter PHP et 0.

Udviklere har også efterspurgtmultithreading (benyttelse af flereprocessorkerner) ogUnicode-understøttelse. Sidstnævnte er angiveligt under udvikling, men har allerede forsinket udgivelsen af PHP 6 væsentligt.

Eksterne henvisninger

[redigér |rediger kildetekst]
Wikimedia Commons har medier relateret til:

Noter

[redigér |rediger kildetekst]
  1. ^"The Neverending Muppet Debate of PHP 6 v PHP 7".
  2. ^"RFC: Name of Next Release of PHP".php.net. 2014-07-07. Hentet2014-07-15.
  3. ^"Re: [PHP-DEV] [VOTE][RFC] Name of Next Release of PHP (again)". 2014-07-30. Hentet2014-07-30.
  4. ^"RFC: Return Types".php.net. 2015-01-27. Hentet2015-01-28.
  5. ^"RFC: Scalar Type Declarations".php.net. 2015-03-16. Hentet2015-03-17.


Autoritetsdata
Hentet fra "https://da.wikipedia.org/w/index.php?title=PHP&oldid=11388464"
Kategorier:
Skjulte kategorier:

[8]ページ先頭

©2009-2025 Movatter.jp