Forum und email

Κάτι χρήσιμο

Ας κάνουμε κάτι λίγο πιο χρήσιμο τώρα. Θα ελέγξετε τι είδους browser χρησιμοποιεί το άτομο που βλέπει τη σελίδα. Για να το κάνουμε αυτό, ελέγχουμε το user agent string που στέλνει ο browser σαν μέρος του HTTP request (αιτήματος). Αυτή η πληροφορία αποθηκεύεται σε μια μεταβλητή. Οι μεταβλητές πάντα αρχίζουν με ένα σύμβολο δολλαρίου στην PHP. Η μεταβλητή που μας ενδιαφέρει τώρα είναι $_SERVER["HTTP_USER_AGENT"].

Note: Σημείωση για τις PHP Autoglobals Η $_SERVER είναι μια ειδική δεσμευμένη μεταβλητή της PHP η οποία περιέχει όλες τις πληροφορίες του web server. Είναι γνωστή ως μια Autoglobal (ή Superglobal). Δείτε την σχετική σελίδα του manual για τις Autoglobals για περισσότερες πληροφορίες. Αυτές οοι ειδικές μεταβλητές εισηγήθηκαν στην PHP » 4.1.0. Πριν από χρησιμοποιούσαμε αντί αυτού τον παλαιότερο array $HTTP_*_VARS, όπως η $HTTP_SERVER_VARS. Αν και ξεπερασμένες, αυτές οι παλαιότερες μεταβλητές ακόμη υπάρχουν. (Δείτε επίσης την σημείωση στον παλιό κώδικα.)

Για να εμφανίσουμε αυτή την μεταβλητή, μπορούμε απλά να κάνουμε:

Example#1 Εκτυπώνοντας μια μεταβλητή (Στοιχείο array)

<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>

Ένα παράδειγμα εξόδου αυτού του script θα μπορούσε να είναι:

Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
     

Υπάρχουν πολλά είδη τύπων μεταβλητών στην PHP. Στο παραπάνω παράδειγμα εκτυπώσαμε ένα στοιχείο ενός Array (πίνακα). Τα arrays είναι πολύ χρήσιμοι τύποι μεταβλητών.

Η $_SERVER είναι ακόμη μια μεταβλητή που γίνεται αυτόματα διαθέσιμη σε σας από την PHP. Μπορείτε να δείτε μια λίστα στην ενότητα Δεσμευμένες μεταβλητές του manual ή μπορείτε να πάρετε μια πλήρη λίστα αυτών, δημιουργώντας ένα αρχείο που είναι κάπως έτσι:

Example#2 Εμφάνιση όλων των προκαθορισμένων μεταβλητών με την phpinfo()

<?php phpinfo(); ?>

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

Μπορείτε να τοποθετήσετε πολλαπλές προτάσεις PHP σε ένα tag της PHP και να δημιουργήσετε μικρά μπλοκ κώδικα που κάνουν περισσότερα από μια απλή echo. Για παράδειγμα, αν θέλαμε να ελέγξουμε για την χρήση του Internet Explorer θα μπορούσαμε να κάνουμε κάτι σαν και αυτό:

Example#3 Παράδειγμα: Δομές ελέγχου (control structures) και Συναρτήσεις

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
    echo 
"You are using Internet Explorer<br />";
}
?>

Ένα παράδειγμα εξόδου αυτού του script μπορεί να είναι:

You are using Internet Explorer<br />

Εδώ εισάγουμε μερικές καινούριες έννοιες. Έχουμε μια πρόταση if. Αν είστε γνώριμοι με την βασική σύνταξη που χρησιμοποιείται από την γλώσσα προγραμματισμού C, τότε αυτό θα σας φανεί λογικό. Αν δεν ξέρετε αρκετή C ή κάποια άλλη γλώσσα προγραμματισμού που χρησιμοποιείται η παραπάνω σύνταξη, ίσως χρειαστείτε να διαλέξετε ένα εισαγωγικό βιβλίο PHP και να διαβάσετε τα πρώτα κεφάλαια, ή να διαβάσετε το κομμάτι Αναφορά στην Γλώσσα αυτού του manual. Μπορείτε να βρείτε μια λίστα βιβλίων για PHP στο » https://www.php.net/books.php.

Η δεύτερη έννοια που εισάγεται είναι η κλήση της συνάρτησης strstr(). Η strstr() είναι μια συνάρτηση ενσωματωμένη μέσα στην PHP που ψάχνει ένα string για να βρεί μέσα του ένα άλλο string. Σε αυτή την περίπτωση ψάχνουμε για το "MSIE" μέσα στο $_SERVER["HTTP_USER_AGENT"]. Αν το string βρεθεί, η συνάρτηση επιστρέφει TRUE και αν δεν βρεθεί, επιστρέφει FALSE. Αν επιστρέψει TRUE, η πρόταση if γίνεται και αυτή TRUE και ο κώδικας μέσα στα {άγκιστρα} εκτελείται. Αλλιώς, δεν εκτελείται. Δημιουργήστε και εσείς παρόμοια παραδείγματα με if , else και άλλες συναρτήσεις όπως τις strtoupper() και strlen(). Κάθε σχετιζόμενη σελίδα του manual περιέχει παραδείγματα επίσης.

Μπορούμε να προχωρήσουμε ένα βήμα παραπέρα και να δείξουμε πως μπορούμε να μπαίνουμε και να βγαίνουμε από την PHP-λειτουργία (PHP-mode) ακόμη και στη μέση ενός PHP μπλοκ:

Example#4 Ανακατεύοντας και HTML και PHP λειτουργίες

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
?>
<h3>strstr must have returned true</h3>
<center><b>You are using Internet Explorer</b></center>
<?php
} else {
?>
<h3>strstr must have returned false</h3>
<center><b>You are not using Internet Explorer</b></center>
<?php
}
?>

Ένα παράδειγμα εξόδου αυτού του script μπορεί να είναι:

<h3>strstr must have returned true</h3>
<center><b>You are using Internet Explorer</b></center>

Αντί να χρησιμοποιούμε μια PHP echo πρόταση για να εξάγουμε κάτι, βγήκαμε από την PHP λειτουργία PHP λειτουργία και στείλαμε απλή HTML. Το σημαντικό και δυνατό στοιχείο που πρέπει να προσέξουμε εδώ είναι ότι η λογική ροή του script παραμένει ανέπαφη. Μόνο ένα από τα παραπάνω HTML μπλοκ θα σταλεί στον θεατή, ανάλογα με το αν η strstr() επέστρεψε TRUE ή FALSE. Με άλλα λόγια, αν το string MSIE έχει βρεθεί ή όχι.