Meny
Är gratis
registrering
Hem  /  Utbildning/ Tanklöshet. $ _SERVER - Server- och körtidsinformation Tankelös användarinformation php

Tanklöshet. $ _SERVER - Server- och körtidsinformation Tankelös användarinformation php

Tanklöshet - det är när passionen inte är upp till tankarna.

Roliga ordspråk

Tanklöshet som ett personlighetsdrag - tendensen att inte tänka ut konsekvenserna av sina handlingar; bete sig otillräckligt medvetet, dumt, meningslöst; oförmåga att tänka djupt och grundligt, att förstå något korrekt.

Under en hård vinter fick familjen slut på ved. Fadern gick ut till utkanten, hittade ett dött träd och högg ner det. I våras såg han att skott höll på att ta sig från en stubbe som han hade huggit ner. - Jag var säker, - sa fadern, - att det här trädet är dött. Det var så kallt då att frosten fick dess grenar att spricka, gå sönder och falla till marken, som om det inte ens fanns en droppe liv kvar i dess rötter. Nu ser jag att livet fortfarande glödde i den här stammen.

Och vände sig till sin son och sa: - Kom ihåg den här lektionen. Hugga aldrig ett träd på vintern. Ta aldrig beslut av eftertanke, vid fel tidpunkt eller när du är i ett dåligt sinnestillstånd. Vänta. Ha tålamod, de dåliga tiderna går över. Kom ihåg att våren kommer tillbaka.

Tanklösheten är dumhetens och dumhetens dotter. Det är frånvaron av någon närvaro av förnuft. Tanklöshet talar om ouppmärksamhet och respektlöshet mot människor. Den vi älskar och respekterar, det bryr vi oss om, vi oroar oss och oroar oss, därför antar vi alla nyanser, alla små saker som kan skada honom eller hindra honom från att leva. Som vi inte respekterar och värdesätter visar vi också tanklöshet.

Tanklöshet är en allierad av idioti, dumhet, dumhet och sinneslöshet.

Killen, lekande nyfiken, frågar den vackra flygvärdinnan: - Tjej, vad betyder TU-154-2B? – Kan du inte tänka på det själv? Jo, TU menar att flygplanet tillverkades av designern Tupolev, 150 är antalet platser i kabinen och 4 är hur många besättningsmedlemmar. - Och 2B? – Jo, du kan se tanklösheten i din hobby! Det här är jag och Marinka.

Tanklöshet är när en person lever utan att förstå att han måste stå till svars för varje handling. Det faller honom inte in att konsekvenserna av hans handlingar, som en bumerang, kommer att återvända till honom enligt karmalagen. Både bra och dåliga kommer definitivt tillbaka igen.

Tanklöshet är ett beprövat sätt att störa din omgivning.

V. Shlakhter säger att vi väldigt ofta uppfattar tanklöshet som dumhet. Eller till och med för bestialitet. Till exempel körde föraren in i en trafikerad korsning. Han spärrade av trafiken för alla som står på sidovägen och väntar på grönt trafikljus. Men av detta gjorde han, troligen, inte av ilska, och inte för att han är en dum elak rå. Han störde helt enkelt inte sitt stackars lilla huvud att tänka ut konsekvenserna. Nu tutar alla honom (oftare till henne!), Kallar dem de mest föga smickrande epitet från informella ordförråd.

– Lämna mycket vatten till katten, jag kommer inte vara där på tre dagar, – säger mamma. Och min son tar med katten ett paket med en och en halv liters plastflaskor. Drick, katt! Att katten inte kan öppna flaskan och dricka ur den faller inte ens sonen in. De bad om mer vatten - han tog med mer, vad är problemen? Han gjorde det inte av dumhet. Och inte av hat mot den olyckliga katten. Av tanklöshet!

Tanklöshet kommer att tänka på mycket tidigare än förstånd. Det åtföljs alltid av förhastade domar.

