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

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

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

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

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

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

PHP/MySQL και Project

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

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

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

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

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

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

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

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

databases linux - terminal (linux / windows terminal)

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

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

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Υλοποίηση Δικτυακών Υποδομών και Υπηρεσιών: Web εφαρμογή με χρήση LDAP και SMTP Server

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

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

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Σχεδιασμός Βάσεων Δεδομένων

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

Αντώνης Χρυσόπουλος Χριστίνα Αυδίκου Στέλιος Μόσχογλου Θεοδόσης Σουργκούνης ΕΙΣΑΓΩΓΗ ΣΤΗΝ MYSQL. MySQL For Dummies

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Web Programming for Dummies

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Αντώνης Χρυσόπουλος Στέλιος Μόσχογλου Θεοδόσης Σουργκούνης ΔΟΜΗΣΗ ΚΩΔΙΚΑ. Μαθαίνω παίζοντας

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

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

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Εργαστήριο Βάσεων Δεδομένων

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures):

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

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

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

ΠΙΣΤΟΠΟΙΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΗΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ RDBMS «Certified Database Developer - RDBMS» SYLLABUS. Έκδοση 1.0

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση

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

PHPMyAdmin: Σύντομος οδηγός για αρχάριους

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

ΕΠΛ 012. JavaScripts

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

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

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

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

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

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

SQL Τύποι Δεδομένων Δημιουργία Πίνακα Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση της MySQL. Γιώργος Πυρουνάκης -

Ηλεκτρονικοί Υπολογιστές II

Εργαστήριο Βάσεων Δεδομένων

Διαχείριση ασφαλιστικού καταστήματος

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

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

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

Εισαγωγή στην PHP. ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας. Περιεχόμενα. Περιεχόμενα

PL/SQL. Κώστας Στεφανίδης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ


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

Εργαστήριο Βάσεων Δεδομένων. Triggers

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

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

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

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης

ΗΛΕΚΤΡΟΝΙΚΟ ΚΑΤΑΣΤΗΜΑ

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Το σύστημα βάσεων δεδομένων MySQL

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

Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΗΥ460) Χειμερινό εξάμηνο 2017

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

5 η Διάλεξη Python - Αρχεία

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

Οδηγίες Χρήσης της MySQL

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

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ανάπτυξη διαδικτυακών εφαρμογών με την Python Το εργαλείο Flask

. Εργαστήριο Βάσεων Δεδομένων. Triggers

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Τμήμα Πληροφορικής ΑΠΘ

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

Οδηγίες Χρήσης της MySQL

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

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

Βάσεις Δεδομένων Ι Εξεταστική Περίοδος Φεβρουαρίου 2006

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 2

SOAP API. Table of Contents

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

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

HTTP API v1.6 SMSBOX.GR HTTP API v

Οδηγίες Ακολουθήστε τα παρακάτω βήματα. Βεβαιωθείτε ότι το πρόγραμμά σας δουλεύει σωστά σε κάθε βήμα, πριν προχωρήσετε στο επόμενο.

Transcript:

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 6 η Διάλεξη: Προγραμματισμός στην πλευρά του εξυπηρετητή: προχωρημένα θέματα PHP Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1

Αρχιτεκτονική Web Βάσεων εδομένων 1. Αίτηση 2. Ο web server λαμβάνει αίτηση 3. Η PHP engine αρχίζει την ανάλυση του script, συνδέεται στον database server και στέλνει το ερώτημα 4. Ο database server επεξεργάζεται το ερώτημα και στέλνει πίσω τη πληροφορία 5. Μορφοποίηση των αποτελεσμάτων σε ΗΤΜL και επιστροφή 6. Ο web server επιστρέφει την HTML σελίδα στον browser Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 2

