ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τεσνολογίερ και Ππογπαμμαηιζμόρ εθαπμογών ζηον Ιζηό. Οηθνλνκηθό Παλεπηζηήκην Αζελώλ

Σχετικά έγγραφα
Constructors and Destructors in C++

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

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

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

PHP developer syllabus v1.0

Ενδεικτικά Θέματα Στατιστικής ΙΙ

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP

Εγκατάσταση του πακέτου XAMPP. Β Τεχνική Σχολή Λεμεςοφ Σχολική χρονιά Άριςτοσ Παςιάσ

ΕΝΤΟΛΕΣ WINDOWS ΚΑΙ UNIX

ΑΠΛΟΠΟΙΗΗ ΛΟΓΙΚΩΝ ΤΝΑΡΣΗΕΩΝ ΜΕ ΠΙΝΑΚΕ KARNAUGH

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

Η/Υ A ΤΑΞΕΩΣ ΑΕ Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

Case Study. Παξαθάηω παξνπζηάδνπκε βήκα - βήκα κε screenshots έλα παξάδεηγκα ππνβνιήο κηαο εξγαζίαο θαη ηελ παξαγωγή ηνπ Originality Report.

"Εθαξκνγέο Δηαδηθηύνπ"

ΕΓΧΕΙΡΙΔΙΟ ΕΚΔΟΗ 8.0.0

Άσκηση 1 - Μοπυοποίηση Κειμένου

ΔΡΓΑΙΑ 1. Γιαδικησακά πληροθοριακά σζηήμαηα. Ομάδα Δργαζίας: Μεηαπηστιακοί Φοιηηηές. ηέθανος Κονηοβάς ΑΔΜ :283. Πάζτος Βαζίλειος ΑΔΜ :288

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

Hellas online Προεπιλεγμένες ρσθμίσεις για FritzBox Fon WLAN 7140 (Annex B) FritzBox Fon WLAN Annex B ( )

Α Ο Κ Η Α Μ Α Ζ Η Η Ρ Η ( S E A R C H )

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

Η αξρή ζύλδεζεο Client-Server

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access)

ΒΗΜΑ 2. Εηζάγεηε ηνλ Κωδηθό Πξόζβαζεο πνπ ιακβάλεηε κε SMS & δειώλεηε επηζπκεηό Όλνκα Πξόζβαζεο (Username) θαη ην ζαο

Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training. Dipl.Biol.cand.med. Stylianos Kalaitzis

Έκδοζη /10/2014. Νέα λειηοσργικόηηηα - Βεληιώζεις

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

Image J Plugin particle tracker για παρακολούθηση της κίνησης σωματιδίων

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

Σημαζιολογικός Παγκόζμιος Ιζηός. Η γιώζζα XML

Μορθές Κακόβοσλοσ Κώδικα (Malicious Code)

ΗΥ-100 Ειζαγωγή ζηην Επιζηήμη Υπολογιζηών

DOM. Γηδάζθνληεο: Π. Αγγειάηνο, Γ. Εήλδξνο Δπηκέιεηα δηαθαλεηώλ: Π. Αγγειάηνο. Σρνιή Ζιεθηξνιόγωλ Μεραληθώλ θαη Μεραληθώλ Υπνινγηζηώλ

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

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

Διαφορές μεταξύ αξιών και αναφορών #1

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γεσηέρα 10 Ηοσνίοσ 2019 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

ΔΦΑΡΜΟΜΔΝΑ ΜΑΘΗΜΑΣΙΚΑ ΣΗ ΧΗΜΔΙΑ Ι ΘΔΜΑΣΑ Α επηέκβξηνο Να ππνινγηζηνύλ νη κεξηθέο παξάγσγνη πξώηεο ηάμεο ηεο ζπλάξηεζεο f(x,y) =

Αιγόξηζκνη Δθρώξεζε, Δίζνδνο θαη Έμνδνο ηηκώλ Γνκή αθνινπζίαο. Δηζαγσγή ζηηο Αξρέο ηεο Δπηζηήκεο ησλ Η/Υ

ΠΛΗ36. Άσκηση 1. Άσκηση 2. Οη δηεπζύλζεηο ησλ 4 σλ ππνδηθηύσλ είλαη νη αθόινπζεο. Υπνδίθηπν Α: /27 Υπνδίθηπν Β:

ΣΥΣΤΗΜΑΤΑ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 1. Να ιπζνύλ ηα ζπζηήκαηα. 1 0,3x 0,1y x 3 3x 4y 2 4x 2y ( x 1) 6( y 1) (i) (ii)

Αιγόξηζκνη Δνκή επηινγήο. Απιή Επηινγή ύλζεηε Επηινγή. Εηζαγσγή ζηηο Αξρέο ηεο Επηζηήκεο ησλ Η/Τ. introcsprinciples.wordpress.

Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο:

x x x x tan(2 x) x 2 2x x 1

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο

ΠΑΡΑΡΣΗΜΑ Δ. ΔΤΡΔΗ ΣΟΤ ΜΔΣΑΥΗΜΑΣΙΜΟΤ FOURIER ΓΙΑΦΟΡΩΝ ΗΜΑΣΩΝ

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

Τι θα δούμε σε αυτό το μάθημα;

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γευηέρα 11 Ηουνίου 2018 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

Γ ΣΑΞΖ ΔΝΗΑΗΟΤ ΛΤΚΔΗΟΤ ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΘΔΣΗΚΩΝ ΚΑΗ ΟΗΚΟΝΟΜΗΚΩΝ ΠΟΤΓΩΝ ΤΝΑΡΣΖΔΗ ΟΡΗΑ ΤΝΔΥΔΗΑ (έως Θ.Bolzano) ΘΔΜΑ Α

Σηα παξαδείγκαηα πνπ αθνινπζνύλ ρξεζηκνπνηήζεθαλ ην JQUIZ, ην JCROSS θαη ην JMATCH, πνπ αλαιπηηθά πεξηγξάθνληαη παξαθάηω.

Εςθςή ζςζηήμαηα επισειπήζεων και αξιολόγηζη

ΚΔΦ. 2.4 ΡΗΕΔ ΠΡΑΓΜΑΣΗΚΩΝ ΑΡΗΘΜΩΝ

Intel Accelerate Your Code

Βιομησανικόρ ζσεδιαζμόρ πποϊόνηων από ανακςκλωμένερ ζςζκεςαζίερ

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Η επιζκόπηζη ηης έμμιζθης ενηολής ζηην Αλλοδαπή. Καηεξίλα Γαιαλνπνύινπ, Intellectual Property Manager, Microsoft Ειιάο Α.Ε.

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΤΙΚΗ ΣΚΥΤΑΛΟΓΡΟΜΙΑ 2015 ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ Τεηάπηη 28 Ιανουαπίου 2015 ΛΔΥΚΩΣΙΑ Τάξη: Α Γυμναζίου

Πολυεπίπεδα/Διασυμδεδεμέμα Δίκτυα

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

Σήκαηα Β Α Γ Γ Δ Λ Η Σ Ο Ι Κ Ο Ν Ο Μ Ο Υ Γ Ι Α Λ Δ Ξ Η - ( 2 ) ΕΙΣΑΓΨΓΗ ΣΤΙΣ ΤΗΛΕΠΙΚΟΙΝΨΝΙΕΣ

1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird

ΔΙΑΚΡΙΤΑ ΜΑΘΗΜΑΤΙΚΑ. Αθροίσματα, Γινόμενα και Ασσμπτωτικές Εκτιμήσεις

Δηζαγωγή ζηε γιώζζα C Παξνπζίαζε 3 ε : Δίζνδνο/ Έμνδνο - Σπλαξηήζεηο - Pointers

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 4 ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ

Έλεγτος Ορθογραθίας - Γραμμαηικής. Ορθογραθικός και Γραμμαηικός Έλεγτος

4) Να γξάςεηε δηαδηθαζία (πξόγξακκα) ζηε Logo κε όλνκα θύθινο πνπ ζα ζρεδηάδεη έλα θύθιν. Λύζε Γηα θύθινο ζηθ επαλάιαβε 360 [κπ 1 δε 1] ηέινο

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

7. ΚΑΤΑΧΩΡΗΤΕΣ ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ. 3. Έλαο θαηαρσξεηήο SISO ησλ 4 bits έρεη: α) Μία είζνδν, β) Δύν εηζόδνπο, γ) Σέζζεξεηο εηζόδνπο.

ΘΔΜΑ 1 ο Μονάδες 5,10,10

(γ) Να βξεζεί ε ρξνλνεμαξηώκελε πηζαλόηεηα κέηξεζεο ηεο ζεηηθήο ηδηνηηκήο ηνπ ηειεζηή W.

ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά:

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Διαδικαζία μεηαθοράς δεδομένων Εκκαθαριζηικής για ηο Eιδικό ζημείωμα περαίωζης Φ.Π.Α

Επωηήζειρ Σωζηού Λάθοςρ ηων πανελλαδικών εξεηάζεων Σςναπηήζειρ

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Εισαγωγή στη Φωτογραυία. Χριζηάκης Σαζεΐδης - EFIAP

