ΥπολογιστέςΛογισμικό

PHP καθολική μεταβλητή στη συνάρτηση. Κάντε μια καθολική μεταβλητή στην PHP

Για να δημιουργήσετε ένα πλήρες site, η οποία έχει ευρεία λειτουργικότητα που πρέπει να ξέρετε πολλά. Αλλά τι μπορεί να τον κάνει πραγματικά μοναδικό - είναι PHP. Η παγκόσμια μεταβλητή στη γλώσσα προγραμματισμού δεν χρησιμοποιείται πολύ συχνά, αλλά μερικές φορές να ξέρει πώς λειτουργεί, μερικές φορές είναι απαραίτητο. Αυτή είναι η μελέτη του τι είναι και πώς λειτουργεί, θέλουμε να κάνουμε σε αυτό το άρθρο.

έκταση

Έτσι, καλέστε το πλαίσιο στο οποίο καθορίζεται η μεταβλητή και. Στις περισσότερες περιπτώσεις, έχουν μόνο ένα πεδίο. Όταν PHP καθολικές μεταβλητές φορτώνονται από άλλα αρχεία, τότε μπορεί να είναι χωρίς αποκλεισμούς (περιλαμβάνουν) και τα απαιτούμενα (απαιτείται).

Από προεπιλογή, θα περιορίζονται στην τοπική εμβέλεια λειτουργίας. Και πώς να κάνει μεταβλητή δει τα αρχεία στα όριά της, η οποία θα μπορούσε περισσότερο και να χρησιμοποιούν; Για το σκοπό αυτό, και παρέχεται στις παγκόσμιες μεταβλητές της PHP.

Η λέξη-κλειδί «παγκόσμια»

