Εφαρµογές διαδικτύου µε PHP



Σχετικά έγγραφα
Δρ. Δημήτριος Α. Κουτσομητρόπουλος. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Α.Τ.Ε.Ι. Πάτρας

Web Programming for Dummies

Τεχνολογίες Διαδικτύου. Server Side Scripting I PHP

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

Injection Attacks. Protocol Host FilePath. field1=valuex&field2=valuey. Query String. Web server HTTP GET.

5 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: προχωρημένα θέματα PHP

Θέματα Προγραμματισμού Διαδικτύου ~ MySQL & PHP ~

PHP/MySQL και Project

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Εισαγωγή στο PHP. Τί είναι το PHP. Σταύρος Πολυβίου

Social Network : Programming on FACEBOOK

Εργαστήριο 6. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο. Στόχος. Προετοιμασία περιβάλλοντος εργασίας. a) Εκκίνηση XAMPP

ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ web εφαρµογής - ηλεκτρονικού κατατήµατος για έξυπνα κινητά

Εργαστήριο #10 (Ε10) 1

ΠΑΡΟΥΣΙΑΣΗ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ H ΕΞΑΜΗΝΟ

Άσκηση 5 -Δηµιουργία ιστοσελίδων µε HTML µέρος 5 ο

Εργαστήριο 9. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο. Στόχος. Προετοιμασία περιβάλλοντος εργασίας

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΡΗΤΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε.

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό Ενότητα 3: Server Side Scripting II PHP & MySQL

Θέμα Πτυχιακής: ΔΙΑΔΙΚΑΣΙΑ ΠΙΣΤΟΠΟΙΗΣΗΣ ΧΡΗΣΤΩΝ ΜΕΣΩ PHP!

Εισαγωγή στην Ανάπτυξη Εφαρμογών Web με Χρήση της Python, του Apache και του mod_python

6 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: προχωρημένα θέματα PHP

Συλλογή και Επεξεργασία Δεδομένων με Φόρμες

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ. 3 η Γραπτή Εργασία ΠΛΗ 23 Ακαδημαϊκό Έτος ( Τόμος Β Κεφάλαια 1 4 ) Ημερομηνία Παράδοσης 25.3.

2. ΕΙΣΑΓΩΓΗ ΣΤΗΝ HTML ΓΙΩΡΓΟΣ ΓΙΑΝΝΑΚΑΚΗΣ, ΜΑΝΩΛΗΣ ΤΣΙΚΝΑΚΗΣ

Τ.Ε.Ι ΚΑΒΑΛΑΣ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΛΗΡΟΦΟΡΙΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Ιστορία της PHP

ΕΡΓΑΣΙΑ. (στο µάθηµα: Τεχνολογίες Εφαρµογών ιαδικτύου του Η εξαµήνου σπουδών του Τµήµατος Πληροφορικής & Τηλ/νιών)

στην πλευρά του εξυπηρετητή

ΠΡΟΣΟΧΗ: Οι απαντήσεις πολλαπλής επιλογής µόνο πάνω στο ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ

ΠΡΟΣΟΧΗ: Οι απαντήσεις πολλαπλής επιλογής µόνο πάνω στο ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ

ΕΡΓΑΣΙΑ. (στο μάθημα: Τεχνολογίες Εφαρμογών Διαδικτύου του Η εξαμήνου σπουδών του Τμήματος Πληροφορικής & Τηλ/νιών)

Τεχνολογίες Ανάπτυξης Εφαρμογών στο WEB

Σύστημα διαχείρισης περιεχομένου (Content Management System)

Εργαστήριο 8. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο

ΠΛΗΡΟΦΟΡΙΑΚΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΚΑΤΑΣΚΕΥΗΣ ΚΑΙ ΑΝΑΚΑΙΝΙΣΗΣ ΑΚΙΝΗΤΩΝ

Προγραμματισμός Παγκόσμιου Ιστού

Προγραμματισμός Διαδικτύου

10 η Διάλεξη Python Βάσεις δεδομένων στη python

ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ PHP

PHP 2. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

databases linux - terminal (linux / windows terminal)

Η HTML χρησιμοποιεί εντολές που ονομάζονται HTML tags δίνοντας εντολές στους Web browsers για το πώς να εμφανίζουν την κάθε ιστοσελίδα.

Εφαρµογή: Σύστηµα ιαχείρισης ιαδικτυακού Περίπτερου / Ιστοσελίδας στον διαδικτυακό τόπο kalliergea.gr