Läraren varnade alltid sina elever för tanklöshet, det vill säga mot förhastade bedömningar om människor och ännu mer för tanklösa råd. Han sa detta: - Tills du känner i ditt hjärta och sinne att du har trängt in i själva kärnan av problemet och minsta tvivel om att du gör rätt kommer inte att lämna dig, låt din bästa handling vara passivitet, och den mest säkra ord - tystnad ... Annars kommer ditt råd att tvinga människor att upprepa ödet för en bonde som lider av tanklöshet.

Vad hände med honom? – frågade eleverna. – Hans hus, som stod på en plattform, blåstes av hårda vindar från alla håll. Bonden trodde, av tanklöshet, naivt att vinden dyker upp eftersom de höga träden som omger huset svajar från sida till sida. En dag blev han arg och högg ner alla träd. Som ett resultat blev huset, efter att ha förlorat sitt sista skydd, ännu kallare och mer blåsigt.

Tanklöshet är ett gissel för människor som bara tänker på sina egna intressen.

Fänriken frågar soldaten: - Vad ska göras vid utbrott av en kärnvapenexplosion? – Ligg med fötterna mot blixten och täck dig med händerna – svarar han. - Inte rätt. Du måste sträcka armarna framåt med en maskingevär så att den smälta metallen inte droppar på de officiella stövlarna.

Tanklöshet driver en person in i en miljö av osäkerhet. När en person inte kan gissa vad som kommer att hända om några minuter, betyder det att han lever i ett tillstånd av fullständig osäkerhet.

Maken kom tillbaka från en affärsresa. Ingen är hemma. Jag bestämde mig för att gömma mig för att överraska min fru. Plötsligt ser han sin fru gå in i lägenheten med någon man. De går in i sovrummet. Dörren stängs, maken är mer benägen att gå till nyckelhålet. Och han ser sin hustru kyssa den här mannen, han tar av sig alla hennes kläder, de rusar båda till sängen, han tar av sig sina kläder och kastar sina trosor mot ytterdörren, där mannen gömmer sig, och de hänger på hantera, stäng nyckeln för maken väl och hela översikten. Och så tänker maken irriterat: – Jaha, jag slösade bort en dag, återigen fullständig ovisshet!

Petr Kovalev

Innehåll

$ user_info

Dessa är alla nycklar som definierats för $ user_info i loadUserSettings (). Vissa är självförklarande, helt klart.

grupper

array. Alla möjliga medlemsgrupper kopplade till en användare. Nycklar spelar ingen roll. Värden är grupperna, sanerade som int, för säkerhets skull. Detta inkluderar:

  • Primär grupp
  • Inläggsräkningsgrupp
  • Ytterligare grupper. Dessa lagras i databasen som en kommaavgränsad sträng.

possibly_robot

bool. Är sant om agenten matchar en känd spindel om funktionen är aktiverad, och om den är inaktiverad, gör en välgrundad gissning.

id