Σύνθεζη ηαλανηώζεων. Έζησ έλα ζώκα πνπ εθηειεί ηαπηόρξνλα δύν αξκνληθέο ηαιαληώζεηο ηεο ίδηαο ζπρλόηεηαο πνπ πεξηγξάθνληαη από ηηο παξαθάησ εμηζώζεηο:

ΗΥ-150 Πξνγξακκατησκόο Ταμηλόκεσε θαη Αλαδήτεσε

x-1 x (x-1) x 5x 2. Να απινπνηεζνύλ ηα θιάζκαηα, έηζη ώζηε λα κελ ππάξρνπλ ξηδηθά ζηνπο 22, 55, 15, 42, 93, 10 5, 12

Σπληήξεζε ηξνθίκσλ ρσξίο ρεκηθά πξόζζεηα PROJECT B ΛΥΚΕΙΟΥ

5 η Δργαζηηριακή Άζκηζη Κσκλώμαηα Γσαδικού Αθροιζηή/Αθαιρέηη

Εξγαζηήξην Πιεξνθνξηθήο

ΣΔΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΔΧΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΔΠΙΚΟΙΝΩΝΙΩΝ ΧΔΙΜΔΡΙΝΟ ΔΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

Δξγαζηεξηαθή άζθεζε 03. Σηεξενγξαθηθή πξνβνιή ζην δίθηπν Wulf

ΣΟ ΤΣΖΜΑ ΔΛΑΣΖΡΗΟ - ΩΜΑ

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

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

Transcript:

ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP 2010 Τεσνολογίερ και Ππογπαμμαηιζμόρ εθαπμογών ζηον Ιζηό Οηθνλνκηθό Παλεπηζηήκην Αζελώλ

Ειςαγωγό H PHP (www.php.net) είλαη κηα δημοθιλήρ, ανοικηού κώδικα, γλώζζα scripting ε νπνία εθηειείηαη ζηελ πιεπξά ηνπ εμππεξεηεηή (server-side) Σύκθσλα κε έξεπλα ηεο Netcraft ε PHP ίζσο είλαη ε πην δεκνθηιήο server-side ηερλνινγία ζην Web Όκσο ε παξαπάλσ έξεπλα έγηλε ιακβάλνληαο ππόςε ηηο θαηαιήμεηο ησλ αξρείσλ, θξηηήξην όρη πάληα αληηπξνζσπεπηηθό

Ειςαγωγό Σπκβαηή κε έλα επξύ θάζκα ιεηηνπξγηθώλ ζπζηεκάησλ θαη εμππεξεηεηώλ Σρεηηθά εύκολο να μαθεςηεί, αιιά πεξηιακβάλεη πολςάπιθμερ μεθόδοςρ και πακέηα Πηζαλόλ λα κελ είλαη θαηάιιειε γηα ηνλ πξνγξακκαηηζκό ελόο εξαιπεηικά μεγάλος ζςζηήμαηορ αιιά όπσο θαη άιια server-side scripting πεξηβάιινληα (ASP, ColdFusion, θιπ.), ζπρλά ρξεζηκνπνηείηαη θαη γηα απηό ην ζθνπό

Γιατύ PHP? Εύθνιε Γλσζηή από άιιεο γιώζζεο θαη όρη απζηεξή ζύληαμε Επέιηθηε Δελ επηβάιιεη ζπγθεθξηκέλν ζηπι πξνγξακκαηηζκνύ Ιζρπξή Πνιιέο ζπλαξηήζεηο Δηαζέζηκνο ειεύζεξνο θώδηθαο Επεθηάζηκε Σπκβαηή κε πνιιέο ηερλνινγίεο (DBS, XML, θηι) Δσξεάλ Σπκβαηή κε όιεο ηηο πιαηθόξκεο (θαιύηεξα όκσο ζε Linux) Επξέσο ρξεζηκνπνηνύκελε Αξθεηή βνήζεηα από άιινπο. Έρεη δήηεζε ζηελ αγνξά εξγαζίαο

Γιατύ όχι PHP? Αλνηθηνύ θώδηθα Πνηνλ επηθαινύκαζηε όηαλ όια πάλε ζηξαβά; Πνίνο έρεη ηε λνκηθή επζύλε; Είλαη ηόζν απιή; Αξθεηνί πξνγξακκαηηζηέο δελ αθνινπζνύλ ηηο θαζηεξσκέλεο πξαθηηθέο πξνγξακκαηηζκνύ γξάθνληαο "spaghetti code" Απνπζία πνηόηεηαο θαη πξνηππνπνίεζεο Πνιιαπιά frameworks, εθδόζεηο, ηδηνξξπζκίεο πιαηθόξκαο Όρη αξθεηά θαιή γηα κηα επηρείξεζε; Σπλήζσο πξνηηκνύληαη πιαηθόξκεο Web πνπ ζεσξνύληαη όηη ηαηξηάδνπλ θαιύηεξα ζε επηρεηξήζεηο όπσο.net, J2EE Έιιεηςε δηαζπλδέζεσλ(bridges) κε κεγάιεο πιαηθόξκεο όπσο ε ERP Θα πξέπεη λα ζπλππνινγηζηεί ε ηδέα ηνπ "share nothing" θαη ηα επξήκαηα από ζπλέδξηα πνπ αζρνινύληαη κε ηελ επεθηαζηκόηεηα ηεο πξνηνύ θάπνηνο ηελ επηιέμεη Δελ επηβάιιεη θάπνην πξνγξακκαηηζηηθό κνληέιν ή πεξηβάιινλ Έρνπλ πξνηαζεί/πινπνηεζεί πνιιά αιιά ε θεληξηθή αξρή γηα components θαη frameworks πζηεξνύλ από ηα αληίζηνηρα ηεο.net θαη J2EE (ζηαδηαθά αιιάδεη)

Παραδεύγματα εφαρμογών Απιή επεμεξγαζία θόξκαο Απνζήθεπζε ζε βάζε, θόξκα απνζηνιήο email Σειίδεο πξνζαξκνδόκελεο ζην ρξήζηε/browser Αιιαγή όςεο ή ηερλνινγίαο αλάινγα κε ρξήζηε/browser Σειίδεο ζπλεξγαζίαο (collaboration) Message boards, blogs θηι Σπζηήκαηα Δηαρείξηζεο Πεξηερνκέλνπ (CMS) Σπληήξεζε θαη αλαλέσζε ηνπ πεξηερνκέλνπ ελόο site ρξεζηκνπνηώληαο κόλν ην browser E-commerce/Shopping carts Portals Καη νηηδήπνηε άιιν κπνξείηε λα θαληαζηείηε παηρλίδηα θηι εμάιινπ είλαη κηα γιώζζα πξνγξακκαηηζκνύ!

Ιςτορύα τησ PHP Δεκηνπξγήζεθε σο εξγαιείν δεκηνπξγίαο πξνζσπηθώλ ζειίδσλ Ινύληνο 1995 έθδνζε 1.0 Μέζα ηνπ 1996 (PHP/FI) αξρίδεη λα κεηαηξέπεηαη ζε script ελζσκαησκέλν ζηελ HTML Ινύληνο 1998 PHP 3.0 Απηή ε έθδνζε μεθίλεζε ηελ πξαγκαηηθή πξνζπάζεηα πηνζέηεζεο ηεο PHP Μάηνο 2000 - PHP 4.0 Ινύιηνο 2004 - PHP 5 PHP 6: H επόκελε έθδνζε, αθόκε ππό αλάπηπμε

Πώσ λειτουργεύ Σηελ απινύζηεξε πεξίπησζε, ηα αξρεία PHP πεξηέρνπλ κίμε θώδηθα PHP θαη (X)HTML/CSS/JavaScript Τα αξρεία PHP ζπιιέγνληαη θαη αμηνινγνύληαη από κηα scripting engine (ζπλήζσο πινπνηεκέλε ζαλ έλα server module/ ISAPI), όηαλ έλα request γίλεηαη γηα απηά, παξάγνληαο ηελ δεηνύκελε ζειίδα H θαηάιεμε.php ρξεζηκνπνηείηαη γηα λα ελεξγνπνηήζεη ηελ script engine, αλ θαη απηό κπνξεί λα ηξνπνπνηεζεί κε θαηάιιειεο ξπζκίζεηο

Πώσ λειτουργεύ

Πώσ λειτουργεύ (Abstract μορφό)

Εγκατϊςταςη Δηαζέζηκε ζε εκπνξηθή έθδνζε ή open source www.zend.com (commercial) www.php.net (open source) Επηινγή γιώζζαο αλάινγα κε ιεηηνπξγηθό, κέζνδν πινπνίεζεο (CGI ή Module/ISAPI), έθδνζε θαη ηπρόλ πξόζζεηα πνπ ζα εγθαηαζηαζνύλ ζηνλ εμππεξεηεηή. Υπάξρεη αλαιπηηθόο νδεγόο εγθαηάζηαζεο ζην http://php.net/manual/en/install.php γηα θάζε πεξίπησζε

