Βασικές γνώσεις PHP και MySQL/Εισαγωγή στην PHP
Η γλώσσα PHP (είναι ανοικτό-ελεύθερο λογισμικό) μπορεί να εγκατασταθεί σχεδόν σε όλα τα λειτουργικά συστήματα όπως Windows, Linux, Mac OS X, Risc OS κλπ αλλά και υποστηρίζεται και από τα περισσότερους εξυπηρετητές ιστοσελίδων όπως ο Apache ή ο IIS. Η php μπορεί να λειτουργήσει είτε ως εγκατεστημένη μονάδα (module) στον εξυπηρετητή ιστοσελίδων είτε μέσω ενός επεξεργαστή CGI σεναρίων. Η PHP μπορεί να χρησιμοποιηθεί για εκτέλεση σεναρίων (scripts) από την πλευρά του απομακρυσμένου εξυπηρετητή ιστοσελίδων όπως γίνεται και με τα σενάρια CGI. Επίσης η php μπορεί να χρησιμοποιηθεί για είσοδο/έξοδο δεδομένων από τον χρήστη ή για την δυναμική δημιουργία σελίδων.
- Σενάρια PHP σε ένα απομακρυσμένο εξυπηρετητή ιστοσελίδων: Αυτή είναι η κύρια χρήση της γλώσσας PHP. Η γλώσσα PHP βρίσκεται εγκαταστημένη είτε ως module στο εξυπηρετητή ιστοσελίδων είτε εκτελείται μέσω ενός CGI σεναρίου και χρησιμοποιείται δια μέσου ενός φυλλομετρητή από τον υπολογιστή του πελάτη-χρήστη.
- Χρήση της PHP σε επίπεδο γραμμής εντολών (command line): Ένα σενάριο PHP μπορεί να εκτελεστεί μέσω του διερμηνέα PHP τοπικά στον υπολογιστή χωρίς να χρειάζεται να μεσολαβήσει ένας εξυπηρετητής ιστοσελίδων.
- Εφαρμογές με την γλώσσα PHP: Αν και δεν συνηθίζεται, μπορούν να φτιαχτούν προγράμματα με γραφικό περιβάλλον (π.χ. χρησιμοποιώντας το PHP-GTK) που να τρέχουν κατευθείαν στον υπολογιστή πελάτη τα οποία είναι ανεξάρτητα πλατφόρμας.
Το συντακτικό της PHP είναι βασισμένο στην σύνταξη της γλώσσας C, Java και Perl και είναι εύκολη στην εκμάθηση.
Το πρώτο πρόγραμμα σε PHP
[επεξεργασία]PHP στην γραμμή εντολών
[επεξεργασία]Αν και ο σκοπός του βιβλίου αυτού είναι ο σχεδιασμός δυναμικών ιστοσελίδων με PHP και MySQL, θα δείξουμε στο πρώτο παράδειγμα πως η γλώσσα PHP μπορεί να χρησιμοποιηθεί αυτόνομα για σχεδιασμών σεναρίων τα οποία εκτελούνται τοπικά από τον υπολογιστή σε επίπεδο γραμμής εντολών.
Καλημέρα κόσμε
[επεξεργασία]<?php
echo "Καλημέρα κόσμε!";
?>
Καλημέρα κόσμε!
<?php /*
* This is needed for cookie based authentication to encrypt password in * cookie */
$cfg['blowfish_secret'] = 'xampp'; /* YOU SHOULD CHANGE THIS FOR A MORE SECURE COOKIE AUTH! */
/*
* Servers configuration */
$i = 0;
/*
* First server */
$i++;
/* Authentication type and info */ $cfg['Servers'][$i]['auth_type'] = 'config'; $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = ; $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['AllowNoPassword'] = true; $cfg['Lang'] = ;
/* Bind to the localhost ipv4 address and tcp */ $cfg['Servers'][$i]['host'] = '127.0.0.1:3308'; $cfg['Servers'][$i]['connect_type'] = 'tcp';
/* User for advanced features */ $cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = ;
/* Advanced phpMyAdmin features */ $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; $cfg['Servers'][$i]['relation'] = 'pma__relation'; $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma__column_info'; $cfg['Servers'][$i]['history'] = 'pma__history'; $cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords'; $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig'; $cfg['Servers'][$i]['recent'] = 'pma__recent'; $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs'; $cfg['Servers'][$i]['users'] = 'pma__users'; $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding'; $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches'; $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns'; $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings'; $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates'; $cfg['Servers'][$i]['favorite'] = 'pma__favorite';
/*
* End of servers configuration */
?>
Είσοδος/έξοδος στη γραμμή εντολών
[επεξεργασία]<?php
echo "Καλώς ήρθες στο πρώτο πρόγραμμα στην PHP!\n";
echo "Ποιο είναι το όνομά σου;\n";
$name = trim(fgets(STDIN));
echo "Γεια σου " . $name . "!\n";
?>
ggia@ubuntu:~/php$ php helloIO.php Καλώς ήρθες στο πρώτο πρόγραμμα στην PHP! Ποιο είναι το όνομά σου; Γιώργος Γεια σου Γιώργος!
Βασικά στοιχεία της PHP από το παραπάνω παράδειγμα:
- Το πρόγραμμα ξεκινά και τελειώνει με <?php και <?.
- Η εντολή echo τυπώνει ένα μήνυμα στην έξοδο (οθόνη).
- Η $name είναι η μεταβλητή name. Στην γλώσσα php οι μεταβλητές ξεκινάνε με τον χαρακτήρα $.
- Η εντολή trim(fgets(STDIN)) διαβάσει από την καθορισμένη είσοδο (STDIN) μια συμβολοσειρά (string) με το όνομά μας το οποίο αποθηκεύεται στην μεταβλητή name.
- Ο τελεστής . ενώνει δύο ή περισσότερες συμβολοσειρές σε μια μεγαλύτερη. Η συμβολοσειρά "Γειά σου " συνενώνεται με την συμβολοσειρά που περιέχει η μεταβλητή name μαζί με την συμβολοσειρά "!\n";
- Το \n είναι ο χαρακτήρας αλλαγής γραμμής (newline).
- Το ; ερωτηματικό δηλώνει τέλος της εντολής.
Η συνάρτηση fgets()
[επεξεργασία]Η συνάρτηση fgets() είναι μια συνάρτηση στην php η οποία διαβάζει μια γραμμή από κάποιο δείκτη (εδώ είναι το STDIN που είναι η καθορισμένη είσοδος - δηλαδή το πληκτρολόγιο). [1] Ο χρήστης εισάγει το όνομα και μόλις πατήσει το <enter> εισάγεται ο χαρακτήρας αλλαγής γραμμής και διαβάζεται η συμβολοσειρά μέσα στην μεταβλητή $name. Η συνάρτηση fgets() είναι αντίστοιχη της fgets() στην γλώσσα προγραμματισμού C [2].
gcc fgets_cpp.cpp -o fgets_cpp
δημιουργείται το εκτελέσιμο αρχείο fgets_cpp
το οποίο μπορεί να εκτελεστεί με το ./fgets_cpp
από την γραμμή εντολών.
#include <stdio.h>
int main() {
FILE * handle;
char mystring [100];
handle = fopen ("myfile.txt" , "r");
if (handle == NULL)
perror ("Error opening file myfile.txt");
else {
while (fgets(mystring, 100, handle) != NULL)
// Γράφει τον πίνακα mystring στην καθορισμένη έξοδο stdout (οθόνη)
fputs (mystring,stdout);
fclose (handle);
}
return 0;
}
Σε PHP:
<?php
$handle = @fopen("myfile.txt", "r");
if ($handle) {
while (($mystring = fgets($handle, 100)) !== false) {
echo $buffer;
}
if (!feof($handle)) {
echo "Error opening file myfile.txt\n";
}
fclose($handle);
}
?>
php fgets_php.php
(θεωρώντας ότι ο παρακάτω κώδικας έχει αποθηκευτεί στο αρχείο "fgets_php.php".
Τα δύο παραπάνω προγράμματα διαβάζουν το αρχείο κειμένου myfile.txt (γραμμή προς γραμμής χρησιμοποιώντας ένα βρόχο επανάληψης while) και εμφανίζουν τα περιεχόμενα του αρχείου στην οθόνη του υπολογιστή. Ίσως οι παραπάνω κώδικες να μην είναι απόλυτα κατανοητοί αλλά φαίνεται ξεκάθαρα ότι ο προγραμματισμός στην γλώσσα PHP έχει αρκετά στοιχεία - ομοιότητες με την γλώσσα C++.
Η συνάρτηση printf()
[επεξεργασία]<?php
// Όρισε μια μεταβλητή τύπου αλαφαρηθμιτικού 'string'
// και αρχικοποίησέ την με μια τιμή.
$string = "Γειά σου κόσμε!\n";
// Μπορείς να χρησιμοποιήσεις την echo για να τυπώσεις την
// μεταβλητή στην προκαθορισμένη έξοδο.
echo $string;
// Μπορείς επίσης να χρησιμοποιήσεις την εντολή print.
print $string;
// Ή ακόμη και την συνάρτηση printf αν έχεις εμπειρία από την C.
printf('%s', $string);
?>
ggia@ubuntu:~/php$ php php_printf.php Γειά σου κόσμε! Γειά σου κόσμε! Γειά σου κόσμε!
Η συνάρτηση echo και print είναι σχεδόν οι ίδιες αλλά υπάρχουν μερικές διαφορές. Η συνάρτηση echo μπορεί να πάρει περισσότερες από μια παραμέτρους και δεν επιστρέφει καμία τιμή ενώ η print παίρνει μόνο μια παράμετρο. [3] Από πλευράς απόδοσης είναι καλύτερη η echo η οποία μπορεί να πάρει περισσότερες από μια παραμέτρους. Για παράδειγμα ο κώδικας echo "Καλημέρα" . " " . "κόσμε!";
όπου χρησιμοποιείται ο τελεστής πρόσθεσης . θα μπορούσε να γραφτεί απλούστερα και αποδοτικότερα χρησιμοποιώντας παράμετρο echo "Καλημέρα", " ", "κόσμε!";
.
PHP-GTK παράειγμα
[επεξεργασία]<?php
function pressed() {
echo "Hello again - The button was pressed!\n";
}
$window = new GtkWindow();
$button = new GtkButton('Click Me');
$window->set_title('Hello World!');
$window->connect_simple('destroy', array('Gtk', 'main_quit'));
$button->connect_simple('clicked', 'pressed');
$window->add($button);
$window->show_all();
Gtk::main();
?>
PHP στον εξυπηρετητή ιστοσελίδων
[επεξεργασία]Αν έχουμε ακολουθήσει τα βήματα της ενότητας Εγκατάσταση PHP και MySQL ο κεντρικός κατάλογος όπου τα αρχεία εξυπηρετητή ιστοσελίδων Apache είναι ο /var/www. Μπορούμε εναλλακτικά να φτιάξουμε ένα directory στο προσωπικό φάκελό μας π.χ. να τον ονομάσουμε php και στην συνέχεια να φτιάξουμε ένα συμβολικό σύνδεσμο στον κατάλογο αυτό μέσα στο /var/www. Συγκεκριμένα αφού πάμε στον κατάλογο cd /var/wwww
, τρέχουμε με ιδιότητα διαχειριστή sudo ln -s ~{user name}/php php
(το {user name}
είναι το όνομα χρήστη στο linux). Κατόπιν ανοίγουμε την ιστοσελίδα http://localhost/php
η οποία δείχνει τον κατάλογο php που έχουμε δημιουργήσει στον προσωπικό μας κατάλογο.
PHP μέσα σε μια html σελίδα
[επεξεργασία] <html>
<head>
<title> Γεια σου κόσμε!</title>
</head>
<body>
<?php
print "Γεια σου κόσμε!<br/>";
print "Αυτό είναι ένα παράδειγμα ενσωματωμένου κώδικα php σε μια σελίδα html.<br/>";
?>
</body>
</html>
<html>
<head>
<title> Γεια σου κόσμε!</title>
</head>
<body>
Γεια σου κόσμε!<br/>Αυτό είναι ένα παράδειγμα html όπου έχει μέσα php!<br/> </body>
</html>
Γειά σου κόσμε! Αυτό είναι ένα παράδειγμα ενσωματωμένου κώδικα php σε μια σελίδα html.
Κλήση php σελίδας
[επεξεργασία] <?php
// Όρισε μια μεταβλητή τύπου αλαφαρηθμιτικού 'string'
// και αρχικοποίησέ την με μια τιμή.
$string = "Γειά σου κόσμε!\n";
// Μπορείς να χρησιμοποιήσεις την echo για να τυπώσεις την
// μεταβλητή στην προκαθορισμένη έξοδο.
echo $string;
// Μπορείς επίσης να χρησιμοποιήσεις την εντολή print.
print $string;
// Ή ακόμη και την συνάρτηση printf αν έχεις εμπειρία από την C.
printf('%s', $string);
?>
Γειά σου κόσμε! Γειά σου κόσμε! Γειά σου κόσμε!
Γειά σου κόσμε! Γειά σου κόσμε! Γειά σου κόσμε!
Για να μπορέσει ο φυλλομετρητής να εμφανίζει το κείμενο με αλλαγές γραμμών στη θέση του \n βάζουμε τον κώδικα html <br/> ο οποίος υποδεικνύει στον φυλλομετρητή να εφαρμόζει αλλαγή γραμμής.
<?php
// Όρισε μια μεταβλητή τύπου αλαφαρηθμιτικού 'string'
// και αρχικοποίησέ την με μια τιμή.
// Ο κώδικας <br/> στην html είναι ο χαρακτήρας αλλαγής γραμμής.
$string = "Γειά σου κόσμε!<br/>";
// Μπορείς να χρησιμοποιήσεις την echo για να τυπώσεις την
// μεταβλητή στην προκαθορισμένη έξοδο.
echo $string;
// Μπορείς επίσης να χρησιμοποιήσεις την εντολή print.
print $string;
// Ή ακόμη και την συνάρτηση printf αν έχεις εμπειρία από την C.
printf('%s', $string);
?>
Γειά σου κόσμε!<br/>Γειά σου κόσμε!<br/>Γειά σου κόσμε!<br/>
Γειά σου κόσμε! Γειά σου κόσμε! Γειά σου κόσμε!
Βασική είσοδος/έξοδος με φόρμα και PHP σε μια html σελίδα
[επεξεργασία]<?php
if (isset($_POST['name'])) {
$name = $_POST['name'];
if (!empty($name)) {
$sentence = $name . " γειά σου!";
echo $sentence;
}
else {
echo 'Παρακαλώ εισάγετε όνομα πριν πατήσετε το κουμπί!';
}
}
?>
<html>
<meta charset="UTF-8">
<head>
</head>
<body>
<form action="form_html_php.php" method="POST">
Παρακαλώ βάλτε το όνομά σας: <br><input type="text" name="name"><br>
<input type="submit" value="Αποστολή">
</form>
</body>
</html>
Ας προσπαθήσουμε να απομυθοποιήσουμε το παραπάνω κομμάτι κώδικα. Η γλώσσα html παρέχει ένα μηχανισμό στον προγραμματιστή για να δημιουργεί φόρμες από τις οποίες ο χρήστης εισάγει δεδομένα και στην συνέχεια να καλείται κάποιο σενάριο επεξεργασίας αυτών. Στο παραπάνω παράδειγμα καλούμε ένα απλό σενάριο επεξεργασίας σε γλώσσα php. Μια μια φόρμα θα μπορούσαμε με τον ίδιο τρόπο να καλέσουμε την εκτέλεση κώδικα perl μέσω cgi σεναρίου ή ASP κλπ. Εδώ η φόρμα καλεί το ίδιο το αρχείο και χρησιμοποιώντας κώδικα php διαμορφώνει ένα μήνυμα καλωσορίσματος το οποίο εμφανίζει στον φυλλομετρητή. Ένα πιο εξελιγμένο σενάριο θα μπορούσε να πάρει την είσοδο και να εκτελέσει λειτουργίες ανάκτησης πληροφοριών από μια βάση δεδομένων η οποία τρέπει στον εξυπηρετητή ιστοσελίδων ή να ανακτήσει δεδομένα από τον σκληρό δίσκο του εξυπηρετητή (π.χ. πολυμεσικά στοιχεία όπως εικόνες, ήχους ή βίντεο). [7]
Παραπομπές
[επεξεργασία]- ↑ http://php.net/manual/en/function.fgets.php
- ↑ http://www.cplusplus.com/reference/clibrary/cstdio/fgets/
- ↑ http://www.diffen.com/difference/Echo_(PHP)_vs_Print_(PHP)
- ↑ http://el.wikipedia.org/wiki/PHP-GTK
- ↑ http://www.w3.org/TR/html4/interact/forms.html
- ↑ http://www.youtube.com/watch?v=vW7nyWOnWYs
- ↑ http://www.javascript-coder.com/html-form/html-form-tutorial-p1.phtml