Βασικές γνώσεις 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 μπορεί να χρησιμοποιηθεί αυτόνομα για σχεδιασμών σεναρίων τα οποία εκτελούνται τοπικά από τον υπολογιστή σε επίπεδο γραμμής εντολών.

Καλημέρα κόσμε επεξεργασία

Ένα πρόγραμμα το οποίο καλωσορίζει το χρήστη είναι συνήθως το πρώτο πρόγραμμα που μαθαίνει ένας προγραμματιστής σε μια νέα γλώσσα προγραμματισμού. Στο παρακάτω παράδειγμα τυπώνεται στην προκαθορισμένη έξοδο το μήνυμα "Καλημέρα κόσμε!". Για να εκτελέσουμε το παραπάνω σενάριο το αποθηκεύουμε στο αρχείο hello.php και εκτελούμε από την γραμμή εντολών το php hello.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
*/

?>

Είσοδος/έξοδος στη γραμμή εντολών επεξεργασία

Για να εκτελέσουμε το παραπάνω σενάριο το αποθηκεύουμε στο αρχείο helloIO.php και εκτελούμε από την γραμμή εντολών το php helloIO.php.

  Κώδικας:

<?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].

Για όποιον γνωρίζει προγραμματισμό στην γλώσσα C θα μπορέσει να δει ομοιότητες στους παρακάτω δύο πηγαίους κώδικες ο οποίοι διαβάζουν τα περιεχόμενα δύο αρχείων κειμένου γραμμή προς γραμμή (μέσω της fgets()) και εμφανίζουν το περιεχόμενο στην οθόνη του υπολογιστή. Η συνάρτηση fgets() στην C++ βρίσκεται στην βιβλιοθήκη <stdio.h>. Για να εκτελεστεί το πρόγραμμα της C πρέπει πρώτα να γίνει εκτελέσιμο. Ας υποθέσουμε ότι ο παρακάτω κώδικας έχει αποθηκευτεί στο αρχείο "fgets_cpp.cpp". Τότε στο linux με την εντολή 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 μπορεί να έχει την παρακάτω μορφή και μπορεί να εκτελεστεί με την εντολή php fgets_php.php (θεωρώντας ότι ο παρακάτω κώδικας έχει αποθηκευτεί στο αρχείο "fgets_php.php".

Τα δύο παραπάνω προγράμματα διαβάζουν το αρχείο κειμένου myfile.txt (γραμμή προς γραμμής χρησιμοποιώντας ένα βρόχο επανάληψης while) και εμφανίζουν τα περιεχόμενα του αρχείου στην οθόνη του υπολογιστή. Ίσως οι παραπάνω κώδικες να μην είναι απόλυτα κατανοητοί αλλά φαίνεται ξεκάθαρα ότι ο προγραμματισμός στην γλώσσα PHP έχει αρκετά στοιχεία - ομοιότητες με την γλώσσα C++.

Η συνάρτηση printf() επεξεργασία
Αρχικοποιούμε την μεταβλητή $string με την συμβολοσειρά "Γειά σου κόσμε!\n" (το \n είναι ο χαρακτήρας αλλαγής γραμμής) και στον κώδικα php εμφανίζουμε την συμβολοσειρά στην προκαθορισμένη έξοδο με 3 τρόπους: με την echo, την print και την printf(..) ή οποία είναι παρόμοια με την αντίστοιχη printf() της γλώσσας προγραμματισμού C.

  Κώδικας:

<?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 μπορεί να χρησιμοποιηθεί για να σχεδιαστούν προγράμματα με γραφικό περιβάλλον μέσω του PHP-GTK [4]. Στο παρακάτω σενάριο εμφανίζεται ένα παράθυρο με τίτλο Hello World! και με ένα κουμπί με τίτλο Click Me.

  Κώδικας:

<?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();

?>

  Έξοδος:

 
Hello World PHP-GTK




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 σελίδα επεξεργασία

Ο παρακάτω κώδικας hello.php περιέχει μια βασική ιστοσελίδα html όπου εμπεριέχεται κώδικας στην γλώσσα σεναρίων php. Η επέκταση του αρχείου php, παρόλο που είναι html σελίδα θα δώσει την εντολή να κληθεί ο διερμηνέας php για την δυναμική δημιουργία της σελίδας που θα εμφανιστεί στον φυλλομετρητή.

  PHP κώδικας:

 <html>
   <head>
       <title> Γεια σου κόσμε!</title>
   </head>
   <body>
        <?php
            print "Γεια σου κόσμε!<br/>";
            print "Αυτό είναι ένα παράδειγμα ενσωματωμένου κώδικα php σε μια σελίδα html.<br/>";
        ?>
   </body>
</html>

  PHP έξοδος:

 <html>
   <head>
       <title> Γεια σου κόσμε!</title>
   </head>
   <body>
        Γεια σου κόσμε!<br/>Αυτό είναι ένα παράδειγμα html όπου έχει μέσα php!<br/>   </body>
</html>

  HTML εμφάνιση:

Γειά σου κόσμε! 
Αυτό είναι ένα παράδειγμα ενσωματωμένου κώδικα php σε μια σελίδα html.


Κλήση php σελίδας επεξεργασία

Θεωρώντας το παρακάτω κώδικα αποθηκευμένο στο php_printf.php, μέσα στον κατάλογο php μπορούμε να εκτελέσουμε τον κώδικα php μέσα από τον φυλλομετρητή καλώντας την σελίδα php_printf.php: http://localhost/php/php_printf.php

  PHP κώδικας:

 <?php

  // Όρισε μια μεταβλητή τύπου αλαφαρηθμιτικού 'string' 
  // και αρχικοποίησέ την με μια τιμή.
  $string = "Γειά σου κόσμε!\n";

  // Μπορείς να χρησιμοποιήσεις την echo για να τυπώσεις την
  // μεταβλητή στην προκαθορισμένη έξοδο.
  echo $string;

  // Μπορείς επίσης να χρησιμοποιήσεις την εντολή print.
  print $string;

  // Ή ακόμη και την συνάρτηση printf αν έχεις εμπειρία από την C.
  printf('%s', $string);

?>

  PHP έξοδος:

Γειά σου κόσμε!
Γειά σου κόσμε!
Γειά σου κόσμε!

  HTML εμφάνιση:

Γειά σου κόσμε! Γειά σου κόσμε! Γειά σου κόσμε! 
Παρατηρούμε ότι ο χαρακτήρας αλλαγής γραμμής \n μετατράπηκε σε απλό χαρακτήρα κενού χαρακτήρα (whitespace) στην html εμφάνιση.

Για να μπορέσει ο φυλλομετρητής να εμφανίζει το κείμενο με αλλαγές γραμμών στη θέση του \n βάζουμε τον κώδικα html <br/> ο οποίος υποδεικνύει στον φυλλομετρητή να εφαρμόζει αλλαγή γραμμής.

  PHP κώδικας:

 <?php

  // Όρισε μια μεταβλητή τύπου αλαφαρηθμιτικού 'string' 
  // και αρχικοποίησέ την με μια τιμή. 
  // Ο κώδικας <br/> στην html είναι ο χαρακτήρας αλλαγής γραμμής.
  $string = "Γειά σου κόσμε!<br/>";

  // Μπορείς να χρησιμοποιήσεις την echo για να τυπώσεις την
  // μεταβλητή στην προκαθορισμένη έξοδο.
  echo $string;

  // Μπορείς επίσης να χρησιμοποιήσεις την εντολή print.
  print $string;

  // Ή ακόμη και την συνάρτηση printf αν έχεις εμπειρία από την C.
  printf('%s', $string);

?>

  PHP έξοδος:

Γειά σου κόσμε!<br/>Γειά σου κόσμε!<br/>Γειά σου κόσμε!<br/>

  HTML εμφάνιση:

Γειά σου κόσμε!
Γειά σου κόσμε!
Γειά σου κόσμε!
Στην ιστοσελίδα παρουσιάζεται η επιθυμητή έξοδος όπου το <br/> δηλώνει την αλλαγή γραμμής.

Βασική είσοδος/έξοδος με φόρμα και PHP σε μια html σελίδα επεξεργασία

Το παρακάτω πρόγραμμα είναι μια φόρμα [5] η οποία χρησιμοποιεί κώδικα html μαζί με κώδικα php για να πάρει ως είσοδο το όνομα και στην συνέχεια να εμφανίσει ένα μήνυμα καλωσορίσματος [6].
<?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>
Το πρόγραμμα αποθηκεύεται στο αρχείο form_html_php.php. Προσέξτε ότι στον κώδικα html της φόρμας καλείται ο ίδιος κώδικας php.


Ας προσπαθήσουμε να απομυθοποιήσουμε το παραπάνω κομμάτι κώδικα. Η γλώσσα html παρέχει ένα μηχανισμό στον προγραμματιστή για να δημιουργεί φόρμες από τις οποίες ο χρήστης εισάγει δεδομένα και στην συνέχεια να καλείται κάποιο σενάριο επεξεργασίας αυτών. Στο παραπάνω παράδειγμα καλούμε ένα απλό σενάριο επεξεργασίας σε γλώσσα php. Μια μια φόρμα θα μπορούσαμε με τον ίδιο τρόπο να καλέσουμε την εκτέλεση κώδικα perl μέσω cgi σεναρίου ή ASP κλπ. Εδώ η φόρμα καλεί το ίδιο το αρχείο και χρησιμοποιώντας κώδικα php διαμορφώνει ένα μήνυμα καλωσορίσματος το οποίο εμφανίζει στον φυλλομετρητή. Ένα πιο εξελιγμένο σενάριο θα μπορούσε να πάρει την είσοδο και να εκτελέσει λειτουργίες ανάκτησης πληροφοριών από μια βάση δεδομένων η οποία τρέπει στον εξυπηρετητή ιστοσελίδων ή να ανακτήσει δεδομένα από τον σκληρό δίσκο του εξυπηρετητή (π.χ. πολυμεσικά στοιχεία όπως εικόνες, ήχους ή βίντεο). [7]

Παραπομπές επεξεργασία