PHP

PHP
Utvikler(e)
PHP Group
https://www.php.net
Generell informasjon
Vanlige utvidelser .php, .phtml, .php3, .php4, .php5, .php7, .phps, .php-s, .pht_.phar
Paradigme Multi -paradigme : imperativ , funksjonell , objektorientert , prosedyremessig , refleksiv
Dukket opp i nitten nitti fem
Designet av Rasmus Lerdorf
Siste stabile versjon 8.1.7 [ 1 ] ​( 9. juni 2022 (4 måneder og 6 dager))
type system dynamisk , svak
implementeringer Zend Engine , HHVM , Phalanger , Quercus, Project Zero, Parrot
påvirket av Perl , C , C++ , Java , Tcl
har påvirket Falcon , Hack
Operativsystem Unix-lignende , Windows
Tillatelse PHP-lisens

PHP er et generell programmeringsspråk som er spesielt egnet for webutvikling . [ 2 ] Den ble opprinnelig opprettet av den dansk - kanadiske programmereren Rasmus Lerdorf i 1994. [ 3 ] For tiden er referanseimplementeringen av PHP produsert av The PHP Group. [ 4 ]​ PHP sto opprinnelig for Personal Home Page , men står nå for den rekursive initialismen [ n 1 ]​ PHP: Hypertext Preprocessor . [ 6 ]

PHP-kode behandles vanligvis på en webserver av en PHP- tolk implementert som en modul , en daemon eller som en kjørbar Common Gateway Interface (CGI) . På en webserver vil resultatet av den tolkede og utførte PHP-koden – som kan være alle typer data, for eksempel genererte HTML- eller binære bildedata – utgjøre hele eller deler av et HTTP -svar . Det finnes ulike malsystemer , innholdsstyringssystemer og rammeverk som kan brukes til å organisere eller lette genereringen av den responsen. På den annen side kan PHP brukes til mange programmeringsoppgaver utenfor nettkonteksten, for eksempel frittstående grafiske applikasjoner [ 7 ] og dronekontroll . [ 8 ]​ Du kan også tolke og kjøre hvilken som helst PHP-kode gjennom et kommandolinjegrensesnitt (CLI).

Standard PHP-tolken, drevet av Zend Engine , er gratis programvare utgitt under PHP-lisensen . PHP har blitt mye portert og kan distribueres på de fleste webservere på nesten alle operativsystemer og plattformer , gratis.

PHP-språket utviklet seg uten en formell skriftlig spesifikasjon eller standard frem til 2014, med den opprinnelige implementeringen som fungerte som de facto -standarden som andre implementeringer prøvde å følge. Siden 2014 har det pågått arbeid med å lage en formell PHP-spesifikasjon. [ 9 ]

Fra april 2020 var mer enn halvparten av nettstedene på nettet som bruker PHP, fortsatt på den utgåtte [ 10 ] versjonen 5.6 eller tidligere. [ 11 ]​ og med versjon 7.0 og 7.1 over 68 %, som ikke offisielt støttes av PHP Development Team, [ 12 ]​ mens sikkerhetsstøtte tilbys av tredjeparter, som Debian (til juni 2020 for PHP5). [ 13 ] I tillegg sluttet versjon 7.2, den mest populære støttede versjonen, å motta sikkerhetsoppdateringer 30. november 2020. [ 10 ]

Oversikt

PHP kan distribueres på de fleste webservere og på alle operativsystemer og plattformer uten kostnad. PHP-språket er installert på mer enn 20 millioner nettsteder og en million servere. Migrering av PHP-baserte tjenester til de nye teknologiene som dukker opp innebærer en kostnad som må begrunnes økonomisk (spesielt når det gjelder maskinvare og ytelse), for å diskutere om antallet PHP-baserte nettsteder har blitt gradvis redusert de siste årene. de siste årene, med fremkomsten av nye teknologier som Node.js , Golang, ASP.NET , etc., eller ikke, betyr det å åpne en debatt som ikke er blottet for feilslutninger og demagogiske argumenter. Det er et bevist faktum at i næringslivet blir ting bare endret når det vil føre til en strategisk fordel i markedet. Bedrifter mangler en følelse som polariserer "følelsene" deres, og dukker opp et mønster av merkantilistisk posisjonering til fordel for eller mot noe bare på grunn av en nedsettende følelse mot visse teknologier, slik som skjer med verden av Linux, Windows og/eller Mac i brukernes rike .

