Τις περισσότερες φορές, η διεύθυνση IP ενός επισκέπτη ιστότοπου χρησιμοποιείται για την αναγνώρισή του. Αλλά εκτός από αυτό, χρησιμοποιώντας IP, μπορείτε να λάβετε πολλές επιπλέον πληροφορίες σχετικά με τον επισκέπτη - για παράδειγμα, να μάθετε τον πάροχό του στο Διαδίκτυο και τη γεωγραφική τοποθεσία του. Στην πράξη, τα σενάρια PHP από τον διακομιστή χρησιμοποιούνται συχνότερα για την εξαγωγή διευθύνσεων IP από τις κεφαλίδες αιτήσεων που αποστέλλονται από το πρόγραμμα περιήγησης.
Είναι απαραίτητο
Βασικές γνώσεις PHP
Οδηγίες
Βήμα 1
Χρησιμοποιήστε την ενσωματωμένη συνάρτηση getenv της PHP για να διαβάσετε διευθύνσεις IP από τη συστοιχία μεταβλητών περιβάλλοντος superglobal. Στην απλούστερη περίπτωση, αρκεί να διαβάσετε τη μεταβλητή που ονομάζεται REMOTE_ADDR. Το αντίστοιχο κομμάτι του κώδικα PHP μπορεί να μοιάζει με αυτό: $ userIP = getenv ('REMOTE_ADDR');
Βήμα 2
Εκτός από τη μεταβλητή REMOTE_ADDR που εστάλη στο αίτημα, ελέγξτε τις μεταβλητές HTTP_VIA και HTTP_X_FORWARDED_FOR. Εάν ο επισκέπτης χρησιμοποιεί διακομιστή μεσολάβησης, τότε η ενδιάμεση διεύθυνση πρέπει να καταγράφεται και στις δύο μεταβλητές - τόσο σε HTTP_VIA όσο και σε REMOTE_ADDR. Σε αυτήν την περίπτωση, μπορείτε να προσπαθήσετε να μάθετε την πραγματική IP του επισκέπτη μέσω HTTP_X_FORWARDED_FOR - ο διακομιστής μεσολάβησης πρέπει να βάλει την αρχική διεύθυνση σε αυτόν. Ωστόσο, αυτό δεν γίνεται πάντα και ο χρήστης έχει την ευκαιρία να επιλέξει έναν "αδιαφανή" διακομιστή μεσολάβησης που δεν μεταδίδει την αρχική IP του επισκέπτη που έστειλε το αίτημα. Σε κάθε περίπτωση, πρέπει να χρησιμοποιήσετε όσο το δυνατόν περισσότερους τρόπους για να λάβετε την αρχική διεύθυνση IP στον κώδικά σας προσθέτοντας μια επιταγή για τη μεταβλητή
Βήμα 3
Συνδυάστε σε μια γραμμή κώδικα PHP έναν διαδοχικό έλεγχο τριών μεταβλητών περιβάλλοντος, οι οποίες μπορεί να περιέχουν την αρχική διεύθυνση IP του επισκέπτη. Αυτό μπορεί να γίνει, για παράδειγμα, ως εξής: $ userIP = getenv ('HTTP_CLIENT_IP') Ή $ userIP = getenv ('HTTP_X_FORWARDED_FOR') Ή $ userIP = getenv ('REMOTE_ADDR');
Βήμα 4
Καταργήστε επιπλέον χαρακτήρες και άλλα "σκουπίδια" από την προκύπτουσα τιμή IP που ενδέχεται να εισέλθει σε μεταβλητές περιβάλλοντος. Αυτό μπορεί να γίνει, για παράδειγμα, χρησιμοποιώντας τις ενσωματωμένες συναρτήσεις PHP TRIM και preg_replace: $ userIP = TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
Βήμα 5
Συνδυάστε όλο τον κώδικα σε μια προσαρμοσμένη λειτουργία, ώστε να μπορείτε να το αναφέρετε αντί να επαναλαμβάνετε τις γραμμές ελέγχου και εκκαθάρισης ξανά και ξανά σε διαφορετικά μέρη των σεναρίων PHP σας. Για παράδειγμα, όπως αυτό: FUNCTION getUserIP () {
$ userIP = getenv ('HTTP_CLIENT_IP') Ή $ userIP = getenv ('HTTP_X_FORWARDED_FOR') Ή $ userIP = getenv ('REMOTE_ADDR');
ΕΠΙΣΤΡΟΦΗ TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
}