Διασύνδεση PHP με Βάση Δεδομένων (mysql) Βήμα 1 Σύνδεση με database server: mysql_connect($host,$username,$password); Βήμα 2 Επιλογή βάσης: mysql_select_db($database); Βήμα 3 Εκτέλεση SQL εντολών $result= mysql_query($query); Βήμα 4 Ανάγνωση αποτελεσμάτων $num=mysql_numrows($result); while ($i < $num) { $first=mysql_result($result,$i,"first"); $last=mysql_result($result,$i,"last"); i++ Βήμα 5 Τερματισμός σύνδεσης: mysql_close(); Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 3

Βασικές συναρτήσεις php-mysql resource mysql_connect ( [string server [, string username [, string password [, bool new_link [, int client_flags]]]]] ): Συνδέεται σε ένα mysql Server. Επιστρέφει το αναγνωριστικό της σύνδεσης ή FALSE σε περίπτωση αποτυχίας bool mysql_select_db ( string database_name [, resource link_identifier] ): Επιλέγει μια βάση δεδομένων. Επιστρέφει TRUE σε επιτυχία ή FALSE σε αποτυχία bool mysql_close ( [resource link_identifier] ): Κλείνει την σύνδεση με τον mysql server. Επιστρέφει TRUE σε επιτυχία ή FALSE σε αποτυχία. Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 4

Βασικές συναρτήσεις php-mysql resource mysql_query ( string query [, resource link_identifier] ): Υποβάλει ένα ερώτημα στην βάση δεδομένων. Στην περίπτωση SELECT ερωτήματος επιστρέφει ένα resource σε περίπτωση επιτυχίας ή FALSE σε περίπτωση αποτυχίας. Στην περίπτωση UPDATE, DELETE, INSERT ερωτήματος επιστρέφει TRUE σε περίπτωση επιτυχίας ή FALSE σε περίπτωση αποτυχίας. mixed mysql_result ( resource result, int row [, mixed field] ): Επιστρέφει τα αποτελέσματα του ερωτήματος τις γραμμής row και του πεδίου field. Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 5

Επιπλέον συναρτήσεις php-mysql int mysql_affected_rows ( [resource link_identifier] ): Επιστρέφει το αριθμό των γραμμών οι οποίες επηρεαστήκαν στην τελευταία SQL εντολή. array mysql_fetch_array ( resource result [, int result_type] ). Επιστρέφει σε μορφή πίνακα τα αποτελέσματα της τρέχουσας γραμμής. Ο πίνακας μπορεί να είναι είτε απλός (result_type=mysql_num) είτε συσχετιζόμενος (result_type=mysql_assoc) είτε και τα δύο (result_type=mysql_both) όπου είναι και η προκαθορισμένη επιλογή. Εάν δεν υπάρχουν επιπλέον γραμμές επιστρέφει FALSE. Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 6

Επιπλέον συναρτήσεις php-mysql string mysql_error ( [resource link_identifier] ): Επιστρέφει το λάθος το οποίο συνδέεται με την τελευταία mysql λειτουργία. int mysql_num_fields ( resource result ): Επιστρέφει τον αριθμό των πεδίων στο αποτέλεσμα result. int mysql_num_rows ( resource result ): Επιστρέφει τον αριθμό των γραμμών στο αποτέλεσμα result. bool mysql_free_result (resource result): Ελευθερώνει τους πόρους του result. Επιστρέφει TRUE σε επιτυχία ή FALSE σε αποτυχία Πλήρης λίστα συναρτήσεων στο http://gr.php.net/manual/el/ref.mysql.php Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 7

Διασύνδεση PHP με Βάση Δεδομένων (ODBC) Βήμα 1 Σύνδεση με ODBC βάση: $connect = odbc_connect ($database,$username,$password); Βήμα 2 Εκτέλεση SQL εντολών $result = odbc_exec($connect, $query); Βήμα 3 Ανάγνωση αποτελεσμάτων while(odbc_fetch_row($result)){ $name = odbc_result($result, 1); $surname = odbc_result($result, 2); Βήμα 4 Τερματισμός σύνδεσης: odbc_close($connect); Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 8

Βασικές συναρτήσεις php-odbc resource odbc_connect ( string dsn, string user, string password [, int cursor_type] ): Επιστρέφει τον αριθμό της ODBC σύνδεσης ή 0 (FALSE) σε περίπτωση λάθους. resource odbc_exec ( resource connection_id, string query_string [, int flags] ): Υποβάλει ένα ερώτημα στην βάση δεδομένων. Επιστρέφει ένα resource σε περίπτωση επιτυχίας ή FALSE σε περίπτωση αποτυχίας. string odbc_result ( resource result_id, mixed field ): Επιστρέφει το περιεχόμενο του πεδίο field (είτε με την χρήση αριθμού είτε με την χρήση του ονόματος του πεδίου). void odbc_close ( resource connection_id): Κλείνει η σύνδεση με την βάση δεδομένων. Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 9

Επιπλέον συναρτήσεις php-odbc bool odbc_fetch_row ( resource result_id [, int row_number] ): Επιλέγει την επόμενη σειρά από και επιστρέφει TRUE εάν υπάρχει σειρά και FALSE εάν δεν υπάρχει άλλη σειρά. string odbc_error ( [resource connection_id] ): Επιστρέφει τον κωδικό του τελευταίου λάθους. int odbc_num_fields ( resource result_id ): Επιστρέφει τον αριθμό των πεδίων. int odbc_num_rows ( resource result_id ): Επιστρέφει τον αριθμό των γραμμών του αποτελέσματος και -1 σε περίπτωση λάθους. bool odbc_free_result (resource result): Ελευθερώνει τους πόρους του result. Επιστρέφει TRUE σε επιτυχία ή FALSE σε αποτυχία Πλήρης λίστα συναρτήσεων στο http://gr.php.net/manual/el/ref.uodbc.php Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 10

Παράδειγμα: ODBC Διασύνδεση με ΒΔ <? $oconn=odbc_connect ("FPNWIND", "", ""); $ors=odbc_exec($oconn,"select ContactName,ContactTitle From Customers");?> Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 11

Παράδειγμα: ODBC Διασύνδεση με ΒΔ <TABLE border = 1> <tr><th>name</th><th>title</th></tr> <? while (odbc_fetch_into($ors,$row)){?> <tr> <? for ($Index=0; $Index<=(count($row)-1); $Index=$Index+1){?> <TD VAlign=top><?=$row[$Index];?> </TD> <??> </tr> <? odbc_free_result($ors);?> </TABLE> Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 12

Παράδειγμα: mysql Διασύνδεση με ΒΔ <? $user="root"; $password="lakgamas"; $database="apotest"; mysql_connect(localhost,$user,$password); @mysql_select_db($database) or die( "Unable to select database"); $query="create TABLE contacts (id int(6) NOT NULL auto_increment,first varchar(15) NOT NULL,last varchar(15) NOT NULL,phone varchar(20) NOT NULL,mobile varchar(20) NOT NULL,fax varchar(20) NOT NULL,email varchar(30) NOT NULL,web varchar(30) NOT NULL,PRIMARY KEY (id),unique id (id),key id_2 (id))"; mysql_query($query); mysql_close(); echo "Database created";?> Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 13

Παράδειγμα: mysql Διασύνδεση με ΒΔ <? $username="root"; $password="lakgamas"; $database="apotest"; mysql_connect(localhost,$username,$password); @mysql_select_db($database) or die( "Unable to select database"); $query="select * FROM contacts"; $result=mysql_query($query); $num=mysql_numrows($result); mysql_close(); echo "<b><center>database Output</center></b><br><br>"; Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 14

Παράδειγμα: mysql Διασύνδεση με ΒΔ $i=0; while ($i < $num) { $first=mysql_result($result,$i,"first"); $last=mysql_result($result,$i,"last"); $phone=mysql_result($result,$i,"phone"); $mobile=mysql_result($result,$i,"mobile"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web"); echo "<b>$first $last</b><br>phone: $phone<br>mobile: $mobile<br>fax: $fax<br>e-mail: $email<br>web: $web<br><hr><br>"; Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 15

Παράδειγμα: mysql Διασύνδεση με ΒΔ <html> <head> <title>book-net Entry Results</title> </head> <body> <h1>book-net ÁðïôåëÝóµáôá åéóáãùãþò ôßôëïõ</h1> <?php if (!$_POST["isbn"]!$_POST["author"]!$_POST["title"]!$_POST["price"]) { echo "You have not entered all the required details.<br>"."please go back and try again."; exit; Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 16

Παράδειγμα: mysql Διασύνδεση με ΒΔ $isbn = addslashes($_post["isbn"]); $author = addslashes($_post["author"]); $title = addslashes($_post["title"]); $price = floatval(!$_post["price"]); @ $db = mysql_pconnect("localhost","root", "lakgamas"); if (!$db) { echo "Error: Could not connect to database. Please try again later."; exit; Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 17

Παράδειγμα: mysql Διασύνδεση με ΒΔ mysql_select_db("apotest"); $query = "insert into books values ('".$isbn."', '".$author."', '".$title."', '".$price."')"; $result = mysql_query($query); if ($result) echo mysql_affected_rows(). " books inserted into database.";?> </body> </html> Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 18

Χρήση απλού μηχανισμού ελέγχου πρόσβασης Αποθηκεύει το password µέσα στο script σαν απλό κείµενο (δεν τον βλέπει βέβαια ο χρήστης αλλά τον βλέπει ο διαχειριστής του web server που έχει πρόσβαση στο PHP script) Προστατεύει µόνο µια σελίδα (αν ξέρω τη διεύθυνση οποιασδήποτε «προστατευµένης» σελίδας, µπορώ απ ευθείας να την πληκτρολογήσω και να δω τη σελίδα) Μεταδίδει (στο Internet) τον κωδικό πρόσβασης ως απλό κείµενο Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 19

Χρήση απλού μηχανισμού ελέγχου πρόσβασης Λύση στα δύο πρώτα προβλήµατα: Έλεγχος ταυτότητας µε συνδυασµό PHP-MySQL (θα αποθηκεύσω πολλά username/password σε Β, το password κρυπτογραφηµένο) Λύση στο τρίτο πρόβληµα: Χρήση συνόδων (sessions) Λύση στα τέταρτο πρόβληµα: Μετάδοση του password σε κρυπτογραφηµένη µορφή (µε SSL) Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 20

Θέματα ασφαλείας Χρήση συναρτήσεων addslashes / stripslashes για το input του χρήστη Αποτρέπουν προβλήματα στην SQL εντολών Αυξάνουν την ασφάλεια Κρυπτογράφηση κωδικών πρόσβασης: Χρήση της συνάρτησης password στο επίπεδο SQL Χρήση της συνάρτησης crypt στο επίπεδο της PHP Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 21

Μεταφορά σε άλλη σελίδα Αυτόματη μεταφορά σε άλλη σελίδα: header( Location: $URL ): το URL θα πρέπει να είναι απόλυτο function MyRedirect($url) { header("location: http://".$_server['http_host'].dirname($_server ['PHP_SELF'])."/".$url); Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 22

Λήψη ηµερομηνίας & ώρας από την PHP Συνάρτηση date(), π.χ. echo date("js F Y"); 18th May 2003 echo date("d/m/y, h:s A"); 18/05/03, 12:41 PM Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 23

Λήψη ηµερομηνίας & ώρας από την PHP Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 24

Λήψη ηµερομηνίας & ώρας από την PHP Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 25

Χρησιμοποιώντας τις σφραγίδες χρόνου του UNIX Συχνά, τα υπολογιστικά συστήματα μετρούν το χρόνο µε βάση τις «Σφραγίδες Χρόνου του UNIX», δηλαδή τον αριθμό δευτερολέπτων από την 1/1/1970, 00:00:00 GMT Μετατροπή ημερομηνίας/ώρας σε σφραγίδα χρόνου: int mktime (int hour, int minute, int second, int month, int day, int year); Σφραγίδα χρόνου τρέχουσας ημερομηνίας: $timestamp = mktime(); ή $timestamp = date( U ); Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 26

Προσδιορισμός ηµερομηνίας array getdate (int timestamp) $today = getdate(); $month = $today['month']; $mday = $today['mday']; $year = $today['year']; echo "$month $mday, $year"; Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 27

Μετατροπή ηµερομηνιών μεταξύ PHP- MySQL Οι ηµεροµηνίες/ώρες στην MySQL ανακαλούνται διαφορετικά (η MySQL περιµένει πρώτα το έτος) π.χ. η 29η Αυγούστου 2003 δίνεται ως 2003-08-29 ή 03-08-29 Για να βάλουµε ηµεροµηνίες στην MySQL από PHP: Χρησιµοποιείται η date(), π.χ. date( Y-m-d ) Γιαναεµφανίσουµε µέσω PHP ηµεροµηνίες που ανακλήθηκαν από τη MySQL: Χρησιµοποιούνται οι συναρτήσεις της MySQL: SELECT DATE_FORMAT ( date_column, %m %d %Y ) FROM tablename; SELECT UNIX_TIMESTAMP ( date_column) FROM tablename; Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 28

Υπολογισμοί µε ημερομηνίες <? // Η ημερομηνία γενεθλίων $day = 4; $month = 9; $year = 1975; // Η σφραγίδα χρόνου για την ημ/νία γενεθλίων $bdayunix = mktime ("", "", "", $month, $day, $year); $nowunix = mktime(); // Ησημερινήσφραγίδαχρόνου $ageunix = $nowunix - $bdayunix; // Πόσος χρόνος πέρασε; // Μετατροπή από δευτερόλεπτα σε χρόνια $age = floor($ageunix / (365 * 24 * 60 * 60)); echo "Age is $age"; // Θα εκτυπώσει την ηλικία σε έτη?> Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 29

Θέματα σχεδιασμού εφαρμογών στην php: Χρήση συναρτήσεων DB function ConnectToDB($user, $password, $server) { $con = mysql_connect($server,$user,$password); if(!$con){ echo "Error with DB connection: ".mysql_error($con); exit; return $con; function SelectDB($database, $con) { $db = mysql_select_db($database,$con); if(!$db){ echo "Error with DB connection: ".mysql_error($con); exit; Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 30

Θέματα σχεδιασμού εφαρμογών στην php: Χρήση συναρτήσεων DB function CloseDB($con) { $db = mysql_close($con); if(!$db){ echo "Error with DB connection: ".mysql_error($con); exit; function RunQuery($con,$query) { $result=mysql_query($query,$con); if(!$result){ echo "Error with DB connection: ".mysql_error($con); exit; return $result; Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 31

Θέματα σχεδιασμού εφαρμογών στην php: Χρήση συναρτήσεων Session function MyRedirect($url) { header("location: http://".$_server['http_host'].dirname($_server['php_self'])."/".$url); function CheckLogin() { if(!session_is_registered('loggedadmin')) { MyRedirect("login.php"); Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 32

Θέματα σχεδιασμού εφαρμογών στην php: Χρήση συναρτήσεων Session function Logout() { session_destroy(); function CreateSession() { $LoggedAdmin=TRUE; session_register('loggedadmin'); MyRedirect("viewusers.php"); Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 33

Θέματα σχεδιασμού εφαρμογών στην php: Χρήση συναρτήσεων Cookie function SetCookies($login) { setcookie("login", $login, time()+2592000); function RemoveCookies() { setcookie("login", "", time()); function ReadCookies() { if(isset($_cookie["login"])) { return ($_COOKIE["Login"]); else return ""; Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 34