Å kunne lage en oversikt over hvordan PHP utvikler seg i dag er å snakke om de nye tilgjengelige bibliotekene, bruken av arrays, [ 14 ] håndtering av heltall, behandling av kryptografi ved bruk av en Base64, [ 15 ] ​[ 16 ] ​[ 17 ] ​Nettskraping , webindeksering , dataforkoking , Big Data, datasett , dataovervåking , dimensjonsforslagssett . Som vi kan se, er en generell visjon av dette språket mye mer kompleks enn å si at det er et språk for webutvikling. Denne virkeligheten ligger til grunn for utseendet til xyz-domener, hvis formål og spesialitet er bufring av PHP-tjenester for å betjene innhold med en ytelsesorientering knyttet til tjenester for forbruk av andre tjenester som trenger data, for eksempel AI-er der PHP ser en velkommen med en følelse av tillit til resultatene som skal oppnås (uten å ha til hensikt å tjene som et AI-orientert språk, siden det ikke var dets opprinnelige konseptualisering). Selv om markedsføringen som denne typen domener mottar er relatert til de nye generasjonene av mennesker som er utdannet i nye teknologier [ 18 ] Som en del av den generelle visjonen bør et siste aspekt inkluderes, og det er evnen til å generere lag med selv- avhengig sikkerhet, i et paradigme som bare dukker opp takket være bibliotekene som PHP har (i utviklingsprosessen).

Wikipedia- nettstedet er utviklet i PHP. [ 19 ] Det er også den mest populære Apache - modulen blant datamaskiner som bruker Apache som webserver.

PHPs nære likhet med mer vanlige strukturerte programmeringsspråk , som C og Perl , gjør at de fleste programmerere kan lage komplekse applikasjoner med en veldig kort læringskurve . Det lar dem også bli involvert i dynamiske innholdsapplikasjoner uten å måtte lære et helt nytt sett med funksjoner.

Selv om alt i designet er rettet mot å lette opprettelsen av nettsteder, er det mulig å lage applikasjoner med et grafisk brukergrensesnitt , ved å bruke en utvidelse som PHP-Qt , PHP-GTK , [ 20 ] WxPHP, WinBinder, Roadsend PHP, Phalanger , Phc eller HiP Hop VM. Den kan også brukes fra kommandolinjen , på samme måte som Perl eller Python kan gjøre det; Denne versjonen av PHP kalles PHP-CLI ( Command Line Interface ). [ 21 ]

Når klienten sender en forespørsel til serveren om å sende den en nettside , kjører serveren PHP - tolken . Dette behandler det forespurte skriptet som vil generere innholdet dynamisk (for eksempel hente informasjon fra en database). Resultatet sendes av tolken til serveren, som igjen sender det til klienten.

Gjennom utvidelser er det også mulig å generere PDF -filer , [ 22 ] Flash , samt bilder i forskjellige formater.

Den tillater tilkobling til forskjellige typer SQL- og NoSQL-databasetjenere som MySQL , PostgreSQL , Oracle , ODBC , DB2 , Microsoft SQL Server , Firebird , SQLite eller MongoDB . [ 23 ]

PHP har også muligheten til å kjøre på de fleste operativsystemer , som Unix (og som Linux eller Mac OS X ) og Microsoft Windows , og kan kommunisere med de mest populære webserverne slik de finnes på Internett. CGI , modul for Apache og ISAPI .

