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