Εργαλεύα Γηα λα πξνγξακκαηίζνπκε ρξεηαδόκαζηε έλα Web browser κε πξόζβαζε ζε έλα πεξηβάιινλ κε εγθαηεζηεκέλε PHP θαη ηηο άιιεο ζπζρεηηδόκελεο ππεξεζίεο (π.ρ. MySQL) θαη έλαλ επεμεξγαζηή θεηκέλνπ (editor) Μπνξείηε λα ρξεζηκνπνηείηε όπνηνλ editor ζέιεηε vi, emacs, notepad αιιά είλαη θαιύηεξν λα ρξεζηκνπνηείηε θάπνην IDE Σην εξγαζηήξην έρνπκε εγθαηεζηεκέλα αξθεηά εξγαιεία γηα ηηο αλάγθεο πξνγξακκαηηζκνύ ηνπ καζήκαηνο

Hello world <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; helloworld.php charset=utf-8"> <title>hello World PHP Style</title> </head> <body> <?php echo 'Hello World from PHP!';?> </body> </html>

PHP Embedding Methods Σπλήζσο εηζάγεηαη αθνινπζώληαο ηα tags (<?php?>) H ζπληόκεπζε <??> επηηξέπεηαη αιιά δελ ζπλίζηαηαη όηαλ δελ ειέγρνπκε απόιπηα ην πεξηβάιινλ ζην νπνίν ζα ηξέμεη ε εθαξκνγή καο, δηόηη κπνξεί λα απαηηεί αιιαγέο ζην αξρείν php.ini Θεσξείηαη γεληθά ν πξνηηκόηεξνο ηξόπνο Ελαιιαθηηθά ρξήζε ηνπ <script> tag <script language="php">...</script> Αθνινπζώληαο ην ζηπι ASP (<% %>) Σηόρνο ε γξήγνξε εμνηθείσζε γηα ηνπο πξνγξακκαηηζηέο ASP Απαηηεί αιιαγή ζην php.ini

Direct echo <input type="text" name="magic" value="<?= $foo?>" /> Μέζα ζηελ HTML είλαη ζύλεζεο λα βξίζθνληαη PHP κεηαβιεηέο νη νπνίεο εκθαλίδνληαη άκεζα ρξεζηκνπνηώληαο ην <?=?> Ελ πξνθεηκέλσ, ην <?= είλαη ζπληόκεπζε ηνπ <?php echo Σε MVC-style αξρηηεθηνληθέο, ρξεζηκνπνηείηαη ζπρλά ζηε ζπγγξαθή ησλ View scripts (πρ ζην Wordpress)

Ένταξη ϊλλων αρχεύων Μηα ρξήζηκε δπλαηόηεηα ηεο PHP είλαη ε έληαμε θνηλά ρξεζηκνπνηνύκελσλ scripts ζε έλα αξρείν, πρ headers, footers, navigation, βηβιηνζήθεο κε ζπλαξηήζεηο ή classes θηι Υπάξρνπλ πνιινί ηξόπνη γηα λα εηζάγνπκε αξρεία ζηελ PHP, ζπλεζέζηεξα ρξεζηκνπνηνύληαη νη: include require readfile()

Ένταξη ϊλλων αρχεύων require 'global.php'; include 'navbar.html'; Σπλεζέζηεξνο ηξόπνο κε ηελ νδεγία include Αλ ην αξρείν δελ βξεζεί ε επεμεξγαζία ηεο ζειίδαο ζα ζπλερηζηεί αιιά ζα δνύκε κηα πξνεηδνπνίεζε Πποζοσή: Τν πεξηερόκελν ηνπ αξρείνπ δελ εηζάγεηαη κόλν, αιιά θαη εθηειείηαη (αλ είλαη θώδηθαο PHP) ή εκθαλίδεηαη H νδεγία require είλαη παξόκνηα κε ηελ include, όκσο αλ ην αξρείν δελ βξεζεί ζηακαηάεη ε εθηέιεζε (fatal error) Δεν είναι ζςναπηήζειρ θαη άξα δελ ρξεηάδνληαη απαξαίηεηα παξελζέζεηο

Ένταξη ϊλλων αρχεύων readfile('footer.html'); Η ζπλάξηεζε readfile() δηαβάδεη θαη γξάθεη ζηελ έμνδν ηα πεξηερόκελα ελόο αξρείνπ Αλ επηζπκνύκε λα δηαβάζνπκε κελ ηα πεξηερόκελα ελόο αξρείνπ, αιιά λα κελ ηππσζνύλ ζηελ έμνδν, κπνξνύκε λα ρξεζηκνπνηήζνπκε ηελ file_get_contents() Οπζηαζηηθά ε εληνιή readfile('footer.html'); ηζνδπλακεί κε echo file_get_contents('footer.html');

Καθοριςμόσ των ρυθμύςεων τησ PHP H PHP έρεη πνιιαπιέο ξπζκίζεηο γηα ηελ έληαμε κεζόδσλ, ζπλαξηήζεηο πνπ θνξηώλνληαη, θηι Φξήζε ηεο phpinfo() γηα ηελ εκθάληζε ξπζκίζεσλ ηεο engine ζε κηα HTML ζειίδα Σπλήζσο αλαδεηείηαη ην αξρείν php.ini γηα λα γίλνπλ αιιαγέο ζε απηό (αλ ν ρξήζηεο έρεη ηα θαηάιιεια δηθαηώκαηα) Σπλήζσο απηά αλήθνπλ ζηνπο δηαρεηξηζηέο ηνπ εμππεξεηεηή θαη όρη ζηνλ απιό ρξήζηε Εθηειώληαο phpversion() εκθαλίδνληαη πιεξνθνξίεο γηα ηελ έθδνζε ηεο php Πρ: echo 'Current PHP version: '. phpversion();

Modules Η δπλακηθή ηεο PHP είλαη ηα δηάθνξα modules ηα νπνία κπνξνύλ λα πξνζηεζνύλ Όζα έρνπλ πξνζηεζεί κπνξνύλ λα βξεζνύλ εθηειώληαο ζε έλα script ηελ εληνιή get_loaded_extensions() Πρ: print_r(get_loaded_extensions()); Οη ζπλαξηήζεηο ελόο module κπνξνύλ λα εκθαληζηνύλ εθηειώληαο get_extension_funcs(modname); Πρ: print_r(get_extension_funcs('standard'));

Case Sensitivity H PHP δελ είλαη απζηεξά case-sensitive Οη ελζσκαησκέλεο δομέρ θαη λέξειρ-κλειδιά ηεο γιώζζαο όπσο while, class, if θ.ν.θ δεν είλαη casesensitive Οη classes θαη νη ζςναπηήζειρ επίζεο δεν είλαη case-sensitive Οι μεηαβληηέρ όμωρ είναι case-sensitive

Statements και blocks Όπσο θαη ζηηο πεξηζζόηεξεο C-style γιώζζεο: Τν ηέινο ησλ εληνιώλ (statements) δειώλεηαη κε ';' Παξαηήξεζε: Τν ηειεπηαίν statement δελ απαηηεί ';' πξηλ ηελ έλδεημε ηέινπο ηνπ script (closing script delimiter) Τα blocks νξηνζεηνύληαη κε braces ({ }) H PHP γεληθά αγλνεί ηα θελά (whitespace), αιιά όηαλ ρξεζηκνπνηείηαη κε ζπλδπαζκό κε άιιεο γιώζζεο (π.ρ. HTML, JavaScript) γηα λα γξάθεη ζηελ έμνδν ρξεηάδεηαη πξνζνρή

Ανϊμειξη PHP & HTML Σπρλά ε PHP ρξεζηκνπνηείηαη γηα λα εθηππσζεί θώδηθαο XHTML ή άιινο client-side θώδηθαο <?php print "<h1>hey there!</h1>";?> Ελαιιαθηηθά: <h1> <?php print "hey there!" ;?> </h1> Σε πεξίπησζε πνπ επηιεγεί ν δεύηεξνο ηξόπνο ηόηε ην ζηπι ηεο PERL γηα ηελ έμνδν δεδνκέλσλ είλαη πνιύ ρξήζηκν γηα ηελ δεκηνπξγία κεγαιύηεξσλ block Δνθηκάζηε ηα παξαπάλσ παξαδείγκαηα κε θελά

Ειςαγωγό Σχολύων Τξεηο ηξόπνη: Σηπι UNIX # I am a single line comment Σηπι C /* I am a multi-line comment */ Σηπι C++ // I am a single line comment Τα ζρόιηα αθαηξνύληαη από ηελ έμνδν από ηνλ δηεξκελεπηή (όπσο πξέπεη)

Ονόματα μεταβλητών Τα νλόκαηα ησλ κεηαβιεηώλ μεθηλνύλ πάληα κε '$' θαη είλαη case-sensitive ζπλεπώο ε $Name είλαη δηαθνξεηηθή κεηαβιεηή από ηηο $NAME $NaMe Τα νλόκαηα κεηαβιεηώλ, πέξα από ην αξρηθό $, κπνξνύλ λα απνηεινύληαη από γξάκκαηα, αξηζκνύο θαη underscores (_) Δεν ππέπει όμωρ να ξεκινούν με απιθμό, πρ δελ επηηξέπεηαη ε $3_stooges

Τύποι δεδομϋνων Η PHP έρεη 8 ηύπνπο δεδνκέλσλ (data types) 4 scalars Integers Floating-points Strings Booleans 2 collections Arrays Object 2 specials Resource Null