PHP 1. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ ΙΑ ΙΚΤΥΑΚΟΥ ΠΛΗΡΟΦΟΡΙΑΚΟΎ ΣΥΣΤΗΜΑΤΟΣ. Τρίτη, 7 Φεβρουαρίου 2012

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

Φορολογική Βιβλιοθήκη. Θανάσης Φώτης Προγραμματιστής Εφαρμογών

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

ΑΣΚΗΣΗ. Συγκομιδή και δεικτοδότηση ιστοσελίδων

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος Κεφάλαιο 1 ο Αρχές Διαχείρισης πληροφορίας στον Παγκόσμιο Ιστό... 15

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Προγραμματισμός διαδικτυακών εφαρμογών με PHP

ΣΗΜΕΙΩΣΕΙΣ. Ενότητα 1.1 Ιστορία της PHP. Ενότητα 1.2 Πλεονεκτήματα της PHP

Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων

για την Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών»

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 1 17/01/2012

ΣΥΣΤΗΜΑ ΠΑΡΑΚΟΛΟΥΘΗΣΗΣ ΑΕΡΟΣΩΜΑΤΙ ΙΑΚΗΣ ΡΥΠΑΝΣΗΣ ΣΕ ΣΧΕ ΟΝ ΠΡΑΓΜΑΤΙΚΟ ΧΡΟΝΟ

Σχεδιασμός και ανάπτυξη διαδικτυακής εφαρμογής για οργάνωση ξενοδοχείων

Υποβολή Αναλώσιµων Υλικών ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Ηλεκτρονικές Υπηρεσίες. Υποβολή Αναλώσιμων Υλικών. Σελίδα 1


Τεχνολογίες Διαδικτύου

Κατανεμημένα Συστήματα. Javascript LCR example

Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών

Μηχανή αναζήτησης βασισμένη σε AJAX και Soundex. Πτυχιακή Εργασία

NetBeans και σχετικά προγράμματα. Κακαρόντζας Γεώργιος Κέντρο Αριστείας Ανοιχτού Λογισμικού ΑΠΘ 1ο Θερινό Σχολείο Κώδικα

ΑΝΩΤΑΤΟ ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΡΙΣΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

ΘΕΜΑ ΠΤΥΧΙΑΚΗΣ : ΜΗΧΑΝΙΣΜΟΙ ΣΥΛΛΟΓΗΣ ΣΤΟΙΧΕΙΩΝ ΣΤΟ ΔΙΑΔΥΚΤΙΟ (COOKIES)

Application Security. Dimitris Mitropoulos

Φόρμες. Γενικοί κανόνες. Η ετικέτα <form>

ΕΡΓΑΣΙΑ. (στο μάθημα: Τεχνολογίες Εφαρμογών Διαδικτύου του Η εξαμήνου σπουδών του Τμήματος Πληροφορικής & Τηλ/νιών)

Λευτέρης Κουμάκης ΠΟΛΥΜΕΣΙΚΕΣ ΥΠΗΡΕΣΙΕΣ ΣΤΗΝ ΥΓΕΙΑ

1.1 ιαδίκτυο και Εφαρµογές Τοπικές Εφαρµογές ικτυακές Εφαρµογές ιαδικτυακές Εφαρµογές... 8

PHP Functions. by George Girtsou Copyright All Rights Reserved. Με την επιφύλαξη κάθε νόμιμου δικαιώματος.

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Το διαδίκτυο είναι ένα δίκτυο που αποτελείτε από πολλά μικρότερα δίκτυα υπολογιστών.

Μέρος Ι: Εγκατάσταση και ιαμόρφωση των MySQL, Apache και PHP

Οδηγός Σύνδεσης στο Ασύρματο Δίκτυο cs-wifi του Τμήματος Πληροφορικής του Πανεπιστημίου Κύπρου για Windows 7, CentOS 6, Mac OS, IOS, και Android

Υλοποίηση δυναµικής ιστοσελίδας αποστολής και διαχείρισης φωτογραφιών µε τεχνολογίες ανοιχτού λογισµικού (PHP, MySQL, Apache HTTP server)

Παρουσίαση PHP. Μιχάλης Ζήσης GreekLUG

ιαχείριση Πληροφοριών στο ιαδίκτυο

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 8 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: Τεχνολογία Java Server Pages (JSP)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

ΜΕΡΟΣ ΠΡΩΤΟ: Θεωρητική Προσέγγιση...15

Βασικές Έννοιες Web Εφαρμογών