PHP er et alternativ til Microsofts ASP- og ASP.NET -teknologier (som bruker C# og Visual Basic .NET som språk) , Adobes ColdFusion , JSP / Java , CGI / Perl og Node.js / Javascript . Selv om opprettelsen og utviklingen skjer innen frie systemer, er det under GNU -lisensen også et kommersielt integrert utviklingsmiljø kalt Zend Studio . CodeGear ( Borlands programmeringsspråkavdeling ) har gitt ut et integrert utviklingsmiljø for PHP, kalt 'Delphi for PHP. Det finnes også minst et par moduler for Eclipse , et av de mest populære miljøene. [ 24 ]

Historikk

Den ble opprinnelig designet i Perl , basert på et sett med binære CGI -skript skrevet på C-språket av den dansk-kanadiske programmereren Rasmus Lerdorf i 1994 for å vise hans CV og registrere visse data, for eksempel mengden trafikk nettstedet ditt mottok. Den 8. juni 1995 ble "Personal Home Page Tools" utgitt etter at Lerdorf kombinerte det med sin egen skjematolk for å lage PHP/FI.

To israelske Technion- programmerere, Zeev Suraski og Andi Gutmans , omskrev parseren i 1997 og skapte grunnlaget for PHP3, og ga nytt navn til språket PHP : Hypertext Preprocessor . [ 25 ] Offentlig testing av PHP3 begynte umiddelbart, og den ble offisielt utgitt i juni 1998. I 1999 omskrev Suraski og Gutmans PHP-koden, og produserte det som nå er kjent som Zend-motoren . De grunnla også Zend Technologies i Ramat Gan , Israel . [ 25 ]

I mai 2000 ble PHP 4 utgitt under kraften til Zend 1.0-motoren. Den 13. juli 2007 ble suspensjonen av støtte og utvikling av versjon 4 av PHP kunngjort, [ 26 ] og til tross for det som ble annonsert, har en ny versjon med sikkerhetsforbedringer, 4.4.8, blitt utgitt 13. januar 2008 , og senere versjon 4.4.9, utgitt 7. august 2008. [ 27 ] Ifølge denne nyheten ble [ 28 ] kritiske feil støttet frem til 9. august 2008.

13. juli 2004 ble PHP 5 utgitt ved bruk av Zend Engine 2.0 (eller Zend Engine 2). [ 25 ]​ Inkluderer alle fordelene som den nye Zend Engine 2 gir, for eksempel:

Utgivelseshistorikk

Betydning
rød Gammel versjon, ingen støtte
Gul Med støtte for sikkerhetsfeil
Grønn Med støtte for generelle feil og sikkerhetsfeil
Blå fremtidig utgivelse
Rosa avbrutt utgivelse
Versjon Utgivelsesdato slutt på støtte Karakterer
1.0 06-08-1995 Offisielt kalt "Personlige hjemmesideverktøy (PHP-verktøy)". Det er den første versjonen som bruker navnet "PHP". [ 29 ]
2.0 01-11-1997 Ansett av skaperne som det "raskeste og enkleste verktøyet" for å lage dynamiske nettsider. [ 29 ]
3.0 06-06-1998 20-10-2000 Zeev Suraski og Andi Gutmans omskrev basen for denne versjonen. [ 29 ]
4.0 22-05-2000 23-01-2001 Lagt til et to-trinns parsesystem kalt Zend-motoren. [ 30 ]
4.1 10-12-2001 03-12-2002 'Superglobals' ( $_GET, $_POST, $_SESSION, etc.) introduseres [ 30 ]
4.2 22-04-2002 06-09-2002 De er deaktivert register_globalssom standard. Data som mottas over nettverket settes ikke inn i det globale navneområdet, noe som lukker potensielle sikkerhetshull i applikasjoner. [ 30 ]
4.3 27-12-2002 31-03-2005 CLI er introdusert , og CGI . [ 30 ]​ [ 31 ]
4.4 07-11-2005 07-08-2008 Lagt til man-sider for phpizeog php-config. [ 30 ]
5.0 13-07-2004 05-09-2005 Zend II-motor med ny objektmodell. [ 32 ]
5.1 24-11-2005 24-08-2006 Ytelsesforbedringer med introduksjonen av kompilatorvariabler for den nye PHP-motoren. [ 32 ]
5.2 02-11-2006 06-01-2011 Standard filterutvidelsesaktivitet. Innebygd JSON- støtte . [ 32 ]
5.3 30-06-2009 14-08-2014 [ 33 ] Støtte for navnerom, statisk binding ved kjøretid, jump-tag ( begrenset GOTO ), Native stenginger , Native-støtte for PHP-filer (phar), søppelinnsamling for sirkulære referanser, forbedret støtte for Windows , sqlite3, mysqlnd som erstatning for libmysql som et bibliotek for utvidelser som fungerer med MySQL , filinfo som erstatning for mime_magic for bedre MIME -støtte , internasjonaliseringsutvidelse og utdatert ereg-tag.
5.4 03-01-2012 15-09-2015 Støtte for syntaks for trekk og stenografi array. Slettede elementer: register_globals, safe_mode, allow_call_time_pass_reference, session_register(), session_unregister()og session_is_registered(). Innebygd webserver. [ 34 ] Ulike forbedringer av eksisterende funksjoner og ytelse, og lavere minnekrav.
5.5 20-06-2013 20-06-2016 Nye generatorer for looper, empty()støtter uttrykk. Støtte for Windows XP og Windows Server 2003 er tapt. [ 35 ]
5.6 20-08-2014 31-12-2018 Konstanter med skalaruttrykk, argumentlister med variabel lengde og eksponentialer ved å bruke **-operatoren. [ 36 ]
6 Utviklingen av PHP 6 har blitt forsinket fordi utviklerne bestemte at den nåværende tilnærmingen til å håndtere Unicode-strenger ikke er korrekt, og vurderer alternative måter for neste versjon. [ 37 ] Forbedringene som var planlagt for PHP 6 ble lagt til i stedet i PHP 5.3.0 (Støtte for navnerom, statisk binding ved kjøretid, lambda-funksjoner, lukkinger, goto) og 5.4.0 (trekk, rebinding av lukking).

PHP versjon 6 ble forlatt med neste versjon 7. [ 38 ]

7.0 03-11-2015 [ 39 ] 03-12-2018 Ytelsesforbedringer, [ 40 ]​ erklæring om returtyper i funksjoner [ 41 ]
7.1 01-12-2016 [ 42 ]​ [ 43 ] 01-12-2019 //det er ikke forståelig Tom returtype, [ 44 ]​ Modifikatorer for konstant synlighet av klasse, [ 45 ]​ Nullbare typer, [ 46 ]​ Pseudo-type iterable, [ 47 ]​ Fang flere typer unntak. [ 48 ]
7.2 30-11-2017 30-11-2020 Ny "objekt" returtype, [ 49 ] integrasjon av Libsodium som en kjerneutvidelse [ 50 ]
7.3 6-12-2018 6-12-2021 Fleksibel syntaks for Nowdoc og Heredoc, støtte for referanser og array-dekonstruksjon med list(), PCRE2-støtte, hrtime()-funksjon
7.4 28-11-2019 28-11-2022
8.0 26.11.2020 26-11-2023
8.1 25-11-2021 25-11-2024

Syntaks

PHP-syntaks er basert på C-programmeringsprinsipper.

PHP-tolken kjører bare koden som er mellom skilletegnene. De vanligste skilletegnene er <?phpå åpne en PHP-seksjon og ?>lukke den. Hensikten med disse skilletegnene er å skille PHP-koden fra annen kode, for eksempel HTML. [ 51 ]​ I filer som bare inneholder PHP-kode, kan skilletegnet ?>utelates. Faktisk anbefaler PHP-FIG gjennom sine standardanbefalinger for PHP å utelate skilletegnet ?>, siden du på denne måten ikke sender HTML-innhold ved et uhell. For eksempel, hvis et "ikke-PHP"-tegn sendes (som ikke behandles av PHP-tolken), vil visse handlinger som å sende HTTP-hoder gjennom funksjonen ikke være mulig header(), siden svarprosessen allerede har startet.

Variabler er prefikset med dollartegnet ( $) og trenger ikke å angi typen. Variabler, i motsetning til funksjoner, skiller mellom store og små bokstaver. Tegnstrenger kan være innkapslet i både doble og enkle anførselstegn, men i tilfellet med førstnevnte kan variabler settes inn i strengen direkte, uten behov for sammenkobling.

Kommentarer kan skrives enten med to skråstreker (//) på begynnelsen av linjen, eller med et hash-tegn (#). Den tillater også kommentarer med flere linjer innkapslet i /* */.

Når det gjelder søkeordene, deler PHP med de fleste andre språk med C-syntaks betingelsene med if, løkkene med forog whileog avkastningen av funksjoner. Som vanlig i denne typen språk, må utsagnene avsluttes med semikolon ( ;).

Kodeeksempler i Basic PHP

Hello world - program med PHP innebygd i HTML -kode :

<!DOCTYPE html> < html lang = "en" dir = "ltr" > < head > < meta charset = "UTF-8" /> < meta name = "viewport" content = "width=device-width, initial-scale=1.0" /> < title > Grunnleggende PHP-eksempel </ title > </ hodet > < body > <?php echo 'Hello world';  ?> </ body > </ html >

Hello world - program med PHP i form av en monolitisk app:

<?php // Header, konstanter og inkluderer område (applikasjonsinitialisering) // Header kun for demo, ingen nødvendig header ( 'Content-Type: text/html; charset=UTF-8' ); $respons = '' ; // Applikasjonslogikk, som å få øktbruker, innhold osv. // Denne koden kan komme fra en ekstern mal for enkel gjenbruk $response .= '<!DOCTYPE html>' ; $answer .= '<html lang="no">' ; $answer .= '' ; $answer .= '<hode>' ; $answer .= ' <meta charset="UTF-8" />' ; $response .= ' <meta name="viewport" content="width=device-width, initial-scale=1.0" />' ; $response .= ' <title>Grunnleggende PHP-eksempel</title>' ; $answer .= '</head>' ; $answer .= '' ; $answer .= '<body>' ; $answer .= ' <h1>Hei verden!</h1>' ; $answer .= '</body>' ; $answer .= '' ; $answer .= '</html>' ; // Send svar echo $response ; // Legg merke til at <?php "taggen" ikke er lukket. PHP-FIG anbefaler denne praksisen i //-filer som kun inneholder PHP-kode for ikke å sende HTML-innhold ved et uhell.

Hello world - program med PHP som svarer i JSON-format:

<?php // Response_json.php-fil // Forteller nettleseren at svaret vil være JSON - header ( 'Content-Type: application/json; charset=UTF-8' ); $response = [ 'message' => 'Hei verden!' ]; echo json_encode ( $respons ); // Ikke lukk <?php "taggen" siden filen bare inneholder PHP-kode

Klientsiden som vil sende en forespørsel til PHP-filen:

<!DOCTYPE html> < html lang = "no" > < head > < meta charset = "UTF-8" /> < meta name = "viewport" content = "width=device-width, initial-scale=1.0" /> < title > Eksempelsvar i JSON-format fra PHP < / tittel > </ head > < body > < div > < h2 > Ren tekstsvar </ h2 > < pre >< code id = "flat-response" ></ code ></ pre > </ div > < div > < h2 > Behandlet svar ( JSON-svar "melding"-felt) </ h2 > < pre >< code id = "behandlet-svar" ></ kode ></ pre > </ div > < script > dokument . addEventListener ( 'DOMContentLoaded' , () => { const FlatResponseContainer = document . querySelector ( '#flat-response' ); const ProcessedResponseContainer = document . querySelector ( '#processed-response' ); // Gjør en asynkron forespørsel til php-hentefilen ( ' response_json.php' ) . then ( respons => respons . json ()) // Transformer responsen til et JSON-objekt . deretter ( responseJson => { // responseJson er et objekt av formen { melding: "Hello world!" } flatResponsecontainer . innerHTML = JSON . stringify ( jsonresponse ); containerProcessedResponse . innerHTML = responsJson . melding ; }); // håndtere feil med .catch() }); </ script > </ body > </ html >

Databaser (MySQL)

PHP kan kombineres med MySQL for å jobbe med databaser, selv om andre databasemotorer som Microsoft SQL Server , PostgreSQL , MongoDB , blant andre, også kan brukes.

Følgende eksempel viser en enkel brukernavn og passordpålogging ved å bruke MySQL og PHP med den objektorienterte stilen:

<?php // Tilkobling til den lokale databasen 'site'. Normalt vil dette komme fra en // ekstern tjeneste som gjenbrukes på hele nettstedet. $connection = ny PUD ( 'mysql:host=127.0.0.1;dbname=site' , 'root' , '' , [ // Kast et unntak hvis det oppstår en feil, så feilbehandleren vil ta nødvendige handlinger // som vist en 500-feil eller avslutt systemkjøring. Merk at // try-catch ikke brukes her for å delegere ansvar til feilbehandleren. PDO :: ATTR_ERRMODE => PDO :: ERRMODE_EXCEPTION , // Deaktiverer emulering av forberedte setninger (bare innfødte er safe) PUD :: ATTR_EMULATE_PREPARES => falsk , ]); // Dataene som sendes av skjemaet innhentes // For enkelhets skyld i demonstrasjonen, brukes koalesceringsoperatoren (??) $user_name = trim ( $_POST [ 'user_name' ] ?? '' ); // Fjern innledende og etterfølgende mellomrom $password = $_POST [ 'passord' ] ?? '' ; // Passordet blir stående som det er, uten trim() // Handler kun hvis skjemaet er sendt inn med data if ( isset ( $_POST [ 'send' ]) && ! empty ( $ brukernavn ) && ! empty ( $ passord )) { // Spørring for å finne brukeren i databasen data // Prepare-setninger brukes for å forhindre SQL-injeksjoner $ user_query = $connection -> prepare ( 'SELECT * FROM users WHERE username = ? LIMIT 1' ); $ user_query -> execute ([ $user_name ]); // Sjekk om en bruker er funnet if ( $ user_query -> rowCount () > 0 ) { // Hent brukerdataene $user_found = $ user_query -> hente ( PDO :: FETCH_ASSOC ); // Sjekk om passordet som sendes er riktig // Bruk sikre algoritmer som BCrypt eller Argon2i if ( password_verify ( $password , $user_found [ 'password' ])) { // Riktig legitimasjon, login } else { // Feil legitimasjon, vis feilmelding } } else { // Brukernavn eksisterer ikke, vis feilmelding // Merk at for sikkerhets skyld bør en generisk //-feil som "Bad Credentials" vises her og ovenfor , slik at en potensiell angriper // ikke vil vite om de har skrevet inn riktig brukernavn } } // Ikke lukk <?php "taggen" siden filen bare inneholder PHP-kode

Følgende eksempel gjør det samme som det forrige, men med forsikring om at uansett gjennomsnittstilstand for tjenesten, hvis det ikke er mulig å koble til, blir klassen ødelagt og trådene lukket.

viske ut viske ut

<?php //DB_access.class.php-fil klasse SessionInterface { public $connection ; offentlig $BD_ACCESS ; offentlig $HOST_ACCESS ; offentlig $USER_ACCESS ; offentlig $PWD_ACCESS ; offentlig $error ; offentlig funksjon __construct ( array $args ) { $out = '' ; prøv { if (( null !== $args [ 'BD_ACCESS' ]) && ( null !== $args [ 'HOST_ACCESS' ]) && ( null !== $args [ 'USER_ACCESS' ]) && ( null != = $args [ 'PWD_ACCESS' ])){ //Bygg klassen $this -> BD_ACCESS = $args [ 'BD_ACCESS' ]; $this -> HOST_ACCESS = $args [ 'BD_ACCESS' ]; $this -> USER_ACCESS = $args [ 'BD_ACCESS' ]; $this -> PWD_ACCESS = $args [ 'BD_ACCESS' ]; } else { throw new Exception ( 'Konstruksjonsfeil for datatilkoblingsgrensesnitt: Ikke alle argumenter oppgitt' , 400 ); } } catch ( Unntak $e ){ die ( '"{error":"' . $e -> getMessage . '}"' ); } til slutt { // Koble til MySQL-serveren og velg databasen med navnet 'login' $this -> connection = @ new mysqli ( $this -> HOST_ACCESS , $this -> USER_ACCESS , $this -> PWD_ACCESS , $ this -> BD_ACCESS ); } prøv { if ( ! $this -> connection ){ throw new Exception ( 'Databasetilkoblingsfeil: argumentene som er angitt er ikke tilstrekkelige til å opprette en tilkobling' , 410 ); } } catch ( Unntak $e ){ die ( '"{error":"' . $e -> getMessage . '}"' ); } finally { $output = '{"Ok":"Forbindelsen er opprettet"}' ; } $this -> error = $utgang ; } offentlig funksjon SQLQuery ( streng $queSQLquery ) : streng { $out = '' ; // Spørring for å søke etter brukere i databasen $ query_user = $this -> tilkobling -> spørring ( $queSQLquery ); // Bekreft at en bruker er funnet hvis ( $ user_query -> num_rows > 0 ) { // Få brukerdataene som en assosiativ matrise $user_found = $ query_user -> fetch_assoc (); // Sjekk om passordet som brukes er det samme som det i databasen if ( $password === $user_found [ 'password' ]) { // Success text $out = '{"Ok":"Du har logget på"}' ; } annet { // Error text $output = '{"error":"Passordet som ble brukt er ikke riktig"}' ; } } annet { // Error text $output = '{"error":"Den angitte brukeren eksisterer ikke"}' ; } // Lukk tilkoblingen $this -> tilkobling -> lukk (); returnere $output ; } } ?> <?php //Header file.h.php //Vis bare fatale, parse- og advarselsfeil for eksempelet error_reporting ( E_ERROR | E_PARSE | E_WARNING ); //Inkludering av klasser for administrasjonsinstanser $seHaInstitución = include_once ( BD_access . class .php ) ; if ( $seHasIncluded ){ // Sjekk at skjemaet ble sendt ved hjelp av send-knappen if ( isset ( $_POST [ 'send' ])) { //Initialisering av variabler $user = '' ; $password = '' ; // Få data sendt med POST-metoden og fjern innledende og etterfølgende mellomrom $user = trim ( $_POST [ 'bruker' ]); $password = sha1 ( trim ( $_POST [ 'passord' ])); //Sjekk at variablene ikke er tomme hvis ( ! tomme ( $brukernavn ) && ! tomme ( $password )){ $args = array ( 'BD_ACCESS' => 'brukere' , 'HOST_ACCESS' => 'localhost' , 'USER_ACCESS ' => 'root' , 'PWD_ACCESS' => 'sin_password' ){ //Objektene assosiert med de tilsvarende klassene er instansiert $misAccesos = new sessionInterface ( $args ); $ConnStatus = JSON . dekode ( $myAccesses -> feil ); if ( isset ( $ConnStatus [ 'Ok' ])){ $QueryStatus = $myAccesses -> SQLQuery ( "SELECT * FROM users WHERE user = ' $user ' LIMIT 1" ); echo '{"output":"' . $queryStatus . '"}' ; } else if ( isset ( $ConnStatus [ 'error' ])){ echo '{"error":"' . $QueryStatus . '"}' ; } } else { echo '{"error":"skjemafelt med ukjente data"}' ; } } annet { echo '{"error":"tilgangsforsøk ikke tillatt"}' ; } } ?>

Som en REST-tjeneste

REST-tjenester er basert på tre grunnleggende konsepter:

ressurskonsept roaming-konsept API-konsept

PHP-funksjoner

Funksjoner

  • Orientert mot utvikling av dynamiske webapplikasjoner med tilgang til informasjon lagret i en database .
  • Det regnes som et enkelt språk å lære, siden forskjellige spesifikasjoner ble forenklet i utviklingen, som er tilfellet med definisjonen av primitive variabler, et eksempel som blir tydelig i bruken av php-matriser .
  • Kildekoden skrevet i PHP er usynlig for nettleseren og klienten, siden det er serveren som har ansvaret for å utføre koden og sende HTML-resultatet til nettleseren.
  • Evne til å koble til de fleste databasemotorene som brukes for øyeblikket, tilkoblingen med MySQL og PostgreSQL skiller seg ut .
  • Evne til å utvide potensialet ved hjelp av moduler (kalt utvidelser).
  • Den har omfattende dokumentasjon på sin offisielle nettside, blant annet skiller det seg ut at alle systemfunksjonene er forklart og eksemplifisert i en enkelt hjelpefil.
  • Det er gratis , så det presenteres som et lett tilgjengelig alternativ for alle.
  • Den tillater bruk av objektorienterte programmeringsteknikker .
  • Det krever ikke definisjon av variabeltyper, selv om variablene også kan evalueres etter typen de håndterer under kjøring .
  • Har unntakshåndtering (siden PHP5).
  • Selv om PHP ikke forplikter de som bruker det til å følge en viss metodikk når de programmerer, selv om han gjør det, kan programmereren bruke hvilken som helst programmerings- eller utviklingsteknikk på arbeidet sitt som lar ham skrive ordnet, strukturert og håndterbar kode. Et eksempel på dette er utviklingen som er gjort i PHP av Model View Controller (MVC) designmønsteret , som gjør at behandlingen og tilgangen til data, kontrolllogikken og brukergrensesnittet kan deles i tre uavhengige komponenter.
  • På grunn av sin fleksibilitet har det blitt veldig godt mottatt som et basisspråk for innholdshåndtering WEB-applikasjoner, og det er hovedbruken.

Ulemper

  • Siden det er et språk som tolkes i utførelse, kan det for visse bruksområder være en ulempe at kildekoden ikke kan skjules. Tilsløring er en teknikk som kan gjøre kode vanskelig å lese, men som ikke nødvendigvis hindrer kode i å bli undersøkt.
  • Fordi det er et tolket språk, kjører et PHP-skript vanligvis betydelig saktere enn det tilsvarende på et lavnivåspråk, men denne ulempen kan minimeres med både fil- og minnebufringsteknikker .
  • I versjoner før 7 skrives ikke variabler, noe som gjør det vanskelig for forskjellige IDE-er å tilby kodeskrivingshjelp, selv om dette egentlig ikke er et problem med selve språket. Dette løses av noen IDEer ved å legge til en typekommentar til variabeldeklarasjonen.

XAMPP, LAMP, WAMP, MAMP, UwAmp

XAMPP er en plattformuavhengig, gratis programvareserver, som hovedsakelig består av MySQL-databasen, Apache -webserveren og tolker for skriptspråk: PHP og Perl. Navnet kommer fra akronymet for X (for alle de forskjellige operativsystemene), Apache, MySQL, PHP, Perl. Programmet er utgitt under GNU-lisensen og fungerer som en gratis webserver, enkel å bruke og i stand til å tolke dynamiske sider. XAMPP er for øyeblikket tilgjengelig for Microsoft Windows, GNU/Linux, Solaris og MacOS X.

Det er en "lett" programvare som kan brukes på hvilken som helst PC. Du trenger ikke mye ressurser.

LAMP har funksjonalitet som ligner på XAMPP, men med fokus på Linux gjør WAMP det med fokus på Windows, og MAMP for MacOS X. UwAmp er veldig identisk med WAMP og skiller seg ut ved at den kan kjøres fra en USB-pinne.

Hovednettsteder utviklet med PHP

PHP brukes på millioner av nettsteder; blant de mest fremtredende er:

Se også

Notater

  1. Et begrep dannet fra startbokstaven til ett eller flere ord eller deler av ord, men uttalt bokstav for bokstav, i motsetning til et akronym. [ 5 ]

Referanser

  1. https://www.php.net/archive/2022.php#2022-06-09-21
  2. ^ "PHP: Hypertekstforbehandler" . www.php.net . Hentet 4. juni 2020 . 
  3. "PHP: History of PHP - Manual" . www.php.net . Hentet 4. juni 2020 . 
  4. "PHP: Historien om PHP og relaterte prosjekter - Manual" . www.php.net . Hentet 4. juni 2020 . 
  5. ^ "initialisme" . Hentet 3. juni 2020 . 
  6. ^ "PHP: Forord - Manual" . www.php.net . Hentet 4. juni 2020 . 
  7. «PHP: Hva kan PHP gjøre? - Håndbok» . www.php.net . Hentet 4. juni 2020 . 
  8. jolicode/php-ar-drone , JoliCode, 21. mai 2020 , hentet 4. juni 2020  .
  9. Jackson, Joab (31. juli 2014). "PHP får endelig en formell spesifikasjon" . ITworld (på engelsk) . Hentet 4. juni 2020 . 
  10. ^ a b "PHP: Støttede versjoner" . www.php.net . Hentet 4. juni 2020 . "Slutt på livet: En utgivelse som ikke lenger støttes. Brukere av denne versjonen bør oppgradere så snart som mulig, ettersom de kan bli utsatt for sikkerhetssårbarheter uten oppdatering." 
  11. "Bruksstatistikk og markedsandel av PHP for nettsteder, juni 2020" . w3techs.com . Hentet 4. juni 2020 . 
  12. ^ "PHP: Ustøttede grener" . www.php.net . Hentet 4. juni 2020 . 
  13. "LTS/Jessie - Debian Wiki" . wiki.debian.org . Hentet 4. juni 2020 . 
  14. [" https://wiki.php.net/rfc/object-typehint " « " PHP 7 introduserte skalartyper for parametere og også for å deklarere returtyper for funksjoner. " » ] . " https://wiki.php.net/rfc/object-typehint#introduction " . Hentet 7. juli 2019 . 
  15. ^ "NaCl: Nettverks- og kryptografibibliotek " . https://www.php.net/manual/en/book.sodium.php . Hentet 7. juli 2019 . 
  16. "NaCl-bibliotek for kryptering, dekryptering, signaturer, passordhashing og mer. url= https://download.libsodium.org/doc/» (på engelsk) . https://download.libsodium.org/doc/#offline-documentation . 
  17. ^ "Sodium er et moderne, brukervennlig programvarebibliotek." . https://www.php.net/docs.php . Hentet 7. juli 2019 . 
  18. «nye generasjoner» (på engelsk) . www.google.com . Hentet 8. februar 2018 . 
  19. ^ "Historiske trender i bruken av programmeringsspråk på serversiden for nettsteder " . W3Techs . Hentet 10. september 2013 . 
  20. "PHP-GTK" (på engelsk) . PHPGroup . Hentet 10. september 2013 . 
  21. ^ "PHP: Kommandolinjeoperasjon" . PHPGroup . Hentet 10. september 2013 . 
  22. ^ "dompdf - HTML til PDF-konverterer (PHP5) " . Hentet 10. september 2013 . 
  23. "PHP: Databaseutvidelser - Manual" . PHPGroup . Hentet 10. september 2013 . 
  24. Det er både PHPEclipse og PDT for Eclipse . Se http://www.phpeclipse.com Arkivert 2009-03-18 på Wayback Machine . og http://www.eclipse.org/pdt
  25. a b c Siter feil: Ugyldig tag <ref>; innholdet i de kalte referansene er ikke definerthistoria
  26. PHP: News Archives 2007 (på engelsk). Hentet 9. desember 2007.
  27. PHP: News Archives 2008 (på engelsk).
  28. Arkiv: 13. juli 2007 PHP.net.
  29. abc " Historie om PHP og relaterte prosjekter" . PHP-gruppen . Hentet 25. februar 2008 . 
  30. abcde " PHP : PHP 4 ChangeLog " . PHPGroup. 3. januar 2008 . Hentet 22. februar 2008 . 
  31. "PHP: Bruker PHP fra kommandolinjen - Manual:" . PHP-gruppen . Hentet 11. september 2009 . 
  32. abc " PHP : PHP 5 ChangeLog " . PHPGroup. 8. november 2007 . Hentet 22. februar 2008 . 
  33. "Siste 5.3-utgivelse noensinne tilgjengelig: PHP 5.3.29 - 5.3 nå EOL" . PHP . Hentet 20. september 2013 . 
  34. ^ "Innebygd webserver" . Hentet 2012-03-26 . 
  35. "Hva har endret seg i PHP 5.5.x" . Hentet 13. april 2013 . 
  36. "Migrere fra PHP 5.5.x til PHP 5.6.x" . Arkivert fra originalen 25. april 2015 . Hentet 20. september 2014 . 
  37. "PHP 6: Funksjoner, utgivelsesdato, hosting og nedlasting" . Hentet 6. mai 2011 . 
  38. "Navn på neste versjon av PHP" . Hentet 24. juli 2014 . 
  39. ^ "RFC: PHP 7.0 Tidslinje" . 4. november 2015 . Hentet 4. november 2015 . 
  40. "PHPNG Benchmarking!" . 
  41. "PHP RFC: Returtypeerklæringer" . 
  42. ^ "Forberedelsesoppgaver" . Hentet 5. juli 2016 . 
  43. ^ "PHP 7.1.0 GA - Eksternt" . eksternt.io . Hentet 30. november 2016 . 
  44. "PHP: rfc:void_return_type" . php.net . 9. november 2015 . Hentet 14. november 2015 . 
  45. "PHP: rfc:class_constant_visibility" . php.net . 27. oktober 2015 . Hentet 8. desember 2015 . 
  46. ^ "PHP RFC: Nullbare typer" . php.net . 10. april 2014 . Hentet 14. juni 2016 . 
  47. ^ "PHP RFC: Iterable" . php.net . 10. juni 2016 . Hentet 19. februar 2017 . 
  48. "PHP RFC: Fanger flere unntakstyper" . php.net . 6. mars 2016 . Hentet 19. februar 2017 . 
  49. "PHP: rfc:object-typehint" . wiki.php.net . Hentet 20. desember 2017 . 
  50. ^ "PHP: rfc:libsodium" . wiki.php.net . Hentet 20. desember 2017 . 
  51. "PHP: Grunnleggende syntaks" . Hentet 13. april 2013 . 

Eksterne lenker