Integers Decimal, octal, θαη hex ηηκέο επηηξέπνληαη Π.ρ. 754, -3, 0755 (octal), 0xFF (hex) Εύξνο ηηκώλ -2,147,483,648 έσο 2,147,483,648 Μνηάδνπλ κε ηνλ ηύπν long ηεο C Όηαλ ππεξβείηε ην εύξνο ηηκώλ ηα δεδνκέλα πξέπεη λα κεηαηξαπνύλ ζε floating point ηύπν κεηαβιεηήο Μηα ηηκή κπνξεί λα ειεγρζεί αλ είλαη integer ρξεζηκνπνηώληαο ηηο is_int() ή is_integer()

Floating point Απιό ζηπι 3.14,-0.54 θαη επηζηεκνληθό ζηπι 0.314E10 ή 1.56E10 Πξνζνρή ζηα πξνβιήκαηα ειέγρσλ κε ηηο ηηκέο floating point Μηα ηηκή κπνξεί λα ειεγρζεί αλ είλαη floating point ρξεζηκνπνηώληαο ηηο is_float() ή is_real()

Strings Αθνινπζία ραξαθηήξσλ νπνηαδήπνηε κήθνπο (δελ ππάξρεη ηύπνο char) Τα μονά και διπλά ειζαγωγικά έσοςν διαθοπεηική ζημαζία Αλ βξεζεί κεηαβιεηή κέζα ζε "" δίλεη ηελ ηηκή ηεο ελώ κέζα ζε '' είλαη string Πξνθαλώο ε εθηύπσζε κε '' είλαη γξεγνξόηεξε θαζώο δελ ρξεηάδεηαη λα γίλεη θάηη parse Μελ ρξεζηκνπνηείηε δηπιά εηζαγσγηθά ρσξίο ιόγν Φαξαθηήξεο ειέγρνπ όπσο \n,\",\t,\\ θνθ ιεηηνπξγνύλ κόλν κέζα ζε "" Φξεζηκνπνηώληαο ηελ is_string() ειέγρνπκε αλ κηα ηηκή είλαη string Υπάξρνπλ ακέηξεηεο ζπλαξηήζεηο ρεηξηζκνύ string ζηελ PHP

Πύνακεσ (arrays) Πξώην ζηνηρείν ζηελ ζέζε κεδέλ Καηαζθεπή κε array() $stooges = array('larry', 'Curly', 'Moe'); print $stooges[0]; Απαξίζκεζε ησλ ζηνηρείσλ ηνπ πίλαθα κε ηελ εληνιή foreach foreach ($stooges as $name) { print "Hello $name <br />"; } Πνιιέο δηαζέζηκεο ζπλαξηήζεηο γηα επεμεξγαζία πηλάθσλ π.ρ. sort() Έιεγρνο ηύπνπ κε is_array() H PHP ππνζηεξίδεη θαη associative arrays! $foo['bar'] = 42; array('foo' => true, 'bar' => 3.1415926);

Άλλοι τύποι δεδομϋνων Object Θα ην εμεηάζνπκε αξγόηεξα Resource Εηδηθόο ηύπνο δεδνκέλσλ πνπ ρξεζηκνπνηείηαη ζαλ file handle (ζηελ πξαγκαηηθόηεηα είλαη integer) Σπλήζσο ρξεζηκνπνηείηαη κε ζπλδέζεηο ζε βάζε Έιεγρνο ηύπνπ κε is_resource() Null Υπνδειώλεη απνπζία δεδνκέλσλ Φξήζηκν γηα garbage collection Έιεγρνο ηύπνπ κε is_null()

Μεταβλητϋσ Δειώλνληαη απηόκαηα θαηά ηελ πξώηε ρξήζε Μηα κεηαβιεηή δελ πεξηνξίδεηαη ζε θάπνην ηύπν δεδνκέλσλ, κπνξεί λα θξαηήζεη νπνηνλδήπνηε ηύπν Είλαη όκσο πην αζθαιέο λα ρξεζηκνπνηείηαη πξώηα casting, πρ $myname = (string) "Thomas"; $favnum = (string) $favnum; Οη κεηαβιεηέο πξίλ πάξνπλ ηηκή είλαη null (δελ ππάξρεη εδώ δηάθξηζε κεηαμύ null θαη undefined) Τν όλνκα κηαο κεηαβιεηήο κπνξεί λα πεξηέρεηαη ζε θάπνην string: $foo = 'bar'; $$foo = 'funky'; # τώρα ϋχουμε $bar = 'funky'

References Οη κεηαβιεηέο κπνξνύλ λα έρνπλ aliases $foo =& $bar # ηώξα ην $foo είλαη alias γηα ην $bar Πξνζνρή όκσο γηαηί κε απηό ηνλ ηξόπν αιιάδνπλ ηηκέο κεηαβιεηώλ κε έκκεζν ηξόπν Μεγαιύηεξε ζύγρπζε πξνθαιεί ε πξνζπάζεηα ζβεζίκαηνο ηεο ηηκήο (unset) κηα θαη κπνξεί λα θξαηεζεί από θάπνην alias $foo = "bar"; $foo2 =&$foo; unset($foo); print $foo2; # Εμφανύζει bar Τα aliases κπνξνύλ λα ρξεζηκνπνηεζνύλ ζαλ παξάκεηξνη ζε ζπλαξηήζεηο γηα λα απνθεύγεηαη ε αληηγξαθή κεγάισλ ζε όγθν δεδνκέλσλ Δελ είλαη pointers!