Α.Τ.Ε.Ι. ΚΑΒΑΛΑΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Π Τ Υ Χ Ι Α Κ Η Ε Ρ Γ Α Σ Ι Α

ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Συστήματα Διαχείρισης Βάσεων Δεδομένων

Προγραμματισμός Διαδικτύου

Μονάδα Διασφάλισης Ποιότητας. ΜΟΔΙΠ Πανεπιστημίου Δυτικής Μακεδονίας. Κωδικός Πράξης ΟΠΣ: Επιχειρησιακό Πρόγραμμα:

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

TEC510 Ανάπτυξη Δικτυακών Τόπων (Ε εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Επιστημονικός συνεργάτης Εργαστηρίου: Γιώργος Μηλιώτης

ΔΟΜΗ. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Διαβάστε στο Παράρτημα Α.1 πώς θα γράψετε ένα πρόγραμμα PHP για την παροχή δεδομένων σε μορφή διαφορετική από την HTML.

Τεχνολογίες ιαδικτύου

ΑΝΑΠΤΥΞΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΙΣΤΟΤΟΠΟΥ ΕΠΙΚΟΙΝΩΝΙΑΣ ΓΙΑ ΤΗΝ ΑΝΑΖΗΤΗΣΗ ΕΡΓΑΣΙΑΣ/ΠΡΟΣΩΠΙΚΟΥ

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Μετάφραση: Καζακώνης Αναστάσιος ΙΟΥΝΙΟΣ 2005

Transcript:

Εφαρµογές διαδικτύου µε PHP Σταύρος Πολυβίου Αρχιτεκτονική τριών επιπέδων (three-tier architecture) SQL HTTP request Αποτελέσµατα (πίνακες) PHP HTML Σύστηµα διαχείρισης δεδοµένων (Database Management System) Εξυπηρετητής διαδικτύου + PHP (Web Server + PHP) Φυλλοµετρητής (Web Browser) 1

MySQL και PHP Το MySQL είναι ένα open source σχεσιακό σύστηµα διαχείρισης δεδοµένων Είναι µία πολύ δηµοφιλής επιλογή για τη δηµιουργία δυναµικών σελίδων λόγω Χαµηλού κόστους ιαρκώς αυξανόµενων δυνατοτήτων Συχνά γίνεται λόγος για την open source πλατφόρµα ανάπτυξηςδυναµικών ιστοσελίδων LAMP: Linux + Apache + MySQL + PHP Σύνδεση µε MySQL και επιλογή βάσης Γενική µορφή mysql_connect ( string server, string user, string password) server: user: password: URI MySQL βάσης Όνοµα χρήστη Κωδικός χρήστη Επιστρέφει ένα resource που αντιπροσωπεύει τη σύνδεσή µας µε τη βάση MySQL. Παράδειγµα $conn = mysql_connect( myserver.com:3307', username', password'); Στη συνέχεια χρειάζεται να επιλέξουµε τη βάση πάνω στον MySQL server µε την οποία θα ενωθούµε bool mysql_select_db ( string database_name, resource connection) db_name: connection: Το όνοµα τηςβάσηςµε την οποία θα ενωθούµε Το connection ππυ πήραµε απότοmysql_connect 2

Εκτέλεση κώδικα SQL Γενική µορφή mysql_query (string query_string, resource connection_id) query_string: οκώδικαςsql που θέλουµε να εκτελέσουµε connection_id:το resource που αντιπροσωπέυει τη σύνδεσή µας µε τηmysql βάση αν παραληφθεί, χρηισιµοποιείται η τελευταία σύνδεση που µας έδωσε το mysql_connect() Επιστρέφει ένα resource που αντιπροσωπεύει το αποτέλεσµα της SQL Σε περίπτωση error επιστρέφει false Εκτέλεση κώδικα SQL Παράδειγµα 1 $conn = mysql_connect( myserver.com:3037, username, password ); $db_selected = mysql_select_db( mydb', $conn); $sql = "SELECT * FROM customers"; $result = mysql_query($sql, $conn); Παράδειγµα 2 µε error message $conn = mysql_connect(my_database', username', password'); $db_selected = mysql_select_db( mydb', $conn); $sql = "SELECT CompanyName, ContactName FROM customers"; $result = mysql_query($sql, $conn) or die( An error occurred :.mysql_error()); 3

Εξαγωγή αποτελεσµάτων SQL Όπως γνωρίζετε το αποτέλεσµα µίας επερώτησης σε SQL είναι ένας πίνακας Αυτότοαποτέλεσµα τολαµβάνουµε σειράµε σειρά Κάθε σειρά αποτελείται από στήλες τις τιµές των οποίων αναθέτουµε σεµεταβλητές Επαναλαµβάνουµε τη διαδικασία µέχρις ώτου εξαντληθούν οι σειρές του πίνακα Πλήρες παράδειγµα MySQL $conn = mysql_connect( myserver.com:3037, username', password'); // Σύνδεση µε τηβάση if (!$conn) exit("connection Failed: ". $conn); // Εντοπισµός και αντίδραση σε πρόβληµα σύνδεσης // Επιλογή βάσης $db_selected = mysql_select_db( mydb', $conn) or die ('Can\'t use mydb : '. mysql_error()); $sql = "SELECT CompanyName, ContactName FROM customers"; // Κώδικας SQL προς εκτέλεση $results = mysql_query($sql, $conn); // Προπαρασκευή και εκτέλεση κώδικα SQL if (!$result) exit("error in SQL"); // Εντοπισµός και αντίδραση σε πρόβληµα εκτέλεσης 4

echo "<table><tr>"; // Πρόλογος πίνακα αποτελεσµάτων echo "<th>companyname</th>"; // Επικεφαλίδες πίνακα αποτελεσµάτων: τα ονόµατα των στηλών echo "<th>contactname</th></tr>"; while (mysql_fetch_row($result)) // Ανάκτηση της επόµενης σειράς. ίνει true όσο υπάρχουν σειρές. { } $compname = $result[0] ; // Ανάκτηση τιµής πρώτης στήλης $conname = $result[1] ; // Ανάκτηση τιµής δεύτερης στήλης echo "<tr><td>$compname</td>"; // υναµικές σειρές πίνακα HTML ο αριθµός και το περιεχόµενο echo "<td>$conname</td></tr>"; // τους δυνατό να διαφέρει από εκτέλεση σε εκτέλεση mysql_free_result($result); // Αποδέσµευση resource αποτελέσµατος mysql_close($conn); // Αποδέσµευση resource σύνδεσης echo "</table>"; // Επίλογος πίνακα αποτελεσµάτων Το ODBC Το ODBC (Open DataBase Connectivity) είναι ένα σύνολο APIs της Microsoft Ανοικτό για υλοποίηση από τρίτους Ένα σύστηµα διαχείρισης δεδοµένων εγκαθιστάτοδικότουodbc driver το οποίο υλοποιεί το ODBC API και λειτουργεί ως µεσάζων µεταξύ του συστήµατος και των εφαρµογών Όλα τα µεγάλα συστήµατα έχουν κάποιο ODBC driver, π.χ. Oracle, IBM DB2, Microsoft SQL Server κ.α. 5

Το ODBC και το PHP Το PHP παρέχει µία σειρά από ρουτίνες που υλοποιούν το API του ODBC Με αυτό τον τρόπο µπορούµε να ενωθούµε µε οποιοδήποτε σύστηµα διαχείρισης δεδοµένων το οποίο έχει εγγράψει το ODBC driver του Οι ρουτίνες αυτές για πολλά συστήµατα παρακάµπτουν το ODBC driver και λειτουργούν ως wrappers γύρω από το API του ίδιου του συστήµατος Συνεπώς εξασφαλίζεται τόσο η απόδοση (performance) όσοκαιηευκολίαµετεγκατάστασης (portability) Σύνδεση µε βάσηδεδοµένων Γενική µορφή odbc_connect ( string dsn, string user, string password) dsn: user: password: Όνοµα ODBC driver βάσης Όνοµα χρήστη Κωδικός χρήστη Επιστρέφει ένα resource που αντιπροσωπεύει τη σύνδεσή µας µε τηβάση. Παράδειγµα $conn = odbc_connect( my_database', username', password'); 6

Εκτέλεση κώδικα SQL Γενική µορφή odbc_exec ( resource connection_id, string query_string) connection_id:το resource που αντιπροσωπέυει τη σύνδεσή µας µε τη βάση query_string: ο κώδικας SQL που θέλουµε να εκτελέσουµε Επιστρέφει ένα resource που αντιπροσωπεύει το αποτέλεσµα τηςsql Σε περίπτωση error επιστρέφει false Εκτέλεση κώδικα SQL Παράδειγµα 1 $conn = odbc_connect(my_database', username', password'); $sql = "SELECT * FROM customers"; $result = odbc_exec($conn,$sql); Παράδειγµα 2 µε error message $conn = odbc_connect(my_database', username', password'); $sql = "SELECT CompanyName, ContactName FROM customers"; $result = odbc_exec($conn,$sql) or die( An error occurred :.odbc_errormsg()); 7

$conn = odbc_connect( my_database', username', password'); // Σύνδεση µε τηβάση if (!$conn) exit("connection Failed: ". $conn); // Εντοπισµός και αντίδραση σε πρόβληµα σύνδεσης $sql = "SELECT CompanyName, ContactName FROM customers"; // Κώδικας SQL προς εκτέλεση $results = odbc_exec($conn,$sql); // Προπαρασκευή και εκτέλεση κώδικα SQL if (!$result) exit("error in SQL"); // Εντοπισµός και αντίδραση σε πρόβληµα εκτέλεσης echo "<table><tr>"; // Πρόλογος πίνακα αποτελεσµάτων echo "<th>companyname</th>"; // Επικεφαλίδες πίνακα αποτελεσµάτων: τα ονόµατα των στηλών echo "<th>contactname</th></tr>"; while (odbc_fetch_row($result)) // Ανάκτηση της επόµενης σειράς. ίνει true όσο υπάρχουν σειρές. { } $compname = odbc_result($result,"companyname"); // Ονοµαστική αναφορά σε τιµή στήλης $conname = odbc_result($result, 2); // Αναφορα σε τιµή στήλης βάσει σειράς echo "<tr><td>$compname</td>"; // υναµικές σειρές πίνακα HTML οαριθµός και το περιεχόµενο echo "<td>$conname</td></tr>"; // τους δυνατό να διαφέρει από εκτέλεση σε εκτέλεση odbc_free_result($result); // Αποδέσµευση resource αποτελέσµατος odbc_close($conn); // Αποδέσµευση resource σύνδεσης echo "</table>"; // Επίλογος πίνακα αποτελεσµάτων ηµιουργία σελίδων µε «µνήµη» Το πρωτόκολλο HTTP είναι stateless δηλαδή δεν έχει «µνήµη» Με αυτό τον τρόπο δεν επιβαρύνεται ο εξυπηρετητής Σε αντίθετη περίπτωση, για κάθε επισκέπτη µίας ιστοσελίδας ο εξυπηρετητής θα έπρεπε να διατηρεί ξεχωριστή λίστα µεταβλητών 8

Τρόποι δηµιουργίας «µνήµης» σε µία εφαρµογή διαδικτύου Με µεταβλητές τύπου POST και GET Με cookies που αποθηκεύονται στον πελάτη Με sessions που διατηρούνται στον εξυπηρετητή Με Javascript που εκτελείται στο φυλλοµετρητή του πελάτη Μεταβλητές τύπου POST και GET Μεταβλητές οι οποίες προωθούνται στον εξυπηρετητή µέσω του HTTP Συλλέγονται µέσω φορµών (HTML forms) και URLs (GET µόνο) Οι µεταβλητές τύπου GET εµφανίζονται στο URL µίας σελίδας µπορούν να γίνουν bookmarked Ιδιαίτερα ακατάλληλες για ευαίσθητες πληροφορίες όπως κωδικούς πρόσβασης Μπορούν να αποθηκεύσουν µέχρι 100 χαρακτήρες µόνο Με το refresh επαναποστέλλονται στον εξυπηρετητή Οι µεταβλητές τύπου POST δεν εµφανίζονται στο URL µίας σελίδας δε µπορούν να γίνουν bookmarked Μπορούν να αποθηκεύσουν «απεριόριστο» όγκο πληροφοριών Με το refresh ο φυλλοµετρητής ζητά επιβεβαίωση πρωτού επαναποστείλει τις µεταβλητές στον εξυπηρετητή 9

Αποστολή µεταβλητών GET µέσω φορµών HTML <form action="welcome.php method="get"> Name: <input type="text" name="name" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> Πατώντας το κουµπί Submit query ο χρήστης θα µεταφερθεί στο URL /welcome.php?name=stavros+polyviou&age=none+of+your+business Αποστολή µεταβλητών POST µέσω φορµών HTML <form action="welcome.php method= post"> Name: <input type="text" name="name" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> Πατώντας το κουµπί Submit query ο χρήστης θα µεταφερθεί στο URL /welcome.php 10

Ανάκτηση τιµών µεταβλητών GET και POST στο PHP Μπορούµε να πάρουµε τις τιµές των GET και POST µεταβλητών χρησιµοποιώντας τους πίνακες $_GET και $_POST αντίστοιχα Το κλειδί αυτών των πινάκων είναι το όνοµα των µεταβλητών $name = $_GET[ name ]; $age = $_GET[ age ]; ή $name = $_POST[ name ]; $age = $_POST[ age ]; Cookies Το cookie είναι ένα µικρό αρχείο το οποίο ο εξυπηρετητής αποστέλλει στον πελάτη Το αρχείο αυτό αποθηκεύεται για κάποιο συγκεκριµένο χρονικό διάστηµα Μόνο ο εξυπηρετητής που το απέστειλε µπορεί να το διαβάσει Κάθε φορά που ο φυλλοµετρητής επιχειρεί να διαβάσει µία σελίδα του domain του cookie τότε αποστέλλει στον εξυπηρετητή και το cookie µαζί µε το request Συνήθως χρησιµοποιείται για να ταυτοποιήσει το χρήστη 11

ηµιουργία cookies στο PHP Το PHP δηµιουργεί cookies µε τηνεντολήsetcookie ηοποίαπρέπει να προηγηθεί των tags <head> και <html> setcookie (string name [, string value, int expire, string path, string domain, bool secure, bool httponly] ) name: το όνοµα του cookie χρησιµοποιείται για την ανάκτηση της τιµής του value: ητιµή τουcookie expire: ο χρόνος ληξης του cookie σε δευτερόλεπτα εάν δεν δοθεί ή αν είναι 0 τότε λήγει µε το πέρας του session (δηλ. µε το που θα κλείσει ο φυλλοµετρητής) path: το µονοπάτι πάνω στον εξυπηρετητή ώπου ισχύει το cookie domain: το domain µέσα στο οποίο ισχύει το cookie. Για να περιληφθούν όλα τα subdomains ξεκινείστε µε µία τελεία (.mypage.com και όχι mypage.com ) secure: το κατά πόσο το cookie θα αποστέλλεται µόνο µέσω secure connection httponly: το κατά πόσο scripting languages όπως το Javascript θα µπορούν να έχουνπρόσβασηστηντιµή τουcookie Ανάκτηση cookies στο PHP Γίνεται µέσω του πίνακα $_COOKIE Το κλειδί του πίνακα αυτού είναι το όνοµα τουcookie Παράδειγµα: δηµιουργία και ανάκτηση cookie που λήγει σε 30 ηµέρες <?php setcookie( user, stavros, time()+60*60*24*30)?> <head> $user = $_COOKIE[ user ]; 12

ιαχείριση sessions στο PHP Στον εκάστοτε χρήστη που επισκέπτεται µία σελίδα ανατατίθεται µία αµφιµονοσήµαντη ταυτότητα session Το PHP αναλαµβάνει να διατηρεί διαφορετικές µεταβλητές (µε τοίδιοόνοµα αλλά διαφορετικές τιµές), αναλόγως της ταυτότητας session του χρήστη Ένα session έχει κάποιο χρόνο λήξης Η ταυτότητα του session µπορεί να διαβιβασθεί στον εξυπηρετητή µε ένα cookie ή µία µεταβλητή τύπου GET µε τοόνοµα PHPSESSID Παράδειγµα δηµιουργίας session και καταχώρησης µεταβλητών session_start(); // ηµιουργία ή ανάκτηση session if (!session_is_registered( name )) // Καταχωρηµένη µεταβλητή; { session_register( name ); // Καταχώρηση µεταβλητής $name = Stavros Polyviou } $sessionurl = www.myurl.com?phpsessid=. session_id(); // Μεταβλητή GET <a href= <?=$sessionurl?> >Go to URL</a> if (isset($phpsessid)) // Έλεγχος ύπαρξης session { session_start(); session_destroy(); // ιαγραφή session } 13

Μηχανισµός διαχείρισης sessions στο PHP Το PHP δηµιουργεί στο ευρετήριο /tmp του εξυπηρετητή ένα αρχείο µε όνοµα την ταυτότητα του εκαστοτε session Μέσα στο αρχείο αποθηκέυονται όλες οι καταχωρηµένες µεταβλητές και οι τιµές τους Μετά το πέρας του session τα αρχεία αυτά διαγράφονται (garbage collection) Υπάρχουν µηχανισµοί µέσω handlers για τη δηµιουργία διαφορετικών µηχανισµών διαχείρισης sessions π.χ. µέσα σε µία βάση 14