Και εδώ είναι το πώς να κηρύξει μια παγκόσμια μεταβλητή στην PHP; Για την επίτευξη αυτού του στόχου θα μας βοηθήσει η λέξη «παγκόσμια». Είναι απαραίτητο να τοποθετήσετε μπροστά από την μεταβλητή που θέλετε να κάνετε μια παγκόσμια (narimer, παγκόσμια «Η μεταβλητή").

Μετά την εφαρμογή μιας τέτοιας ένδειξης, τα δεδομένα θα είναι σε θέση να συνεργαστεί με οποιοδήποτε αρχείο. Αν κάπου υπάρχουν αναφορές σε αυτή τη μεταβλητή, το πρόγραμμα θα πληρώνουν πάντα προσοχή στην παγκόσμια έκδοση.

Γιατί μια τέτοια παράξενη γλώσσα; Το γεγονός ότι την ίδια στιγμή μπορεί να υπάρχουν τοπικές εκδόσεις. Αλλά θα είναι διαθέσιμο αποκλειστικά για αυτά τα αρχεία, όπου ανακοινώθηκε. Και για όλα τα υπόλοιπα θα λειτουργήσει καθολικές μεταβλητές της PHP τάξη. Ως εκ τούτου θα πρέπει να είστε προσεκτικοί. Και ότι δεν υπήρχε καμία αμφιβολία, εδώ είναι ένα παράδειγμα του τι μοιάζουν: παγκόσμια α.

Διότι, αν ένα αρχείο θα έχουν πρόσβαση σε μια σειρά από μεταβλητές, θα τους αναγκάσει να συγκρούονται. Αλλά δεν μπορούμε να πούμε με σιγουριά - διαβάζεται τοπικές ή καθολικές μεταβλητές ή αποτυγχάνει συνολικά. Έτσι, αν είναι να εγγραφείτε σε λειτουργία, θα πρέπει να υπάρχει πρόβλημα. Όμως, η χρήση μιας μεταβλητής για τα σύνορα της να είναι προβληματική. Ως εκ τούτου, η δομή της σύνταξης του κώδικα πρέπει να παρακολουθεί στενά και να είστε σίγουροι ότι πουθενά δεν υπάρχει ακόμη μια προϋπόθεση για την εν λόγω σύγκρουση προέκυψε.

Μία άλλη πραγματοποίηση της εγγραφής

Είναι δυνατόν σε PHP για να δημιουργήσετε μια καθολική μεταβλητή με άλλο τρόπο; Ναι, δεν είναι καν ένα. Κατ 'αρχάς, ας εξετάσουμε το $ GLOBALS. Αυτό είναι ένα associative πίνακα. Το κλειδί για αυτό - είναι το όνομα. Δεδομένου ότι η αξία των περιεχομένων δρα ως καθολική μεταβλητή. Θα πρέπει να σημειωθεί ότι η σειρά μετά την ανακοίνωση υπάρχει σε κάθε πεδίο. Αυτό δίνει λόγο να το πιστέψω superglobal. Φαίνεται έτσι: $ GLOBALS [ 'μεταβλητή'].

Προκαθορισμένες / superglobals

Σε κάθε γλώσσα προγραμματισμού, υπάρχουν κάποια ονόματα που είναι ναυλωμένα για ορισμένες από τις λειτουργίες του. Ως εκ τούτου, για να δημιουργήσετε το PHP καθολικές μεταβλητές με το ίδιο όνομα δεν θα λειτουργήσει.

Αυτή η γλώσσα προγραμματισμού έχει τα δικά της χαρακτηριστικά. Έτσι, είναι σημαντικό ότι οι προκαθορισμένες μεταβλητές εδώ δεν είναι η εγκατάσταση «σούπερ», δηλαδή, δεν είναι διαθέσιμες σε όλες τις περιοχές. Πώς μπορώ να το διορθώσω; Για να προκαθορισμένες μεταβλητές ήταν διαθέσιμο σε κάποια περιοχή, θα πρέπει να δηλώνεται ως εξής :. Παγκόσμια «Μεταβλητό» Φαίνεται να είναι η ίδια όπως και πριν είπε, σωστά; Είναι αλήθεια, αλλά δεν είναι αρκετά. Ας δούμε ήδη «αγωνίζονται» ένα παράδειγμα:

  • παγκόσμια $ HTTP_POST_VARS?
  • echo $ HTTP_POST_VARS [όνομα »].

Θα αισθανθείτε τη διαφορά μεταξύ τους; Σημειώστε ότι στην PHP καθολικές μεταβλητές δεν είναι απαραίτητο να χρησιμοποιηθούν στο πλαίσιο της λειτουργίας. Μπορεί ακόμη να τοποθετηθεί σε ένα αρχείο που περιλαμβάνεται σε αυτό.

Σύνδεσμοι και ασφάλειας

Όπως μπορείτε να δείτε, σε PHP δημιουργήσει μια παγκόσμια μεταβλητή δεν είναι ένα πρόβλημα. Αλλά είναι όλα ιδιαίτερα σε σχέση με τις συνδέσεις εκεί; Ναι, μπορεί να υπάρχουν μη αναμενόμενη συμπεριφορά κατά τη χρήση παγκόσμια. Αλλά πριν από αυτό, μια μικρή προϊστορία.

Στην έκδοση 4.2.0 της οδηγίας από προεπιλογή register_globals άλλαξε από on-κράτος στο off. Για τους περισσότερους χρήστες, αυτό δεν είναι πολύ σημαντικό, αλλά μάταια. Μετά από όλα, αυτό επηρεάζει άμεσα την ασφάλεια του αναπτυγμένου προϊόντος. Αν χρειαστεί να κάνετε το μεταβλητό παγκόσμια, PHP-οδηγία σχετικά με αυτή την παράμετρο δεν επηρεάζεται άμεσα. Ωστόσο, η λανθασμένη χρήση μπορεί να δημιουργήσει ήδη ασφαλείας προηγούμενα.

Έτσι, αν register_globals είναι ενεργοποιημένη, πριν από την εκτέλεση του γραπτού κώδικα προετοιμασία των διαφόρων μεταβλητών που απαιτούνται, για παράδειγμα, να στείλετε HTML μορφές. Ως εκ τούτου, αποφασίστηκε να το απενεργοποιήσετε.

Γιατί είναι η κατάσταση της εν λόγω οδηγίας στα php καθολική μεταβλητή οφείλεται σε μεγάλο βαθμό; Το γεγονός είναι ότι, όταν η κατάσταση των προγραμματιστών δεν είναι πάντα με βεβαιότητα θα μπορούσαν να απαντήσει στο ερώτημα από πού προήλθε. Από τη μία πλευρά, είναι πιο εύκολο να γράψει κώδικα. Αλλά από την άλλη - είναι ένα κίνδυνο για την ασφάλεια. Ως εκ τούτου, για την αποφυγή λαθών, καθώς και στοιχεία ανάμιξης και της οδηγίας έχει απενεργοποιηθεί.

Τώρα, ας δούμε όχι / κωδικό ασφαλείας, καθώς και το πώς να ανιχνεύσει περιπτώσεις κατά τις οποίες η ανακοίνωση της παγκόσμιας μεταβλητής PHP συνοδεύεται από προσπάθειες παραποίησης των δεδομένων. Αυτό είναι αναγκαίο προκειμένου να δημιουργηθεί όχι μόνο όμορφη, αλλά και σταθερά τις περιοχές που δεν ραγίσει το πρώτο διαθέσιμο άτομο που εργάζεται.

κακόβουλο κώδικα

Ας ορίζεται ότι η μεταβλητή ισχύει και για όσους έχουν εγκριθεί:

εάν (authenticate_user ()) {
$ Εξουσιοδότηση = true?
}

if ($, επιτρέπουν) {
περιλαμβάνουν «/highly/sensitive/data.php»?
}

Σε αυτή την κατάσταση, η μεταβλητή μπορεί να ρυθμιστεί αυτόματα. Λαμβάνοντας υπόψη ότι τα δεδομένα μπορούν απλά να αντικατασταθούν, και η πηγή προέλευσής τους δεν έχει οριστεί, τότε ο καθένας μπορεί να περάσει ένα τέτοιο τεστ και προσποιούνται ότι είναι κάποιος άλλος. Εάν είναι επιθυμητό, ο εισβολέας (ή απλά περίεργοι, αλλά άπειρο πρόσωπο) μπορεί να έχει απομειωθεί, η λογική μας.

Αν αλλάξετε την τιμή της εν λόγω οδηγίας, αυτός ο κώδικας θα λειτουργήσει σωστά, όπως απαιτείται. Αλλά προετοιμασία των μεταβλητών δεν είναι μόνο ένα καλό τόνο στον προγραμματισμό, αλλά και μας δίνει κάποια εγγύηση για τη σταθερότητα του σεναρίου.

Αξιόπιστη έκδοση του κώδικα

μπορείτε να απενεργοποιήσετε ή να εργαστούν οδηγίες, ή να συνταγογραφήσει ένα πιο σύνθετο κώδικα για την επίτευξη αυτού του στόχου. Για παράδειγμα, όπως αυτό:

if (isset ($ _ ΣΥΝΟΔΟΣ [ 'όνομα χρήστη'])) {

echo "Hello {$ _ SESSION [ 'όνομα χρήστη']} "?

} Else {

echo "Hello Σχόλια
"?
echo "Welcome χρήστη!"?

}

Κάντε μια θέση σε αυτή την περίπτωση, θα υπάρξουν δύσκολες. Αλλά και πάλι - είναι δυνατόν. Για να το κάνετε αυτό, θα πρέπει να αναλάβει τη φροντίδα που παρέχεται εργαλεία ταχείας αντίδρασης. Αν θέλετε να συμπεριλάβετε καθολικές μεταβλητές στην PHP, μπορείτε να χρησιμοποιήσετε τα παρακάτω εργαλεία: αν ξέρουμε τι η περιοχή είναι η τιμή που προκύπτει, είναι δυνατόν να καταχωρήσει ένα σενάριο για να το ελέγξετε με έναν αγώνα. Φυσικά, αυτό επίσης δεν εγγυάται την πλήρη προστασία από τις αξίες υποκατάστασης. Αλλά αυτό είναι πάρα πολύ επιλογές περιπλέκουν σημαντικά.

Βρίσκει προσπάθειες να μεταμφιέζονται

Ας δούμε πώς μπορείτε να καταλάβετε γράψει νωρίτερα. Στην PHP global μεταβλητές στη λειτουργία που θα δίνονται παρακάτω, θα πρέπει να αναγνωρίσει τον εαυτό του. Μπορούμε να πούμε ότι αυτό είναι ένα είδος εργασία για την αφομοίωση του θέματος του μαθήματος. Εδώ είναι ο κώδικας:

if (isset ($ _ COOKIE [ 'C_COOKIE'])) {
} Elseif (isset ($ _ GET [ 'C_COOKIE']) || isset ($ _ POST [ 'C_COOKIE'])) {

ταχυδρομείου ( «administrarot@example.com», «Προσοχή, το σενάριο καταγράφηκε απόπειρα διάρρηξης και παραποίησης των δεδομένων», $ _SERVER [ «REMOTE_ADDR»])?
echo «Υπήρχε μια σπασμένη ασφάλεια ή επιχειρούν να το πράξουν ενημερώνει τον διαχειριστή.»?
έξοδο?

} Else {
}
?>

Τώρα εξήγηση σ 'αυτό. Εν μέρει C_COOKIE έρχεται σε μας από μια αξιόπιστη πηγή. Για να ικανοποιηθεί πλήρως, σύμφωνα με το αναμενόμενο αποτέλεσμα, ελέγχουμε την αξία του και να ενημερώσει τον διαχειριστή σε περίπτωση προβλημάτων. Αν δεν έρθει, τότε κανένα μέτρο και δεν πρέπει να κάνουν. Πρέπει να καταλάβετε ότι η απλή απενεργοποίηση οδηγία register_globals δεν κάνει κωδικός σας είναι ασφαλές. Ως εκ τούτου, κάθε μεταβλητή που λαμβάνει ένα σενάριο από το χρήστη, θα πρέπει να ελέγχονται για την αναμενόμενη τιμή.

συμπέρασμα

Εδώ, σε γενικές γραμμές, και όλα όσα πρέπει να ξέρετε για τις παγκόσμιες μεταβλητές για την επιτυχή και ασφαλή τα χρησιμοποιούν στην εργασία τους. Βέβαια, να πω ότι υπάρχει μια πλήρης εγγύηση ότι κανείς δεν θα χρησιμοποιήσει τους δεν μπορεί - επιτιθέμενοι συνεχώς τη βελτίωση των μεθόδων και των δεξιοτήτων τους. Κατά συνέπεια, είναι επιθυμητό να περιοριστεί η μέγιστη χρήση των καθολικών μεταβλητών στον κώδικα. Ευτυχώς, η δομή και το σχεδιασμό χαρακτηριστικά αυτής της γλώσσας προγραμματισμού μπορεί να επιτευχθεί αυτός ο στόχος. Καλή τύχη!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 el.delachieve.com. Theme powered by WordPress.