Computers, Software
PHP globale variabele in de functie. Maak een globale variabele in PHP
Om een volledige site, die heeft een brede functionaliteit die u nodig om veel te weten te creëren. Maar wat kan hem echt uniek te maken - het is PHP. De globale variabele in de programmeertaal wordt niet vaak gebruikt, maar soms ook om te weten hoe het werkt, soms is het nodig. Dat is de studie van wat het is en hoe het werkt, gaan we doen in dit artikel.
strekking
Standaard zijn ze beperkt tot de lokale functie scope. En hoe de variabele gezien bestanden in zijn grenzen, die meer en kon gebruiken? Te dien einde, en is voorzien in de PHP globale variabelen.
Het sleutelwoord "global"
Na de implementatie van een dergelijke aanwijzing, worden de gegevens in staat zijn om te werken met een bestand. Als er ergens zijn er verwijzingen naar deze variabele, zal het programma altijd aandacht besteden aan de algemene versie.
Waarom zo'n vreemde taal? Het feit dat op hetzelfde moment kunnen er lokale versies. Maar ze zullen exclusief beschikbaar zijn voor die bestanden, waar aangekondigd. En voor de rest zal fungeren globale variabelen PHP klasse. Daarom moet je voorzichtig zijn. En dat er geen twijfel over bestaan, is hier een voorbeeld van hoe ze eruit zien: globaal a.
Want als één bestand toegang tot een aantal variabelen, zal het ervoor zorgen dat ze in strijd zijn. Maar we kunnen niet met zekerheid zeggen - lokale of algemene variabele wordt gelezen of helemaal niet. Dus, als het is om te registreren in een functie, moet het geen probleem zijn. Maar het gebruik van een variabele voor haar grenzen te problematisch zijn. Daarom is de structuur van het opstellen van de code die nodig is om de voet te volgen en ervoor te zorgen dat nergens is er zelfs een voorwaarde om de genoemde conflict ontstond.
Een andere uitvoeringsvorm van de opname
Vooraf gedefinieerde / superglobals
In elke programmeertaal zijn er een aantal namen die worden gecharterd voor een aantal van haar taken. Daarom, om te creëren in PHP globale variabelen met dezelfde naam zal niet werken.
Deze programmeertaal heeft zijn eigen kenmerken. Dus, is het belangrijk dat de vooraf gedefinieerde variabelen hier niet installeert "super", dat wil zeggen dat ze niet beschikbaar zijn op alle locaties. Hoe kan ik dat op? Om vooraf gedefinieerde variabelen die beschikbaar was bij een aantal lokale omgeving, moet het als volgt :. Global «Variable worden verklaard" Het lijkt hetzelfde te zijn als eerder gezegd, toch? Het is waar, maar niet helemaal. Laten we eens kijken naar al "vechten" een voorbeeld:
- global $ HTTP_POST_VARS;
- echo $ HTTP_POST_VARS [ 'naam'].
Je voelt het verschil tussen hen? Merk op dat in PHP globale variabelen hoeft niet per se te worden gebruikt binnen de functie. Het kan zelfs in een bestand dat is opgenomen in het worden geplaatst.
Links en veiligheid
Zoals u kunt zien, in PHP een globale variabele is geen probleem. Maar is er een bepaalde relatieve links? Ja, kan er onverwacht gedrag bij het gebruik van de mondiale. Maar voordat het zover, een beetje achtergrondverhaal.
In versie 4.2.0 van de richtlijn standaard register_globals veranderd van on-state af. Voor de meeste gebruikers is dit niet erg belangrijk, maar tevergeefs. Immers, het rechtstreeks van invloed op de veiligheid van het ontwikkelde product. Als u nodig hebt om de variabele globale, PHP-richtlijn voor deze parameter is niet rechtstreeks getroffen. Echter, onjuist gebruik al creëren precedenten veiligheid.
Dus als register_globals is ingeschakeld, vóór de uitvoering van de geschreven code geïnitialiseerd de verschillende variabelen die nodig zijn, bijvoorbeeld om HTML-formulieren te verzenden. Daarom werd besloten om het uit te schakelen.
Waarom is de staat van deze richtlijn in php globale variabele heeft veel te danken? Het feit is dat wanneer de toestand van de ontwikkelaars niet altijd met zekerheid kon zichzelf antwoord op de vraag waar het vandaan kwam. Aan de ene kant is het makkelijker om code te schrijven. Maar aan de andere kant - het is een gevaar voor de veiligheid. Daarom, om fouten, alsmede gegevens mengen te vermijden en richtlijn is uitgeschakeld.
Laten we nu eens niet / secure code, evenals hoe tot die gevallen waarin de bekendmaking van de globale PHP variabele gaat gepaard met pogingen tot knoeien met gegevens op te sporen. Dit is noodzakelijk om niet alleen te creëren mooi, maar ook werken gestaag sites die niet de eerst beschikbare persoon weet te kraken.
kwaadaardige code
Laten we stellen dat de variabele geldt voor degenen die een vergunning is verleend:
if (authenticate_user ()) {
$ Authorize = true;
}
if ($ machtigen) {
include "/highly/sensitive/data.php";
}
In deze toestand kan de variabele automatisch ingesteld. Gezien het feit dat de gegevens eenvoudig kan worden vervangen, en de bron van hun herkomst is niet ingesteld, dan kan iedereen een dergelijke test te slagen en doen alsof ze iemand anders. Indien gewenst, kan de aanvaller (of gewoon nieuwsgierig, maar onervaren persoon) worden aangetast, onze logica.
Als we de waarde van de richtlijn te wijzigen, zal deze code correct werken, zoals we nodig hadden. Maar initialisatie van variabelen is niet alleen een goede toon in de programmering, maar ook geeft ons een zekere garantie van de stabiliteit van het script.
Betrouwbare versie van de code
U kunt uitschakelen of richtlijnen werken, of een meer complexe code om dit doel te bereiken voorschrijven. Bijvoorbeeld, als volgt uit:
if (isset ($ _ SESSION [ 'username'])) {
echo "Hello {$ _ SESSION [ 'username']} b>";
} Else {
echo "Hello gast b>
";
echo "Welkom gebruiker!";
}
Maak een wissel in dit geval, zal er moeilijk zijn. Maar toch - mogelijk te maken. Om dit te doen, moet u ervoor zorgen dat de snelle reactie gereedschappen werden verstrekt nemen. Als u wilt globale variabelen in PHP kunt u de volgende hulpprogramma's te gebruiken: als we weten wat het bereik is de verkregen waarde, is het mogelijk om een script om dit te controleren met een lucifer te registreren. Natuurlijk, het heeft ook geen volledige bescherming tegen de vervangende waarden. Maar dat is te veel opties aanzienlijk bemoeilijken.
Vindt pogingen te vermommen
Laten we eens kijken hoe je eerder begrijpen geschreven. In PHP globale variabelen in de functie die hieronder zal worden gegeven, zal je nodig hebt om jezelf te verklaren. We kunnen zeggen dat dit een soort van huiswerk op de assimilatie van de les onderwerp. Hier is de code:
Php
if (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} Else if (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {
mail ( "administrarot@example.com", "Attention, het script werd opgenomen poging tot inbraak en het knoeien met gegevens", $ _SERVER [ 'REMOTE_ADDR']);
echo "Er was een gebroken veiligheid of een poging te doen de beheerder in kennis gesteld.";
exit;
} Else {
}
?>
Nu toelichting daarop. Mede C_COOKIE komt tot ons van een betrouwbare bron. Om volledig voldaan op basis van het verwachte resultaat, controleren we de waarde ervan en stelt de beheerder in geval van problemen. Als het niet komt, dan is er geen actie en hoefde niet te maken. Je moet begrijpen dat gewoon uitschakelen register_globals richtlijn niet uw code veilig is. Daarom moet elke variabele die een script van de gebruiker ontvangt, moeten worden gecontroleerd op de verwachte waarde.
conclusie
Hier, in het algemeen, en alles wat je moet weten over de globale variabelen om ze succesvol en veilig te gebruiken in hun werk. Natuurlijk, om te zeggen dat er een volledige garantie dat niemand zal gebruiken ze kan niet - aanvallers zijn voortdurend verbeteren van hun methoden en vaardigheden. Het is daarom wenselijk om een maximaal gebruik van globale variabelen in de code te beperken. Gelukkig kan de structuur en het ontwerp kenmerken van deze programmeertaal dit doel te bereiken. Good luck!
Similar articles
Trending Now