el:school:lessons:html:ergastirio:php:execute

PHP - εκτέλεση εντολών

  • Στην προηγούμενη άσκηση είδαμε κάποια προγραμματιστικά στοιχεία της php όπως μεταβλητές και δομή επανάληψης και πως συνδυάζονται με την html
  • Στην νέα άσκηση θα δούμε επιπλέον δυνατότητες, όπως ανανέωση σελίδας, εκτέλεση εντολών στον server και άλλα..
  1. Ανανέωση σελίδας
    1. Ακριβώς πριν κλείσει η php με ?> πάνω από το </body> και μέσα στην php, θα προσθέσουμε τις εξής εντολές
      • $page = $_SERVER['PHP_SELF'];
        header( "refresh:5;url=$page" );
      • Η 1η εντολή αποθηκεύει σε μια μεταβλητή $page την σελίδα που βρισκόμαστε (εδώ την demo.php).
      • Η 2η εντολή ορίζει στην επικεφαλίδα (header) της σελίδας να ανανεώνει τον εαυτό της κάθε 5 δλ.
    2. Αλλάξτε την ανανέωση να γίνεται κάθε 10 δλ ή ότι άλλο θέλετε εσείς.
  2. Εκτέλεση εντολών
    1. Ανοίγουμε ένα τερματικό και εκτελούμε την εντολή pwd. Θα μας εμφανίσει τον φάκελο στον οποίο βρισκόμαστε.
    2. Πάμε να δούμε πως θα εκτελέσει μια τέτοια εντολή η php. Πάνω από την εντολή $page = $_SERVER['PHP_SELF']; κάνουμε χώρο και εισάγουμε τις παρακάτω εντολές
      • $output = shell_exec('pwd');
        echo "<br>Βρισκόμαστε στον φάκελο <pre>$output</pre>";
      • Η 1η καλεί την συνάρτηση shell_exec, η οποία εκτελεί την pwd και αποθηκεύει τα αποτελέσματα στην $output
      • Η 2η εμφανίζει τα περιεχόμενα της $output μέσα στην ετικέτα <pre> ώστε να είναι όμορφα μορφοποιημένα.
    3. Τα αποτελέσματα εμφανίζονται σε ένα τυχαίο χρώμα κειμένου που ίσως δεν φαίνεται καλά. Εισάγετε με την εντολή echo της php την ετικέτα <font> με την ιδιότητα που ξέρετε από την html ώστε να ορίσει χρώμα κειμένου μαύρο στο κείμενο Βρισκόμαστε στον φάκελο ... Μην ξεχάσετε να κλείσετε την ετικέτα μετά.
    4. Με τον ίδιο τρόπο με πριν χωρίς να σβήσετε τα προηγούμενα εκτελέστε επίσης την εντολή ls -lart, εμφανίστε το μήνυμα Τα αρχεία στο φάκελο είναι και από κάτω εμφανίστε το αποτέλεσμα της εντολής ls -lart
    5. Ομοίως εκτελέστε την whoami και εμφανίστε το μήνυμα Είμαι ο χρήστης και δίπλα το αποτέλεσμα της εντολής whoami
      • Η whoami εμφανίζει τον χρήστη που εκτελεί την php. Εάν είναι ο www-data δηλαδή ο ίδιος ο webserver, τότε έχουμε πρόβλημα ασφάλειας.
      1. Μπορείτε να φτιάξετε ένα κενό αρχείο hacked.php στον φάκελο ενός άλλου χρήστη; Αν ναι κάντε το.
      • ΠΡΟΣΟΧΗ! Μην εκτελέσετε εντολές που δεν πρέπει γιατί μπορούν να χαθούν αρχεία άλλου χρήστη.
  3. Τυχαίες εικόνες - τερματικό
    • Θέλουμε να επιλέξουμε μία τυχαία εικόνα. Ας δούμε πως μπορεί να γίνει στο τερματικό.
    1. Ανοίξτε ένα τερματικό και μετακινηθείτε στον φάκελο που βρίσκεται το αρχείο demo.php π.χ. στον φάκελο public_html/www
    2. Εάν έχετε μία εγκατάσταση joomla στον φάκελο joomla εκτελέστε την εντολή
      find joomla -type f -name "*.jpg"
      • Θα εμφανίσει τις εικόνες .jpg που υπάρχουν εκεί.
      • Εναλλακτικά εάν έχετε εικόνες σε έναν φάκελο Εικόνες (2 φακέλους πάνω) εκτελέστε
        find ../../Εικόνες -type f -name "*.jpg"
    3. Μετρήστε τις εικόνες με την εντολή
       find joomla -type f -name "*.jpg" | wc -l
    4. Τέλος εμφανίστε π.χ. την 3η εικόνα με την εντολή
       find joomla -type f -name "*.jpg" | sed '3q;d'
  4. Τυχαίες εικόνες - PHP
    • Πάμε να χρησιμοποιήσουμε τις παραπάνω εντολές ώστε να εμφανίσουμε την τυχαία εικόνα μέσω php.
    1. Εισάγουμε τις παρακάτω εντολές στην php
      • $numofimages=shell_exec('find joomla -type f -name "*.jpg" | wc -l');
        $randomnum=rand(1, $numofimages);
        echo "Θα εμφανίσω την $randomnum" . "η από τις $numofimages εικόνες<br>";
      • Η 1η εντολή βρίσκει τον αριθμό των εικόνων και τον αποθηκεύει στην μεταβλητή $numofimages
      • Η 2η εντολή υπολογίζει έναν τυχαίο αριθμό από 1 έως $numofimages και τον αποθηκεύει στην μεταβλητή randomnum
    2. Πάμε να πάρουμε το όνομα του τυχαίου αρχείου εικόνας ώστε να το βάλουμε στην συνέχεια στην ετικέτα <img>. Εισάγετε τις παρακάτω εντολές.
      • $cmd="find joomla -type f -name \"*.jpg\" | sed '" . $randomnum . "q;d'";
        $randomimg=shell_exec($cmd);
        echo "Εκτέλεσα την εντολή <pre> $cmd </pre> <br>";
        echo "Θα εμφανίσω την εικόνα <b> $randomimg </b><br>";
      • Αρχικά έχουμε την εντολή που θα εμφανίζει μόνο μια τυχαία εικόνα από όλες, αυτήν που βρίσκεται στην γραμμή $randomnum. Αποθηκεύουμε την εντολή που θα εκτελέσουμε (δεν έχει εκτελεστεί ακόμα) στην μεταβλητή $cmd
      • Η 2η εντολή εκτελεί την $cmd και αποθηκεύει την τυχαία εικόνα στην μεταβλητή $randomimg
    3. Πλέον έχουμε την εικόνα που θέλουμε στην μεταβλητή $randomimg. Γνωρίζουμε από την html πως να εμφανίσουμε μια εικόνα. Θα χρησιμοποιήσουμε την echo της php ώστε να εισάγουμε τον html κώδικα που θα εμφανίσει την εικόνα $randomimg. ΠΡΟΣΟΧΗ! Για να εμφανίσει η echo (διπλά εισαγωγικά) θα πρέπει να τα βάζουμε ως \”
    • Εάν τα καταφέραμε, έχουμε μια ιστοσελίδα πλέον που αλλάζει συνεχώς και εικόνες.
el/school/lessons/html/ergastirio/php/execute.txt · Last modified: Y/m/d H:i by vagk