int Motsvarar medlemmens databasvärde (! LANG: id_member".!}

Användarnamn

namn

sträng. Deras visade namn.

e-post

passwd

språk

är_gäst

is_admin

tema

senaste inloggning

int. Unix tidsstämpel.

ip

$ _SERVER ["REMOTE_ADDR"]

ip2

$ _SERVER ["BAN_CHECK_IP"]

inlägg

int. Antal inlägg.

tidsformat

sträng. Anpassat format för strtftime ().

tidsförskjutning

int. Användarens timförskjutning från forumets tid.

avatar

  • url: sträng
  • filnamn: sträng
  • custom_dir: bool
  • id_attach: int

smiley_set

meddelanden

int. Antalet PM de har.

Olästa meddelanden

int. Antal olästa PM de har.

total_time_logged_in

kompisar

Sträng. Listan över deras kompisar avgränsad med kommatecken.

ignoreringstavlor

Sträng. Listan över anslagstavlor de har ignorerat avgränsad med kommatecken.

ignorera användare

Sträng. Listan över användare som de har valt att ignorera avgränsad med kommatecken.

  • I SMF 1.1.x ignoreras endast PM.
  • I SMF 2.0.x och framåt har den här funktionen förbättrats för att även dölja inläggen från den ignorerade användaren.

varning

int. Deras varningspunkter.

behörigheter

query_see_board

Listan över alla kort som de kan se som en del av en förberedd SQL-sats.

query_wanna_see_board

Listan över kort som de VILL se som en del av en förberedd SQL-sats.

mod_cache

is_mod

Boolean. Är falsk utom i styrelser där medlemmen är moderator. Den är alltid inställd.

I den andra lektionen kommer vi att skriva ytterligare två klasser och avsluta den inre delen av manuset helt.

Planen

Målet med denna handledningsserie är att skapa en enkel applikation som låter användare registrera sig, logga in, logga ut och ändra inställningar. Klassen som kommer att innehålla all information om användaren kommer att kallas User och den kommer att definieras i User.class.php-filen. Klassen som kommer att ansvara för att gå in/ut kommer att kallas UserTools (UserTools.class.php).

Lite om klassnamn

Det är god praxis att namnge filerna med klassdefinitionerna samma namn som själva klassen. Detta gör det enkelt att avgöra syftet med varje fil i klassmappen.

Det är också vanligt att lägga till .class eller .inc i slutet av klassens filnamn. Därför definierar vi tydligt syftet med filen och kan använda .htaccess för att begränsa åtkomsten till dessa filer.

Användarklass (User.class.php)

Denna klass kommer att definiera varje användare. Med tillväxt av denna ansökan definitionen av "användare" kan ändras avsevärt. Lyckligtvis gör OOP-programmering det enkelt att lägga till ytterligare användarattribut.

Konstruktör

I den här klassen kommer vi att använda en konstruktor - detta är en funktion som automatiskt anropas när en annan kopia av klassen skapas. Detta gör att vi automatiskt kan publicera några av attributen efter att projektet har skapats. I den här klassen kommer konstruktorn att ta ett enda argument: associativ array som innehåller en rad från användartabellen i vår databas.

require_once "DB.class.php"; klass Användare (offentligt $ id; offentligt $ användarnamn; offentligt $ hashedPassword; offentlig $ e-post;
public $ joinDate;
//Konstruktorn anropas när ett nytt objekt skapas// Tar en associativ array med DB-raden som ett argument. funktion __construct ($ data) ($ this-> id = (isset ($ data ["id"]))? $ data ["id"]: ""; $ this-> username = (isset ($ data [" användarnamn "]))? $ data [" användarnamn "]:" "; $ this-> hashedPassword = (isset ($ data [" lösenord "]))? $ data [" lösenord "]:" "; $ detta- > email = (isset ($ data ["email"]))? $ data ["email"]: ""; $ this-> joinDate = (isset ($ data ["join_date"))? $ data [" join_date "]:" ";)
public function save ($ isNewUser = false) (// skapa ett nytt databasobjekt. $ db = new DB (); // om användaren redan är registrerad och vi "re // bara uppdaterar sin information. if (! $ isNewUser) ) (// ställ in datamatrisen $ data = matris ("användarnamn" => "" $ detta-> användarnamn "", "lösenord" => "" $ detta-> hashedPassword "",
"email" => "" $ detta-> e-post "");
// uppdatera raden i databasen $ db-> update ($ data, "users", "id =". $ this-> id); ) else (// om användaren registreras för första gången. $ data = array ("användarnamn" => "" $ detta-> användarnamn "", "lösenord" => "" $ detta-> hashedPassword "" , "email" => "" $ this-> email "", "join_date" => "" ".date (" Ymd H: i: s ", tid ())." ""); $ this-> id = $ db-> infoga ($ data, "användare"); $ detta-> joinDate = tid ();) return true; ))?>

Förklaring

Den första delen av koden, utanför klasszonen, tillhandahåller anslutningen av klassen till databasen (eftersom det finns en funktion i klassen User som kräver denna klass).

Istället för klassvariabler "skyddade" (används i lektion 1) definierar vi dem som "offentliga". Detta innebär att vilken kod som helst utanför klassen har tillgång till dessa variabler när man arbetar med User-objektet.

Konstruktorn tar en array där kolumnerna i tabellen är nycklar. Vi ställer in klassvariabeln med $ this-> variabelnamn. I exemplet med denna klass kontrollerar vi först om värdet av en specifik nyckel finns. Om så är fallet sätter vi klassvariabeln till det värdet. Annars är det en tom sträng. Koden använder en kort form av notation för if-omsättningen:

$ värde = (3 == 4)? "A": "B";

I det här exemplet kontrollerar vi om 3 är lika med fyra! Om ja - då $ värde = "A", nej - $ värde = "B". I vårt exempel är resultatet $ värde = "B".

Vi sparar information om användare i databasen

Spara-funktionen används för att göra ändringar i databastabellen med de aktuella värdena i User-objektet. Den här funktionen använder DB-klassen vi skapade i den första handledningen. Med hjälp av klassvariabler sätts $-datamatrisen. Om användardata sparas för första gången skickas $ isNewUser som $ true (standard är false). Om $ isNewUser = $ true anropas funktionen infoga () för DB-klassen. Annars anropas uppdateringen ()-funktionen. I båda fallen kommer information från användarobjektet att sparas i databasen.

UserTools.class.php klass

Den här klassen kommer att innehålla funktioner som är relevanta för användare: logga in (), logga ut (), checkUsernameExists () och get (). Men med utbyggnaden av denna applikation kan du lägga till många fler.

//UserTools.class.php require_once "User.class.php"; require_once "DB.class.php";
klass Användarverktyg (
// Logga in användaren. Kontrollerar först om // användarnamnet och lösenordet matchar en rad i databasen. // Om det lyckas, ställ in sessionsvariablerna // och lagra användarobjektet inom.
offentlig funktionsinloggning ($ användarnamn, $ lösenord)
{
$ hashedPassword = md5 ($ lösenord); $ result = mysql_query ("SELECT * FROM users WHERE username =" $ användarnamn "OCH lösenord =" $ hashedPassword ""); if (mysql_num_rows ($ resultat) == 1) ($ _SESSION ["user"] = serialisera (ny användare (mysql_fetch_assoc ($ resultat))); $ _SESSION ["login_time"] = tid (); $ _SESSION ["logged_in" "] = 1; return true;) else (retur false;))
// Logga ut användaren. Förstör sessionsvariablerna. offentlig funktion utloggning () (unset ($ _ SESSION ["användare"]); unset ($ _ SESSION ["inloggningstid"]); unset ($ _ SESSION ["loggad_in"]); session_destroy ();) // Kontrollera för att se om det finns ett användarnamn. // Detta anropas under registreringen för att säkerställa att alla användarnamn är unika. offentlig funktion checkUsernameExists ($ användarnamn) ($ resultat = mysql_query ("välj id från användare där användarnamn =" $ användarnamn ""); if (mysql_num_rows ($ resultat) == 0) (retur false;) else (retur true;)
}
// få en användare // returnerar ett användarobjekt. Tar användar-id som en offentlig ingångsfunktion get ($ id) ($ db = ny DB (); $ resultat = $ db-> välj ("användare", "id = $ id"); returnera ny användare ($ resultat ;)))
?>

Logga in () funktion

Inloggningsfunktionen () är självförklarande. Den tar användarens $ användarnamn och $ lösenordsargument och kontrollerar om de matchar. Om allt stämmer, skapar ett användarobjekt med all information och lagrar det i sessionen. Observera att vi endast använder PHP:s serialize () funktion. Det skapar en sparad version av objektet som du enkelt kan ångra med hjälp av unserialize (). Dessutom kommer inloggningstiden att sparas. Detta kan användas i framtiden för att ge användarna information om varaktigheten av deras vistelse på webbplatsen.

Du kanske också märker att vi sätter $ _SESSION ["logged_in"] till 1. Detta gör att vi enkelt kan kontrollera om användaren är inloggad på varje sida. Det räcker att bara kontrollera denna variabel.

Logga ut () funktion

Också en enkel funktion. PHP:s unset-funktion () rensar variabler i minnet, medan session_destroy () tar bort sessionen.

CheckUsernameExists () Funktion

Alla som kan engelska förstår lätt funktionen. Den frågar helt enkelt databasen om en liknande inloggning används eller inte.

Få () funktion

Denna funktion tar ett unikt användar-ID och gör en fråga till databasen med hjälp av DB-klassen, nämligen funktionen select (). Det kommer att ta en associativ array med ett antal användarinformation och skapa ett nytt användarobjekt som skickar arrayen till konstruktorn.

Var kan du använda den? Om du till exempel skapar en sida som ska visa specifika användarprofiler måste du dynamiskt ta tag i denna information. Så här kan du göra det: (låt oss säga url http://www.website.com/profile.php?userID=3)

// notera: du måste först öppna en databasanslutning. // se del 1 för ytterligare information om hur du gör det. // Du "måste också se till att du" har inkluderat klassfilerna.
$ tools = nya användarverktyg (); $ användare = $ verktyg-> get ($ _ REQUEST ["användar-ID"]); echo "Användarnamn:". $ user-> användarnamn. ""; echo "Joined On:". $ user-> joinDate. "";

Lätt! Sanning?

Efterbehandling på serversidan: global.inc.php

global.inc.php krävs för varje sida på webbplatsen. Varför? På så sätt kommer vi att placera alla vanliga operationer som vi behöver på sidan. Till exempel startar vi session_start (). DB-anslutningen öppnas också.

require_once "classes / UserTools.class.php";
require_once "classes / DB.class.php";
// ansluta till databasen $ db = new DB (); $ db-> ansluta ();
// initiera UserTools-objekt $ userTools = nya UserTools (); // starta sessionen
session_start ();
// uppdatera sessionsvariabler om inloggad if (isset ($ _ SESSION ["logged_in"])) ($ user = unserialize ($ _ SESSION ["user"]); $ _SESSION ["user"] = serialisera ($ userTools -> få ($ användar-> id));)?>

Vad gör han?

Det är flera saker på gång här. Först och främst öppnar vi en anslutning till basen.

Efter anslutning startar vi session_start ()-funktionen. Funktionen skapar en session eller fortsätter den nuvarande om användaren redan är inloggad. Eftersom vår applikation är designad för användare att logga in/ut, krävs denna funktion på varje sida.

Därefter kontrollerar vi om användaren är inloggad. Om så är fallet kommer vi att uppdatera $ _SESSION ["användare"] för att visa den senaste användarinformationen. Till exempel, om en användare ändrar sin e-post, kommer den gamla att lagras i sessionen. Men detta kommer inte att hända med automatisk uppdatering.

Detta avslutar den andra delen! Räkna med en sista lektion om detta ämne imorgon.

Med vänliga hälsningar!

$ HTTP_SERVER_VARS [borttagen]

(PHP 4> = 4.1.0, PHP 5, PHP 7)

$ _SERVER - $ HTTP_SERVER_VARS [borttagen]Server och Runtime Information

Beskrivning

Variabeln $ _SERVER är en array som innehåller information som rubriker, sökvägar och skriptplatser. Posterna i denna array genereras av webbservern. Det finns ingen garanti för att varje webbserver kommer att tillhandahålla något av dessa; servern kan utelämna några eller tillhandahålla andra som inte är listade här. Men många av dessa variabler finns i »CGI / 1.1-specifikationen, så du kan förvänta dig att de ska implementeras i en viss webbserver.

Variabeln $ HTTP_SERVER_VARS innehåller samma initiala information, men den är inte superglobal. (Observera att $ HTTP_SERVER_VARS och $ _SERVER är olika variabler, så PHP hanterar dem därefter). Observera också att "långa arrayer" togs bort i PHP 5.4.0, så $ HTTP_SERVER_VARS existerar inte längre.

Index

Du kanske inte hittar någon av följande objekt i $ _SERVER-arrayen. Observera att få, om några, objekt kommer att vara tillgängliga (eller faktiskt meningsfulla) när PHP körs på kommandoraden.

"PHP_SELF" Namnet på skriptfilen som för närvarande körs, i förhållande till dokumentroten. Till exempel, $ _SERVER ["PHP_SELF"] i skriptet på http://example.com/foo/bar.php kommer att vara /foo/bar.php. Konstanten __FILE__ innehåller hela sökvägen och filnamnet för den aktuella (det vill säga anslutna) filen. Om PHP körs på kommandoraden innehåller denna variabel namnet på skriptet sedan PHP 4.3.0. Den var tidigare otillgänglig."argv" En rad argument skickades till skriptet. När skriptet körs på kommandoraden ger det C-liknande åtkomst till kommandoradsparametrarna. När den anropas via GET-metoden kommer denna array att innehålla frågesträngen."argc" Innehåller antalet parametrar som skickas till skriptet (om det startas på kommandoraden)."GATEWAY_INTERFACE" Innehåller versionen av CGI-specifikationen som används av servern; till exempel" CGI / 1.1". "SERVER_ADDR" IP-adressen till servern där det aktuella skriptet körs."SERVER NAMN" Värdnamnet som det aktuella skriptet körs på. Om skriptet körs på en virtuell värd kommer detta att innehålla namnet som definierats för den virtuella värden."SERVER_SOFTWARE" Serveridentifieringssträngen som anges i rubrikerna när begäran besvaras."SERVER_PROTOCOL" Namnet och versionen av informationsprotokollet genom vilket sidan begärdes; till exempel " HTTP / 1.0"; "REQUEST_METHOD" Vilken metod användes för att begära sidan; till exempel " SKAFFA SIG", "HUVUD", "POSTA", "SÄTTA".

Kommentar:

PHP-skriptet slutar efter att ha skickat rubriker (det vill säga efter att ha gjort någon utdata utan att buffra utdata), om begäran gjordes av metoden HUVUD.

"REQUEST_TIME" Tidsstämpel för början av begäran. Tillgänglig sedan PHP 5.1.0."REQUEST_TIME_FLOAT" Tidsstämpel för början av begäran, med mikrosekundsprecision. Tillgänglig sedan PHP 5.4.0."FRÅGESTRÄNG" Frågesträngen, om någon, med vilken sidan hämtades."DOCUMENT_ROOT" Dokumentets rotkatalog där det aktuella skriptet körs är exakt den som anges i serverkonfigurationsfilen."HTTP_ACCEPT" Rubrikinnehåll Acceptera: från den aktuella begäran, om någon."HTTP_ACCEPT_CHARSET" Rubrikinnehåll Acceptera-teckenuppsättning: från den aktuella begäran, om någon. Till exempel: " iso-8859-1, *, utf-8". "HTTP_ACCEPT_ENCODING" Rubrikinnehåll Acceptera-kodning: gzip". "HTTP_ACCEPT_LANGUAGE" Rubrikinnehåll Acceptera-språk: från den aktuella begäran, om någon. Till exempel: " ru". "HTTP_CONNECTION" Rubrikinnehåll Förbindelse: från den aktuella begäran, om någon. Till exempel: " Håll vid liv". "HTTP_HOST" Rubrikinnehåll Värd: från den aktuella begäran, om någon."HTTP_REFERER" Adressen till sidan (om någon) som ledde användarens webbläsare till denna sida. Denna rubrik ställs in av användarens webbläsare. Inte alla webbläsare installerar det, och vissa låter dig ändra innehållet i HTTP_REFERER-huvudet som ett alternativ. Kort sagt, han är verkligen inte att lita på."HTTP_USER_AGENT" Rubrikinnehåll Användaragent: från den aktuella begäran, om någon. Denna sträng innehåller beteckningen för webbläsaren som användaren begärde denna sida med. Ett typiskt exempel är raden: Mozilla / 4.5 (X11; U; Linux 2.2.9 i586)... Du kan bland annat använda detta värde med funktionen get_browser () för att anpassa resultatet av din sida till funktionerna i användarens webbläsare"HTTPS" Är inte tom om begäran gjordes över HTTPS-protokollet.

Kommentar: Observera att när du använder ISAPI med IIS kommer värdet att vara av om begäran inte gjordes över HTTPS-protokollet.

"REMOTE_ADDR" IP-adressen från vilken användaren tittar på den aktuella sidan."REMOTE_HOST" Fjärrvärden från vilken användaren visar den aktuella sidan. En omvänd DNS-sökning baseras på värdet på variabeln REMOTE_ADDR.

Kommentar: Din webbserver måste vara konfigurerad för att skapa denna variabel. Till exempel, i Apache behöver du direktivet Värdnamnssökning på i httpd.conf-filen för att denna variabel ska skapas. se även gethostbyaddr ().

"REMOTE_PORT" Porten på fjärrmaskinen som används för att kommunicera med webbservern."REMOTE_USER" Autentiserad användare."REDIRECT_REMOTE_USER" Autentiserad användare om begäran omdirigerades inifrån."SCRIPT_FILENAME"

Den absoluta sökvägen till skriptet som för närvarande körs.

Kommentar:

Om skriptet körs på kommandoraden (CLI) med en relativ sökväg som file.php eller ../file.php, kommer variabeln $ _SERVER ["SCRIPT_FILENAME"] att innehålla den användarspecificerade relativa sökvägen.

"SERVER_ADMIN" Denna variabel får sitt värde (för Apache) från direktivet i serverkonfigurationsfilen. Om skriptet körs på en virtuell värd kommer detta att vara värdet som definieras för den virtuella värden."SERVER PORT" Porten på serverdatorn som används av webbservern för att ansluta. För standardinställningar kommer värdet att vara " 80 "; med SLL, till exempel, kommer detta värde att vara det som är konfigurerat för säkra HTTP-anslutningar.

Kommentar: För att få den fysiska (riktiga) porten i Apache 2 måste du installera UseCanonicalName = På och UseCanonicalPhysicalPort = På annars kan detta värde åsidosättas och inte returnera det faktiska fysiska portvärdet. Det är osäkert att förlita sig på detta värde i samband med applikationer som kräver skärpt säkerhet.

"SERVER_SIGNATURE" En sträng som innehåller serverversionen och det virtuella värdnamnet att lägga till på servergenererade sidor, om aktiverat."PATH_TRANSLATED" Filsystem- (inte dokumentrot-) baserad sökväg till det aktuella skriptet, efter att servern har gjort någon virtuell-till-verklig mappning.

Kommentar: Från och med PHP 4.3.2 är PATH_TRANSLATED-variabeln inte längre implicit inställd i Apache 2 SAPI, jämfört med Apache version 1, där den är inställd på samma värde som variabeln SCRIPT_FILENAME när den inte används av Apache. Den här ändringen gjordes för att följa CGI-specifikationen, där variabeln PATH_TRANSLATED endast ska finnas när PATH_INFO är definierad. Apache 2-användare kan använda direktivet AcceptPathInfo = På i konfigurationsfilen httpd.conf för att ställa in PATH_INFO-variabeln.

"SCRIPT_NAME" Innehåller sökvägen till det aktuella körbara skriptet. Detta är användbart för sidor som behöver peka på sig själva. Konstanten __FILE__ innehåller hela sökvägen och namnet på den aktuella (dvs inkluderade) filen."REQUEST_URI" URI:en som skickades för att komma åt den här sidan. Till exempel, " /index.html". "PHP_AUTH_DIGEST" När du utför HTTP Digest-autentisering tilldelas denna variabel rubriken "Authorization", som skickas av klienten (den måste sedan användas för lämplig validering)."PHP_AUTH_USER" När HTTP-autentisering utförs ställs denna variabel in på användarnamnet som användaren tillhandahåller."PHP_AUTH_PW" När HTTP-autentisering utförs ställs denna variabel in på lösenordet som användaren tillhandahåller."AUTH_TYPE" När HTTP-autentisering utförs ställs denna variabel in på den typ av autentisering som används."PATH_INFO" Innehåller valfri sökväg som tillhandahålls av användaren efter skriptnamnet, men före frågesträngen, om tillgänglig. Till exempel, om det aktuella skriptet begärs från URL:en http://www.example.com/php/path_info.php/some/stuff?foo=bar, kommer variabeln $ _SERVER ["PATH_INFO"] att innehålla / några grejer?>

Det här exemplet kommer att resultera i något liknande.

De som mer eller mindre seriöst studerade PHP vet att det finns en mycket användbar global array i PHP som kallas $ _SERVER... Och så jag skulle vilja i den här artikeln analysera de mest populära nycklarna och deras värden i denna array, eftersom deras kunskap helt enkelt är nödvändig även för en nybörjare PHP programmerare.

Innan du fortsätter till global array $ _SERVER i PHP, jag kommer genast att ge en liten hint. Det finns en fantastisk funktion inbyggd i PHP, som kallas phpinfo ()... Låt oss genast ge ett exempel på dess användning:

phpinfo ();
?>

Som ett resultat av att köra detta enkla skript kommer du att se en enorm tabell med olika PHP-tolkinställningar, inklusive, mot slutet kommer det att finnas en värdetabell global array $ _SERVER... Alla nycklar och alla motsvarande värden kommer att listas där. Hur kan detta hjälpa dig? Och det faktum att om du behöver det här eller det värdet, och du glömmer namnet på nyckeln, använder du funktionen phpinfo () Du kan alltid komma ihåg dess namn. I allmänhet kör du det här skriptet och du kommer att förstå mig direkt.

Låt oss nu gå vidare till de mest populära nycklar för arrayen $ _SERVER:

  • HTTP_USER_AGENT- denna nyckel låter dig ta reda på kundens egenskaper. I de flesta fall är detta definitivt en webbläsare, men inte alltid. Och igen, om webbläsaren, då vilken, kan du ta reda på om detta i denna variabel.
  • HTTP_REFERER- innehåller den absoluta sökvägen till den filen ( PHP-skript, HTML-sida) från vilket vi bytte till det här skriptet. Grovt sett var klienten kom ifrån.
  • SERVER_ADDR - IP-adress server.
  • REMOTE_ADDR - IP-adress klient.
  • DOCUMENT_ROOT- fysisk sökväg till webbplatsens rotkatalog. Detta alternativ ställs in via konfigurationsfil Apache-server.
  • SCRIPT_FILENAME- den fysiska vägen till det anropade skriptet.
  • FRÅGESTRÄNG- ett mycket användbart värde som gör att du kan få en sträng med en begäran, och sedan kan du analysera denna sträng.
  • REQUEST_URI- ett ännu mer användbart värde som inte bara innehåller själva begäran, utan också den relativa sökvägen till det anropade skriptet från roten. Detta används mycket ofta för att ta bort dubblering från index.php, alltså när vi har sådana URL: "http://mysite.ru/index.php" och " http://mysite.ru/"leda till en sida, och webbadresser olika, därför dubbelarbete, vilket kommer att ha en dålig effekt på sökmotoroptimering... Och nu med hjälp REQUEST_URI vi kan definiera: med index.php eller inte kallades manuset. Och vi kan göra en omdirigering med index.php(om han var närvarande i REQUEST_URI) utan index.php... Som ett resultat, när du överför en sådan begäran: " http://mysite.ru/index.php?id=5", kommer vi att ha en omdirigering till URL: "http://mysite.ru/?id=5". Det vill säga, vi blev av med dubbelarbete genom att ta bort från URL detta index.php.
  • SCRIPT_NAME- relativ sökväg till det anropade skriptet.

Kanske är dessa alla element global array $ _SERVER i PHP som används regelbundet. Du måste känna till och kunna använda dem när det behövs.