Σταθερϋσ define('this_script', 'home); define('this_script', 'foo'); echo THIS_SCRIPT // τυπώνει home Σηαζεξέο κπνξνύλ λα νξηζηνύλ κε ην define construct Μηα ζύκβαζε νλνκαζίαο είλαη λα ρξεζηκνπνηνύληαη ΚΕΦΑΛΑΙΑ γηα απηέο Μπνξνύλ λα θξαηνύλ κόλν ηηκέο "κηαο κεηαβιεηήο" (scalar data), δειαδή όρη ιίζηα, πίλαθα θνθ Γηα ηελ απνθπγή ζύγρπζεο κε ζηαζεξέο όηαλ ρξεζηκνπνηείηαη θώδηθαο άιινπ πξνγξακκαηηζηή κπνξεί λα ρξεζηκνπνηεζεί ε get_defined_constants() Υπάξρνπλ θάπνηεο "μαγικέρ ζηαθεπέρ", νη νπνίεο είλαη δηαζέζηκεο ζε θάζε script (πρ LINE, FILE, FUNCTION, CLASS, METHOD ) θαη ζπλήζσο ρξεζηκνπνηνύληαη γηα debugging

Scope Μεηαβιεηέο πνπ νξίδνληαη ζε κηα ζπλάξηεζε είλαη ηνπηθέο κεηαβιεηέο Μεηαβιεηέο πνπ νξίδνληαη εθηόο κηαο ζπλάξηεζεο είλαη global κεηαβιεηέο Πξνθαλώο νη παξάκεηξνη κηαο ζπλάξηεζεο έρνπλ ηνπηθή εκβέιεηα

Scope Όηαλ αλαθεξόκαζηε ζε κηα κεηαβιεηή $foo εληόο θάπνηαο ζπλάξηεζεο, ζεσξείηαη όηη αλαθεξόκαζηε ζηελ ηνπηθή (ζπκεζείηε: αλ δελ ππάξρεη, δειώλεηαη κε ηε ρξήζε), είηε ςπάπσει ανηίζηοιση global είηε όσι Γηα λα δειώζνπκε όηη θάζε ρξήζε ηεο $foo ζα αθνξά ηελ global κεηαβιεηή $foo ρξεζηκνπνηνύκε ην keyword global global $foo;

Static Μεταβλητϋσ function foo() { static $a = 1; return $a++; // κϊθε φορϊ αυξϊνεται } echo $a; // Κενό Μηα κεηαβιεηή ζπλάξηεζεο πνπ έρεη κπξνζηά ηεο ην keyword static ζα δηαηεξήζεη ηηο ηηκέο ηεο κεηαμύ ησλ θιήζεσλ ηεο ζπλάξηεζεο

Garbage collection Από ηα παξαπάλσ είλαη πξνθαλέο γηα πνηεο κεηαβιεηέο γίλεηαη Garbage Collection Η αλάζεζε ηηκήο null ή θαιύηεξα ε θιήζε ηεο unset() ρξεζηκνπνηείηαη γηα ηελ απειεπζέξσζε κλήκεο $foo = null; unset($foo);

Τελεςτϋσ Υπνζηεξίδνληαη όινη νη ηειεζηέο ηεο Java κε κόλε δηαθνξά ηνλ ηειεζηή γηα ζπλέλσζε strings (string concatenation): Σηελ PHP ρξεζηκνπνηείηαη ε ηειεία (.) αληί γηα ην + Φξεηάδεηαη πξνζνρή θαηά ην type conversion Μπνξεί λα ρξεζηκνπνηεζεί casting (int), (float), (string), θηι γηα ηελ κεηαηξνπή κηαο κεηαβιεηήο $a = "5"; $b = (int) $a;

Άλλοι τελεςτϋσ === θαη!== όπσο ζηε JavaScript, γηα επηπξόζζεην έιεγρν ηζόηεηαο ηύπσλ Υπνζηεξίδνληαη θαη and, or, xor αληί ησλ ιηγόηεξν θαηαλνεηώλ &&, (γηα ην XOR δελ ππάξρεη άιινο ηειεζηήο) @ γηα απόθξπςε ζθάικαηνο Πποζοσή: Θεσξείηαη αξθεηά αξγό ` ` γηα εθηέιεζε ζε θέιπθνο. Πξνζνρή!

Δομϋσ ελϋγχου Υπνζηεξίδνληαη όιεο νη δνκέο ειέγρνπ ξνήο ηεο Java θαη ε foreach γηα δηάζρηζε πηλάθσλ Γηα ηηο πεξηζζόηεξεο δνκέο ειέγρνπ ππνζηεξίδεηαη θαη εναλλακηικόρ ηπόπορ γπαθήρ. Σπγθεθξηκέλα, γηα ηηο if, while, for, foreach, switch κπνξνύκε λα αληηθαηαζηήζνπκε ην opening brace ({) κε : θαη ην closing brace (}) κε endif; endwhile, endfor, endforeach, endswitch αληίζηνηρα

Δομϋσ ελϋγχου: foreach foreach ($array as $current) statement or block; Επηηξέπεη ηελ απαξίζκεζε ζηνηρείσλ ζε έλα πίλαθα Καηά ηελ δηάξθεηα ηεο επαλάιεςεο είλαη δπλαηή ε πξόζβαζε θαη ζηνλ δείθηε θαη ζηηο ηηκέο foreach ($array as $key => $value) { } Σηηο λεόηεξεο εθδόζεηο ηεο PHP επηηξέπεηαη ε κεηαβιεηή ηηκήο λα είλαη reference ώζηε λα ηξνπνπνηνύκε ηηκέο ρσξίο λα απαηηείηαη ζύληαμε ηύπνπ $array[$key] foreach ($array as &$value) { $value *= 2; }

Διακοπό εκτϋλεςησ return Πξνθαιεί έμνδν από ηελ ζπλάξηεζε exit Τεξκαηίδεη ηελ ηξέρνπζα process/script Είλαη δπλαηό ην πέξαζκα ηηκήο πνπ ππνδειώλεη status code ή κήλπκα ιάζνπο Είλαη ελαιιαθηηθή ηεο die( ) die("this script just died!");

Κλόςη Συναρτόςεων $result = function_name([parameter, ]); Γίλεηαη κε ηνλ ίδην ηξόπν είηε έρνπλ γξαθηεί από ην ρξήζηε είηε βξίζθνληαη ζην ζύζηεκα Δελ είλαη αλαγθαίν λα παίξλνπλ παξακέηξνπο (σο ζπλήζσο) ή λα επηζηξέθνπλ θάπνηα ηηκή Παξάδεηγκα $len = strlen("ucsd"); // $len = 4

Οριςμόσ Συναρτόςεων function [&]function_name(parameter-list) { statement(s) often with return(s) } Αθνινπζνύλ ηελ παξαπάλσ γεληθή κνξθή Παξάδεηγκα function add2($x) { return $x+2; } $result = add2(5); echo $result;

Προαιρετικϊ ορύςματα function add($x, $y=1) { return $x + $y; } echo add(5); // τυπώνει 6 echo add(5, 10); // τυπώνει 15 Όπσο ζηε C++ Πξνθαλώο, έλα πξναηξεηηθό γλώξηζκα πνπ πξνεγείηαη ελόο ππνρξεσηηθνύ νπζηαζηηθά είλαη επίζεο ππνρξεσηηθό Σε αληίζεζε κε ηε JavaScript, αλ κηα ζπλάξηεζε θιεζεί κε ιηγόηεξεο παξακέηξνπο από απηέο πνπ απαηηνύληαη ζα εκθαληζηεί πξνεηδνπνίεζε

Μεταβλητό πλόθοσ παραμϋτρων function foo() { print 'I have '. func_num_args(); print 'First argument 1 = '. func_get_arg(0); print_r(func_get_args()); } Οη παξάκεηξνη κηαο ζπλάξηεζεο κπνξνύλ λα πξνζπειαζηνύλ κε ηηο ζπλαξηήζεηο func_num_args( ), func_get_arg() θαη func_get_args( ), αθόκα θαη κέζα ζηελ ίδηα ηε ζπλάξηεζε Η ζπλάξηεζε func_get_arg() δέρεηαη έλαλ αξηζκό πνπ δειώλεη ηε ζέζε ηεο παξακέηξνπ πνπ ζέινπκε λα επηζηξαθεί, ελώ ε func_get_args() επηζηξέθεη έλαλ πίλαθα κε όιεο ηηο παξακέηξνπο

Επιςτρεφόμενεσ Τιμϋσ Τν return κπνξεί λα ρξεζηκνπνηεζεί γηα λα επηζηξαθεί κηα κόλν ηηκή, πνιιαπιέο ηηκέο κπνξνύλ λα επηζηξαθνύλ κέζα ζε έλα πίλαθα Σπλήζσο ε ηηκή επηζηξέθεηαη με ανηιγπαθή, αιιά γηα ιόγνπο απόδνζεο κπνξνύλ νη ηηκέο λα πεξαζηνύλ κε reference Σε απηή ηε πεξίπησζε πξνζηίζεηαη ην & ζηνλ νξηζκό ηεο ζπλάξηεζεο κε απνηέιεζκα νη επηζηξεθόκελεο ηηκέο λα μην επηζηξέθνληαη κε αληηγξαθή

Πϋραςμα αναφορϊσ (Reference) Σπλήζσο νη παξάκεηξνη πεξλνύλ σο ηηκέο αιιά ε εηζαγσγή ηνπ & ζην όλνκα ηεο παξακέηξνπ πξνθαιεί ην πέξαζκα κε reference Αλ έρνπκε function funref(&$x) { } θαη funval($x) { } ε ζπλάξηεζε funref θάλεη αιιαγέο απεςθείαρ ζηελ $x ελώ ζηελ funval απηό δελ ζπκβαίλεη Πποζοσή: Καηά ηελ θιήζε κηαο ζπλάξηεζεο, ηίπνηα δελ ππνδεηθλύεη αλ κηα παξάκεηξνο πεξληέηαη κε αλαθνξά ή όρη Πρ ζηελ θιήζε foo($bar); ε $bar πεξληέηαη κε αλαθνξά ή όρη; Δελ κπνξνύκε λα ην ζπκπεξάλνπκε ρσξίο ηνλ νξηζκό ηεο ζπλάξηεζεο!

Variable Functions Εδώ ε PHP engine όηαλ ζπλαληήζεη κηα έθθξαζε ηεο κνξθήο $x(); αλαδεηά θαη εθηειεί ηε ζπλάξηεζε κε όλνκα ν,ηη πεξηέρεηαη ζηε κεηαβιεηή $x Απηή ε ηερληθή κπνξεί λα ρξεζηκνπνηεζεί γηα λα πινπνηεζεί κε θνκςό ηξόπν (ή κε ηξόπν πνπ πξνθαιεί ζύγρπζε) ιύζεηο γηα function tables, callbacks θηι Παξάδεηγκα: $x = 'foo'; $x(); // καλεύ την foo() εφόςον υπϊρχει

Anonymous Functions $myfunction = create_function(args, code); Μπνξεί λα δεκηνπξγεζνύλ ρξεζηκνπνηώληαο ηελ ζπλάξηεζε create_function Παξάδεηγκα: $add2 = create_function('$x,$y', 'return $x+$y'); echo $add2(5,10); Ίδηα κεηνλεθηήκαηα κε ηε ρξήζε ηνπ Function constructor ζηε JavaScript (αξγή ηαρύηεηα, δύζθνιν debugging)

Αντικειμενοςτραφόσ PHP

Ειςαγωγό class CheckingAccount extends BankAccount { private $balance; //... } $my_account = new CheckingAccount(); Σηελ PHP όπσο θαη ζε άιιεο αληηθεηκελνζηξαθείο γιώζζεο: Οξίδνπκε θιάζεηο κε ηε ιέμε-θιεηδί class Δεκηνπξγνύκε λέα instances κε ην keyword new Κιεξνλνκηθόηεηα κε ηε ιέμε-θιεηδί extends Έιεγρνο πξόζβαζεο κε ηα keywords public, protected, private try catch πνπ ιεηηνπξγεί όπσο θαη ζηε Java Δηαηίζεληαη σζηόζν πνιύ ιηγόηεξα built-in exceptions abstract classes κε ηε ιέμε-θιεηδί abstract

Properties & Methods class BankAccount{ private $balance; public function setbalance($balance){ $this->balance = $balance; } public function getbalance(){ return $this->balance; } } Σηελ PHP, ν ηειεζηήο πξόζβαζεο ζε ηδηόηεηεο θαη κεζόδνπο είλαη ν -> (ζε αληίζεζε κε ηελ ηειεία (.) ηεο Java θαη ηεο JavaScript) $this: Αληίζηνηρν ηνπ this ηεο Java

Static ιδιότητεσ/μϋθοδοι class BankAccount { private static $bankname; public function getbankname(){ return self::bankname; } } Όπσο θαη ζηε Java, ρξεζηκνπνηνύκε ην keyword static γηα λα νξίζνπκε static κεηαβιεηέο Ωζηόζν, ρξεζηκνπνηείηαη γηα λα έρνπκε πξόζβαζε ζε static ηδηόηεηεο/κεζόδνπο, δελ κπνξνύκε λα ρξεζηκνπνηήζνπκε ηνλ ηειεζηή ->, αιιά ρξεζηκνπνηείηαη ν :: Η ιέμε-θιεηδί self ηζνδπλακεί κε ηε ρξήζε ηνπ νλόκαηνο ηεο θιάζεο Σπληζηάηαη ε ρξήζε ηεο, γηα ιόγνπο επθνιόηεξεο ζπληήξεζεο

Σταθερϋσ class BankAccount { const MIN_BALANCE = 20; public construct($initial_balance){ if($initial_balance < self::min_balance) { throw new Exception('More money needed :('); } } } Φξεζηκνπνηείηαη ε ιέμε-θιεηδί const Πξνζπέιαζε ζε απηέο γίλεηαη κε ηνλ ίδην ηξόπν κε ηηο static ηδηόηεηεο Πξνζέμηε όηη ην όλνκα ηνπο δελ αξρίδεη κε $ Γηα κεζόδνπο, δηαηίζεηαη ην keyword final, όπσο θαη ζηε Java

Magic methods Η PHP νξίδεη έλα πιήζνο κεζόδσλ πνπ μεθηλνύλ κε (δύο underscores) νη νπνίεο όηαλ νξηζηνύλ ζε κηα class επηηεινύλ θάπνηα εηδηθή ιεηηνπξγία Ελέξγεηεο γηα ηηο νπνίεο ζηε Java θάλνπκε override κεζόδνπο ηεο ηάμεο Object, ζηελ PHP πινπνηνύληαη κε "καγηθέο" κεζόδνπο (πρ tostring, clone) Σηα επόκελα ζα εμεηάζνπκε αξθεηέο από απηέο

Constructors & destructors function construct(){ $this->balance = 50; } Constructors (θαηαζθεπαζηέο) νξίδνπκε κε ηε καγηθή κέζνδν construct Πποζοσή: μεθηλάεη κε 2 underscores! Μόλν έναρ θαηαζθεπαζηήο επηηξέπεηαη ζε θάζε νξηζκό αληηθεηκέλνπ Σε πεξίπησζε πνπ επηζπκνύκε πνιπκνξθηζκό θαηαζθεπαζηώλ, κόλε ιύζε ν έιεγρνο ησλ παξακέηξσλ (όπσο ζηε JavaScript) Destructors αληίζηνηρα κε ηελ destruct

Getters & Setters Τη γίλεηαη όηαλ επηρεηξείηαη πξνζπέιαζε ή ηξνπνπνίεζε αλύπαξθηεο ή θξπθήο ηδηόηεηαο; Μπνξνύκε λα ην νξίζνπκε, αλ δειώζνπκε ηηο "καγηθέο" κεζόδνπο get($property) θαη set($property, $value) Με θαηάιιεινπο ειέγρνπο κπνξνύκε λα νξίζνπκε δηαθνξεηηθή ζπκπεξηθνξά αλάινγα κε ην όλνκα (θαη/ή ηελ ηηκή ζε πεξίπησζε set) Σπλήζσο ρξεζηκνπνηείηαη γηα λα έρνπκε ηδηόηεηεο νη νπνίεο θαίλνληαη ζαλ public αιιά όηαλ δηαβάδνληαη ή ηξνπνπνηνύληαη εθηειείηαη θαη επηπιένλ θώδηθαο Μαο επηηξέπνπλ λα απνθύγνπκε ηε δήισζε πεξηηηώλ getters θαη setters γηα πξνιεπηηθνύο ιόγνπο, όπσο ζπρλά καο αλαγθάδεη ε Java

call() & callstatic() public function call($name, $arguments) { echo "Calling object method '$name' ". implode(', ', $arguments); } public static function callstatic($name, $arguments) { echo "Calling static method '$name' ". implode(', ', $arguments); } Άιιν έλα παξάδεηγκα "καγηθώλ" κεζόδσλ Αλ έρνπλ νξηζηεί, θαινύληαη όηαν επισειπηθεί να κληθεί μη οπαηή μέθοδορ (είηε ιόγσ πξόζβαζεο, είηε επεηδή απιά δελ ππάξρεη) Η call() αθνξά θιήζε ζε instance, ε callstatic() θιήζε ζε ζηαηηθό context Καινύληαη κε πξώηε παξάκεηξν ην όλνκα ηεο κεζόδνπ θαη δεύηεξε έλα array κε ηηο παξακέηξνπο

Serialization Η PHP δηαζέηεη ηηο κεζόδνπο serialize() θαη unserialize() γηα ηε κεηαηξνπή ελόο αληηθεηκέλνπ ζε string ή ηελ απνθσδηθνπνίεζε κηαο ηέηνηαο ζπκβνινζεηξάο, αληίζηνηρα Σπρλά ρξεζηκνπνηνύληαη γηα απνζήθεπζε αληηθεηκέλσλ ζε βάζε δεδνκέλσλ, αλ θαη ζπλήζσο θάηη ηέηνην δπζρεξαίλεη ην ρεηξηζκό ησλ δεδνκέλσλ

sleep() & wakeup() Όηαλ θαιείηαη ε serialize() γηα θάπνην αληηθείκελν, θαιείηαη πξώηα ε κέζνδνο sleep() αλ έρεη νξηζηεί ζε απηό Μπνξεί λα ρξεζηκνπνηεζεί γηα λα πξαγκαηνπνηεζεί θάπνηνο "καθαπιζμόρ" ηνπ αληηθεηκέλνπ πξηλ ηε ζεηξηνπνηήζε Πξέπεη λα επηζηξέθεη ένα array με ηα ονόμαηα ηων ιδιοηήηων πνπ πξέπεη λα ζεηξηνπνηεζνύλ Αληίζηνηρα, ε wakeup() θαιείηαη όηαλ θιεζεί ε unserialize() Μπνξεί λα ρξεζηκνπνηεζεί γηα λα αλαθηήζεη πξάγκαηα πνπ ράζεθαλ θαηά ηε ζεηξηνπνίεζε Πρ θάπνηα ζύλδεζε κε κηα βάζε δεδνκέλσλ

Cloning $copy_of_object = clone $object; Κισλνπνηνύκε έλα αληηθείκελν, ρξεζηκνπνηώληαο ηε ιέμε-θιεηδί clone Shallow copy ησλ ηδηνηήησλ Αλ έρεη νξηζηεί κέζνδνο clone() ζην αληηθείκελν, θαιείηαη κεηά ηε δεκηνπξγία ηνπ θιώλνπ γηα λα αιιάμεη ηπρόλ κεηαβιεηέο πνπ απαηηείηαη (πρ γηα deep copying)

Callable classes class CallableClass { function invoke($x) { var_dump($x); } } $obj = new CallableClass(); $obj(5); // int(5) var_dump(is_callable($obj)); // bool(true) Από ηελ PHP 5.3 ππνζηεξίδεηαη ε καγηθή κέζνδνο invoke, ε νπνία θαιείηαη όηαλ επηρεηξεζεί λα θιεζεί έλα ζηηγκηόηππν σο ζπλάξηεζε Ειέγρνπκε αλ έλα αληηθείκελν είλαη callable κε ηε ζπλάξηεζε is_callable()

Built-in objects & functions

Συναρτόςεισ για String Σρεδόλ 100 ζπλαξηήζεηο γηα ρεηξηζκό ζπκβνινζεηξώλ Σπλεζέζηεξα ρξεζηκνπνηνύκελεο: strlen() κήθνο string ζε ραξαθηήξεο strtolower(), strtoupper, ucfirst(), ucwords() κεηαηξνπέο case trim(), ltrim(), rtrim() αθαίξεζε θελώλ από ηελ αξρή θαη/ή ην ηέινο explode() δηάζπαζε string ζε ηκήκαηα θαη επηζηξνθή ηνπο ζε array substr() επηζηξνθή ηκήκαηνο (substring) κηαο ζπκβνινζεηξάο strpos(), stripos() Σε πνηα ζέζε ππάξρεη (αλ ππάξρεη) κηα ππνζπκβνινζεηξά; urlencode(), urldecode() (από)θσδηθνπνίεζε ζπκβνινζεηξάο βάζεη ηνπ ηξόπνπ πνπ ρξεζηκνπνηείηαη ζηα URI γηα GET parameters

Συναρτόςεισ για χειριςμό arrays Σρεδόλ 80 ζπλαξηήζεηο γηα ρεηξηζκό πηλάθσλ Σπλεζέζηεξεο: sizeof Πιήζνο ηηκώλ ζηνλ πίλαθα implode Έλσζε ηηκώλ ηνπ πίλαθα ζε string αληίζηξνθε ηεο explode in_array Έιεγρνο παξνπζίαο ηηκήο ζηνλ πίλαθα array_keys Επηζηξνθή ησλ θιεηδηώλ ζε λέν πίλαθα array_merge Σπγρώλεπζε πηλάθσλ array_unique Εμάιεηςε δηπιόηππσλ asort, arsort, ksort, krsort, usort, uasort, uksort Ταμηλόκεζε πίλαθα

Έξοδοσ Είηε γηα εθηύπσζε ηεο δηεπαθήο θαη ησλ δεδνκέλσλ, είηε γηα debugging echo, print Τππώλνπλ κηα ζπκβνινζεηξά ζηελ έμνδν Άιινη ηξόπνη γηα ηελ έμνδν δεδνκέλσλ: number_format(), money_format() printf(), sprintf() Εθηύπσζε ή επηζηξνθή ζπκβνινζεηξάο κε Γηα debugging: print_r() γηα εθηύπσζε πηλάθσλ αλαδξνκηθά var_dump() εθηύπσζε ηύπνπ θαη ηηκήο

Μαθηματικϋσ Συναρτόςεισ Σρεδόλ 50 καζεκαηηθέο ζπλαξηήζεηο Επηιεγκέλεο ζπλαξηήζεηο: abs() απόιπηε ηηκή round(), ceil(), floor() γηα ζηξνγγπινπνηήζεηο is_finite(), is_infinite(), is_nan() έιεγρνο ηνπ ηύπνπ ηνπ αξηζκνύ rand(), srand() δεκηνπξγία ςεπδνηπραίσλ αξηζκώλ

Web development με PHP

Superglobals Πίλαθεο πνπ είλαη δηαζέζηκνη ζε θάζε script Δελ ρξεηάδεηαη global keyword γηα λα αλαθεξζνύκε ζε απηέο εληόο ζπλαξηήζεσλ Κπξηόηεξεο νη: $_GET Δεδνκέλα πνπ πεξάζηεθαλ κέζσ GET $_POST Δεδνκέλα πνπ πεξάζηεθαλ κέζσ POST $_COOKIE Cookies πνπ ππάξρνπλ $_REQUEST = $_POST + $_GET + $_COOKIE $_SESSION Μεηαβιεηέο ζπλόδνπ $_SERVER Σηνηρεία γηα ην ηξέρνλ requestθαη ην πεξηβάιινλ ηνπ εμππεξεηεηή $_FILES Αξρείν/α πνπ αλέβαζε ν ρξήζηεο (αλ ππάξρνπλ)

Χειριςμόσ φορμών ςτην PHP <form action="reply.php?t=1234" method="post"> <input type="text" name="title" /> <textarea name="message"></textarea> <button type="submit">post</button> </form> HTML <?php echo 'Δημοςιεύτηκε το μόνυμα ςασ με τύτλο "'. $_POST['title']. '" ςτη ςυζότηςη με ID #'. $_GET['id'];?> ή PHP <?php PHP echo 'Δημοςιεύτηκε το μόνυμα ςασ με τύτλο "'. $_REQUEST['title']. '" ςτη ςυζότηςη με ID #'. $_REQUEST['id'];?>

Registered globals Υπάξρεη ε δπλαηόηεηα λα δεκηνπξγνύληαη απηόκαηα κεηαβιεηέο γηα θάζε form field Πρ ζην πξνεγνύκελν παξάδεηγκα, ζα δεκηνπξγνύληαλ απηόκαηα κεηαβιεηέο $title θαη $message Σε πνιιέο εθδόζεηο PHP ην παξαπάλσ δελ είλαη δηαζέζηκν εμ νξηζκνύ γηα ιόγνπο αζθάιεηαο θαη πξνζηαζίαο ηνπ θώδηθα, όκσο κπνξεί λα ελεξγνπνηεζεί ζην αξρείν php.ini Πξόβιεκα: Πέξαζκα (inject) δεδνκέλσλ θαηεπζείαλ ζηελ εθαξκνγή κε GET ή POST Έιεγρνο ini_get('register_globals'); Η ρξήζε ηεο ini_set() ελεξγνπνηεί ηα register_globals θαηά ηελ δηάξθεηα εθηέιεζεο αιιά δελ έρεη θαλέλα λόεκα

Importing Request Variables // This will import GET and POST vars with an "rvar_" prefix import_request_variables('gp', 'rvar_'); echo $rvar_title; Αλ επηκέλεηε ζηελ ρξήζε registered globals κπνξείηε λα ρξεζηκνπνηήζεηε ηελ ζπλάξηεζε import_request_variables(what [,prefix]) Σηε ζέζε ηνπ πξώηνπ νξίζκαηνο ππάξρεη g, p θαη/ή c πνπ ππνδειώλεη όηη επηζπκνύκε εηζαγσγή ηηκώλ κε GET, POST, COOKIE αληίζηνηρα Η ηηκή prefix είλαη πξναηξεηηθή θαη ζα πξνζηεζεί ζηελ αξρή ζεκαληηθώλ κεηαβιεηώλ. Γηα ιόγνπο αζθάιεηαο ζπλίζηαηαη ε ρξήζε ηεο.

Self Posting if(form data not collected) // print form fields and allow user to submit else if(invalid form data) // print form fields with errors and allow resubmit else // perform form action (and often redirect) Μηα πξνγξακκαηηζηηθή επηινγή πνπ ζπρλά ρξεζηκνπνηείηαη (όρη κόλν ζηελ PHP) είλαη ε ελζσκάησζε ηεο θόξκαο θαη ηεο απάληεζεο ζην ίδην αξρείν. Η βαζηθή ηδέα είλαη ε ζειίδα λα δηαθνξνπνηείηαη αλάινγα αλ ζπιιέγεη δεδνκέλα από ην ρξήζηε ή αλ απνθξίλεηαη ζηελ εηζαγσγή δεδνκέλσλ από ηνλ ρξήζηε. Φπζηθά κπνξεί λα επηηειεί επίζεο έιεγρν εγθπξόηεηαο ησλ δεδνκέλσλ

Self Posting <form action="reply.php?t=1234" method="post"> <!-- controls --> <button type="submit" name="submitted">post</button> </form> HTML if(isset($_post['submitted'])) { } PHP Έλαο εύθνινο ηξόπνο λα πξνζδηνξηζηεί ην action ζε κηα self posting θόξκα είλαη ε ρξήζε ηεο ηηκήο $_SERVER['PHP_SELF'] ζην form action ή ην κενό Πώο όκσο μέξνπκε αλ ε θόξκα ππνβιήζεθε; Απόδνζε νλόκαηνο ζην submit button θαη έιεγρνο αλ ππάξρεη Hidden input <input type="hidden" name="submitted" value="1">

Always validate Ποηέ μην εμπιζηεύεζηε ηα δεδομένα πος πποέπσονηαι από ηο σπήζηη. Αλαινγηζηείηε κόλν πόζα κπνξείηε λα αιιάμεηε αθόκε θαη κόλν κε ην Firebug Καη νη πην θαινπξναίξεηνη ρξήζηεο θάλνπλ ιάζε Παξάιεηςε ζπκπιήξσζεο θάπνηνπ πεδίνπ Λάζνο κνξθή ζηα δεδνκέλα Σε πνιιέο πεξηπηώζεηο, είλαη ζθάικα όζνλ αθνξά ηελ επρξεζηία λα απαηηείηε ζπγθεθξηκέλε κνξθή ζηα δεδνκέλα πρ ηειεθσληθνί αξηζκνί ρσξίο παύιεο ή θελά. Απιά αθαηξέζηε ηα!

Βαςικού Έλεγχοι Εγκυρότητασ isset() Έιεγρνο όηη κηα κεηαβιεηή έρεη ηηκή trim() Αθαίξεζε θελώλ empty() Ειέγρεη αλ κηα ηηκή απνπζηάδεη Type casting $age = (integer) $_POST['age']; Έιεγρνο εύξνπο θαη κνξθήο ηηκώλ If statements Regular expressions (preg_match) Φίιηξα (filter_var, από PHP 5.2)

Headers & Environment Έλα request πεξηέρεη δηάθνξεο ρξήζηκεο πιεξνθνξίεο ζην header όπσο User Agent, Accept, Accept-Language, θ.ν.θ Μπνξεί επηπιένλ λα βξεζεί θαη ην πεξηβάιινλ από ην νπνίν έξρεηαη ην request, πνπ αξθεηέο θνξέο είλαη ρξήζηκν Φξόλνο πξόζβαζεο θαη δηεύζπλζε IP κπνξεί λα είλαη ρξήζηκα ζε κεξηθέο εθαξκνγέο

Headers & Environment Τα πην ελδηαθέξνληα δεδνκέλα παξέρνληαη από ηνλ superglobal πίλαθα $_SERVER[] Όια ηα HTTP headers ζα αξρίδνπλ κε "HTTP_" HTTP_ACCEPT, HTTP_REFERER, HTTP_USER_AGENT, θηι Τα ππόινηπα ζα είλαη κεηαβιεηέο PHP_SELF, REMOTE_ADDR, REMOTE_HOST, REQUEST_METHOD Πεξηζζόηεξα: http://gr.php.net/reserved.variables

Header Output header('content-type: image/png'); Οη HTTP headers κπνξνύλ λα ξπζκηζηνύλ κε ρξήζε ηεο ζπλάξηεζεο header() Headers κπνξνύκε λα νξίζνπκε κόλν πξνηνύ ζηαιεί νπνηαδήπνηε έμνδνο Σε αληίζεζε πεξίπησζε ζα πξνθιεζεί fatal error ("Cannot modify header information -headers already sent") To ίδην ηζρύεη θπζηθά θαη γηα ηα cookies, ηα νπνία εδώ νξίδνπκε κε ηελ setcookie()

Παρϊδειγμα Απιή θόξκα επηθνηλσλίαο

HTML <form action="contact.php" method="post" id="contactform"> <ol> <li><label>όνομα: <input type="text" name="name"></label></li> <li><label>email: <input type="email" name="email"></label></li> <li><label>website: <input type="url" name="website"></label></li> <li><label>το μόνυμα ςασ: <textarea name="message"></textarea></label></li> <li> <label> <input type="checkbox" name="subscribe" value="1"> Θϋλω να λϊβω ϋνα αντύγραφο </label> </li> </ol> <button type="submit">αποςτολό</button> </form> Θπκεζείηε ηε θόξκα επηθνηλσλίαο ηνπ 1 νπ εξγαζηεξίνπ Σήκεξα ζα δνύκε πώο ζα κπνξνύζε λα ιεηηνπξγεί

Sending mail <?php $sender = $_POST['name']. '<'. $_POST['email']. '>'; $message = $_POST['message']. "\r\n\r\nwebsite:". $_POST['website']; mail( 'auebweb@gmail.com'. ($_POST['subscribe']? ', '. $sender : ''), 'New mail from contact form' // Subject $message, 'From:'. $sender; // Extra headers );?> Σπλάξηεζε mail() γηα απνζηνιή emails

Βαςικό Validation Τν παξαπάλσ ιεηηνπξγεί, αιιά δελ αξθεί Μη user-friendly Σε πεξίπησζε ιάζνπο ν ρξήζηεο δελ θαηαιαβαίλεη ηη αθξηβώο πήγε ζηξαβά Σε πεξίπησζε πνπ όια πάλε θαιά, ν ρξήζηεο δελ ελεκεξώλεηαη Μη αζθαλέρ: Μπνξεί εύθνια λα ρξεζηκνπνηεζεί γηα απνζηνιή spam κέζσ ηνπ δηθνύ καο server!

Βαςικό Validation <?php $errors = array(); // Υπϊρχει όνομα; if(!$_post['name']) { $errors[] = 'δεν ςυμπληρώςατε το όνομα ςασ'; } // Υπϊρχει email; Μοιϊζει με (ϋνα) email; if(!filter_var($_post['email'], FILTER_VALIDATE_EMAIL)) { $errors[] = 'Το email δεν φαύνεται ςωςτό'; } // Υπϊρχει μόνυμα; if(!$_post['message']) { $errors[] = 'Δεν γρϊψατε μόνυμα'; }

Putting it together if(sizeof($errors) > 0) { // Υπϊρχουν ςφϊλματα, εμφϊνιςη αυτών echo 'Συνϋβηςαν ςφϊλματα:<ul><li>'. implode('</li><li>', $errors). '</li></ul>'; } else { // Δεν υπϊρχουν ςφϊλματα // αποςτολό email echo 'To email εςτϊλη επιτυχώσ.'; }?>

Παρϊδειγμα Έξεπλα Δεκνηηθόηεηαο ηνπ Μαζήκαηνο

Σύνοψη Έρευνασ Δημοτικότητασ Η βαζηθή ιεηηνπξγία ηεο εθαξκνγήο είλαη λα παξέρεη ζηνπο ρξήζηεο κηα θόξκα ζηελ νπνία κπνξνύλ λα δειώζνπλ αλ ηνπο αξέζεη ή όρη ην κάζεκα. H αξρηηεθηνληθή ηεο εθαξκνγήο απνηειείηαη από δύν κέξε: Μηα HTML θόξκα Κώδηθά PHP πνπ δηαβάδεη θαη γξάθεη έλα αξρείν θαη εκθαλίδεη HTML θώδηθα κε ηα απνηειέζκαηα. survey_form.html, survey.php, survery_result.php

Αποθόκευςη ςε αρχεύο κειμϋνου Φξήζε fopen() γηα λα αλνίμεη ην αξρείν γηα I/O fopen(filename, mode) H ζπλάξηεζε επηζηξέθεη έλα resource (filehandle) filename: κνλνπάηη αξρείνπ modes: r,r+,w,w+,a,a+,x,x+ Πρ: $fh = fopen('file.txt', "a+"); Αλνίγεη ή δεκηνπξγεί έλα αξρείν γηα γξάςηκν θαη δηάβαζκα http://php.net/function.fopen

Εγγραφό ςε αρχεύο κειμϋνου Φξήζε ηεο fwrite() γηα εγγξαθή δεδνκέλσλ ζην αξρείν fwrite(filehandle, datastring) filehanlde: resource αξρείνπ datastring: string πνπ έρεη ηα δεδνκέλα γηα εγγξαθή Παξάδεηγκα: fwrite($fh, "some data"); Manual: http://php.net/function.fwrite Κιείζηκν αξρείνπ κε fclose($fh)

HTML Form Source <!doctype html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>php Example</title> </head> <body> <h3>do you like the class so far?</h3> <form name="survey" action="survey.php" method="post" > Yes: <input type="radio" name="vote" value="0" /><br /> No: <input type="radio" name="vote" value="1" /><br /> <input type ="submit" value ="Submit" /> </form> </body> </html>

PHP Source <?php $vote = $_REQUEST['vote']; //get content of textfile $filename = "survey_result.txt"; $content = file($filename); //put content in array $array = explode(" ", $content[0]); $yes = $array[0]; $no = $array[1]; if ($vote == 0) { $yes = $yes + 1; } if ($vote == 1) { $no = $no + 1; } //insert votes to txt file $insertvote = $yes." ".$no; $fp = fopen($filename,"w"); fputs($fp,$insertvote); fclose($fp);?> Δηάβαζκα ηνπ αξρείνπ "survey_result.txt" String tokenization κε δηαρσξηζηή ην " " θαη απνζήθεπζε ζε πίλαθα Απνζήθεπζε ηνπ πεξηερνκέλνπ ηνπ αξρείνπ ζε κεηαβιεηέο θαη ελεκέξσζε ηνπο αλάινγα κε ηελ είζνδν ηνπ ρξήζηε. Απνζήθεπζε ησλ λέσλ ηηκώλ ζην αξρείν δηαηεξώληαο ην κνξθόηππν.

PHP Source (Continued) <h2>result:</h2> <table> <tr> <td>yes:</td> <td> <?php echo(100*round($yes/($no+$yes),2));?>% </td> </tr> <tr> <td>no:</td> <td> <?php echo(100*round($no/($no+$yes),2));?>% </td> </tr> </table> Απιή εκθάληζε ησλ απνηειεζκάησλ

Σχεδύαςη δυναμικών γραφικών

GD Οη εθδόζεηο 4.3 θαη έπεηηα ελζσκαηώλνπλ ηελ βηβιηνζήθε GD γηα ηελ δπλακηθή δεκηνπξγία γξαθηθώλ αληίζηνηρε κε απηή πνπ επηηξέπεη ην canvas 2D API ζηε JavaScript Με απηήλ κπνξνύλ λα δεκηνπξγεζνύλ θαη λα επεμεξγαζηνύλ αξρεία εηθόλσλ ζε δηάθνξα format, όπσο gif, png, jpg, wbmp, θαη xpm ρξεζηκνπνηώληαο PHP Πεξηνξηζκέλεο δπλαηόηεηεο Σπρλά θαθή πνηόηεηα απνηειέζκαηνο (πρ απνπζία anti-aliasing γηα νξηζκέλεο ελέξγεηεο)

ImageMagick Γηα εθαξκνγέο πνπ απαηηνύλ ζνβαξή επεμεξγαζία εηθόλαο, ην GD δελ επαξθεί Σε αξθεηέο εγθαηαζηάζεηο PHP δηαηίζεηαη θαη ε βηβιηνζήθε ImageMagick Είλαη γξακκέλε ζε C++ αιιά δηαηίζεηαη θαη PHP API Πνιύ πεξηζζόηεξεο δπλαηόηεηεο Πνιύ θαιύηεξε πνηόηεηα απνηειέζκαηνο Δπζθνιόηεξε εγθαηάζηαζε θαη εθκάζεζε

Παρϊδειγμα χρόςησ GD // MIME type που υποδηλώνει (png) εικόνα header('content-type: image/png'); // Δημιουργύα εικόνασ $img_handle = imagecreate(120, 30) or die('cannot Create image'); // Allocation χρωμϊτων που θα χρηςιμοποιόςουμε $back_color = imagecolorallocate($img_handle, 255, 255, 0); $txt_color = imagecolorallocate($img_handle, 255, 0, 0); // Σχεδύαςη του string "Hello world!" ςτο ςημεύο (5,5) imagestring($img_handle, 31, 5, 5, 'Hello world!', $txt_color); // Τύπωμα τησ εικόνασ ςτην ϋξοδο imagepng($img_handle);

Βαςικϊ ςχόματα H βηβιηνζήθε ππνζηεξίδεη ηελ δεκηνπξγία γξακκώλ, απιώλ ζρεκάησλ θηι. Γηα παξάδεηγκα: imageline($im, x1,y1,x2,y2,color) imagerectangle ( $im, x1, y1, x2, y2, color ) imageellipse($im, cx,cy height, width, color) imagepolygon($im, array of points, numpoints, color) imagefilledpolygon($im,array of points, numpoints, color) imagefill($im,x,y,color)