Θέμα Παρουσίασης: PHP

Download Report

Transcript Θέμα Παρουσίασης: PHP

Μέλη ομάδας:
Χρυσή Σέα
Νικόλας Κλεάνθους
Στέφανος Γεωργίου
ΘΕΜΑ ΠΑΡΟΥΣΙΑΣΗΣ:
PHP
Τι είναι η PHP
 H PHP είναι μια γλώσσα προγραμματισμού
για τη δυναμική δημιουργία ιστοσελίδων.
Μια σελίδα PHP επεξεργάζεται από ένα
συμβατό web server του Internet όπως τον
Apache για να παραχθεί σε πραγματικό
χρόνο το περιεχόμενο, που θα σταλεί στο
πρόγραμμα περιήγησης των επισκεπτών σε
κώδικα HTML.
Λίγα ιστορικά…..
 το 1995, ο Rasmus Lerdorf δημιούργησε ένα απλό script με




όνομα php.cgi, στη γλώσσα Perl με σκοπό να κρατά στατιστικά
για τα άτομα που έβλεπαν το online βιογραφικό του.
Αργότερα του ζητήθηκε να προσθέσει περισσότερες
δυνατότητες. Η γλώσσα ονομάστηκε PHP/FI (=Personal Home
Page/Form Interpreter).
Το 1997 δημιουργήθηκε η 2η έκδοση της PHP/FI στη γλώσσα C
με 50.000 ιστότοπους. Το ίδιο έτος οι Andi Gutmans και Zeev
Suraski δημιούργησαν την 3η έκδοση βασιζόμενοι στην ίδια
έκδοση.
το 1998 δημιουργήθηκε η έκδοση 4 της PHP
Ιούλιο του 2004 διατέθηκε η έκδοση 5, τις οποίες
χρησιμοποιούν και οι περισσότεροι ιστότοποι επί του
παρόντος.
Πλεονεκτήματα PHP έναντι HTML



Πριν τη δημιουργία της PHP οι προγραμματιστές ιστοσελίδων
χρησιμοποιούσαν HTML. Σήμερα περισσότερα από 16.000.000 web sites,
ποσοστό μεγαλύτερο από το 35% των ιστοσελίδων του Διαδικτύου ,
χρησιμοποιούν scripts γραμμένα με τη γλώσσα PHP, ενώ το υπόλοιπο 65% το
μοιράζονται στατικές σελίδες HTML και όλες οι άλλες γλώσσες
προγραμματισμού. Η μεγάλη στροφή προς την PHP συνέβει για τους
παρακάτω λόγους:
Η HTML είναι γλώσσα στατική, επομένως τα δεδομένα δεν μπορούν να
αλλάξουν ενώ η PHP δυναμική πράγμα που σημαίνει ότι τα δεδομένα της
ιστοσελίδας μπορούν να ανανεώνονται, να αλλάζουν με εντολή του χρήστη.
Η HTML δεν είναι ασφαλής για ιστοσελίδες που απαιτούν ασφάλεια στα
δεδομένα όπως e commerce(e-banking, air-banking, bind shopping )
επεξεργασία βάσεων δεδομένων, που και πάλι απαιτούν ασφάλεια.
Όμως....

Η HTML είναι πιο εύκολη γλώσσα και γενικοτερα λάθη σε αυτή μπορούν να
«διορθωθούν» πιο εύκολα από ότι στην ΡΗΡ.
Για την εγκατάσταση της ΡΗΡ…
Η PHP χρησιμοποιείται κυρίως για ανάπτυξη
ιστοσελίδων αλλά και για εφαρμογές διαδικτύου.
Για τέτοιες υλοποιήσεις απαιτούνται :
 PHP
 Web server
 Web Browser
Για την εγκατάσταση server (Apache Web Server)
αναλόγως του Λ.Σ ακολουθούμε:
Windows: http://www.apachefriends.org/en/xamppwindows.html
Linux: http://www.apachefriends.org/en/xampp-linux.html
MacOS: http://www.apachefriends.org/en/xampp-macosx.html
Σημείωση:
Η ΡΗΡ μπορεί να χρησιμοποιηθεί και για command
line scripting (PHP CLI).
Ωστόσο στην εργασία μας δεν κρίθηκε αναγκαίο γι
αυτό και δεν θα γίνει εκτενής αναφορά στην εν λόγω
εφαρμογή.
Η γλώσσα ΡΗΡ
Η ΡΗΡ είναι γλώσσα εύκολη στην εκμάθηση
καθώς παρουσιάζει πολλές ομοιότητες με την
ήδη γνωστή και οικεία σε όλους μας (!!!)
γλώσσα, C++!
Ενδεικτικά παρουσιάζονται οι σημαντικότερες
REQUEST_METHODS για τις βασικότερες
λειτουργίες του συστήματος:
Μέθοδος Get:
<?php
$id = $_GET['id'];
if ($id == 1) {
echo "Κείμενο 1";
}
elseif ($id == 2) {
echo "Δεύτερο κείμενο";
}
else {
echo "Άλλο κείμενο";
}
?>
Με την πιο πάνω υλοποίηση ο επισκέπτης που θα ανοίξει τη
σελίδα με τη μορφή page.php?id=1 θα δει το κείμενο
"Κείμενο 1". Αν ανοίξει τη σελίδα σαν page.php?id=2 θα δει
στην οθόνη του τη φράση "Δεύτερο κείμενο", ενώ για
οποιοδήποτε άλλο id, θα δει τη φράση "Άλλο κείμενο".
 Μέθοδος Post:
Αν ο αριθμός του id πρόκειται να σταλεί μέσω
μια φόρμας που χρησιμοποιεί τη μέθοδο POST,
αρκεί να αντικατασταθεί η γραμμή:
$id = $_GET['id'];
με την ακόλουθη:
$id = $_POST['id'];
Δηλαδή:
<?php
$id = $_POST['id'];
if ($id == 1) {
echo "Κείμενο 1";
}
…
…
Hello World
Hello World in PHP: (πιο απλό δε γινόταν!)
<?php
print "Hello world!";
?>
Το μόνο που πρέπει να προσέξουμε είναι να
συμπεριλάβουμε τον php κώδικα σε <? ... ?>
Η συνέχεια περιλαμβάνει ενδεικτικά
παραδείγματα για τις δυνατότητες της
ΡΗΡ!...
Session Variables
Αποθηκεύουν πληροφορίες για ένα user session. Κρατούν πληροφορίες για ένα single
user και διατίθονται σε όλες τις σελίδες ενός application.
Παράδειγμα:
<?php // this starts the session
session_start();
// echo variable from the session, we set this on our other page
If (isset($_SESSION ['color']))
unset($_SESSION ['color']);
echo "Our color value is ".$_SESSION['color'];
If (isset($_SESSION ['size']))
unset($_SESSION ['size']);
echo "Our size value is ".$_SESSION['size'];
?>
Σημείωση: Η συνάρτηση isset(...) ελέγχει αν στη συγκεκριμένη θέση έχουμε ήδη δώσει
τιμή, οπότε επιβάλλεται μέσω της unset(…) να την «εκκενώσουμε» για να
μπορέσουμε να βάλουμε την νέα τιμή που θέλουμε.
Arrays
 Στην ΡΗΡ μπορούμε αντί να δώσουμε αριθμούς
στις θέσεις ενός πίνακα να δώσουμε ολόκληρα
strings. Αυτό απλοποιεί την αναζήτηση τιμής
μιας συγκεκριμένης θέσης.
 Παράδειγμα:
<?php
$ages['Peter'] = "32";
$ages['Quagmire'] = "30";
$ages['Joe'] = "34";
echo "Peter is " . $ages['Peter'] . " years old.";
?>
Functions
Στις συναρτήσεις επίσης μας δίνεται η δυνατότητα να ελέγξουμε κατά
πόσο έχουμε ήδη δημιουργήσει τη συγκεκριμένη συνάρτηση. Επιπλέον
μπορούμε να επιστρέψουμε τιμές χωρίς να το έχουμε δηλώσει!
 Παράδειγμα:
 <html>
<body>

<?php
if (!function_exists("add")) {
function add($x,$y)
{
$total=$x+$y;
return $total;
}
echo "1 + 16 = " . add(1,16);
?>
</body>
</html>
Classes
Δημιουργούμε κλάσεις με συναρτήσεις τις οποίες καλούμε όταν
δημιουργούνται exeptions.
 <?php
class customException extends Exception
{
public function errorMessage()
{
//error message
$errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile()
.': <b>'.$this->getMessage().'</b> is not a valid E-Mail address';
return $errorMsg;
}
}
$email = "[email protected]";
try
{
//check if
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE)
{
//throw exception if email is not valid
throw new customException($email);
}
}
catch (customException $e)
{
//display custom message
echo $e->errorMessage();
}
?>
 PHP XML DOM PARSER
(Document Object Model)
DOM
<?xml version="1.0"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this
weekend!</body>
</note>
note
to
Tove
from
headi
ng
Jani
Remi
nder
body
Don´t
forget
me this
weekend
!
Header()
 Το header() function στέλλει ένα raw HTTP header
στον client.
Παράδειγμα:
 <html>
<?php
// This results in an error.
// The output above is before the header() call
header('Location: http://www.example.com/');
?>
 Σε αυτή την περίπτωση ο client μεταφέρεται
αυτόματα στην ιστοσελίδα
http://www.example.com
Χρήση του Header στην εργασία
μας
$_SERVER['REQUEST_METHOD']
 Παράδειγμα χρήσης στην εργασία μας:
 <?php if($_SERVER[REQUEST_METHOD]=='GET') { ?>
<?php
Στο πιο πάνω παράδειγμα η μέθοδος που χρησιμοποιεί ο
server είναι η GET. Αυτο σημαίνει πώς ο client αιτείται κάτι
από τον server.
Ενώ με:
 <?php if($_SERVER[REQUEST_METHOD]=='POST') { ?>
<?php
O client αποστέλλει κάι στον server (πχ username και
password) και αναμένει την αντίδρασή του.
Θέμα Εργασίας…
Στόχος της εργασίας μας είναι η ευκολία του
administrator στη δυναμική αλλαγή των
πληροφοριών που αφορούν το colloquium του
συστήματος του Πανεπιστημίου.
Μέσω δηλαδή μιας πρακτικής κονσόλας θα
μπορεί πλέον να προσθέτει πληροφορίες για
νέους ομιλητές και να ανανεώνει πληροφορίες
(όπως νέα ώρα, ημερομηνία, αίθουσα) για τους
ήδη υπάρχοντες.
Τα στοιχεία πρέπει να μπορούν να δίνονται
δυναμικά!
Ευκολίες της ΡΗΡ
 Στην εκμάθηση (Αν έχεις χρόνο και
διάθεση!)
 Πολλές δυνατότητες
 Δυνατότητες μορφοποίησης
 Δημιουργία ιστοσελίδων δυναμικά!
Δυσκολίες
 Δεν είχαμε οποιαδήποτε προηγούμενη




επαφή με τη συγκεκριμένη γλώσσα 
πολλές – πολλές φορές Google it!
Αναγκαστήκαμε να μάθουμε μια script
language σε μικρό χρονικό διάστημα.
Η PHP δεν διαθέτει συντακτικό αναλυτή,
οπότε έπρεπε από μόνοι μας να
καταλάβουμε πούβρισκόταν το λάθος κάθε
φορά που εμφανιζόταν Blank Page.
Δυσκολία στο upload εικόνας.
Στατιστικά στοιχεία
 Γραμμές κώδικα  1200 γραμμές
 Χρόνος υλοποίησης  12 - 15 μέρες
 Σημαντικά μέρη του κώδικα 
Login
<?php session_start();
$_SESSION['name']=$_POST['name'
];
Alles
<?php
session_start();
$_SESSION['preview']=$_POST;
if($_SESSION['name']=="")
header('Location:
login.php');
?>
$file = fopen("login.txt","r") or exit("Unable to
open file!");
$array=array();
while(!feof($file))
{
$tok=strtok(fgets($file),":");
$tok2=strtok(":");
$array[$tok]=$tok2;
}
fclose($file);
?> <br><p> </p> <?php
$array[$_POST['name']] = str_replace(' ', '',
$array[$_POST['name']]);
$_POST['passwd'] = str_replace(' ', '',
$_POST['passwd']);
$array[$_POST['name']]=substr($array[$_POS
T['name']],0,-1);
if(array_key_exists($_POST['name'],$a
rray) && ($_POST['name']!="") &&
($_POST['passwd']!=""))
{
if($array[$_POST['name']]==
$_POST['passwd'])
{header('Location:
menu.php');?>
<?php
}
else
{echo "Invalid Username or
Password";
?>
<form action="login.php"
method="link">
<p><input type="submit"
value="Go back" /></p>
</form>
<?php
}
Date: <input type="text" name="date"/>
<script language="JavaScript">
new tcal ({
// form name
'formname': 'testform',
// input name
'controlname': 'date'
});
</script
Συμπεράσματα
 Η υλοποίηση δυναμικής ιστοσελίδας δεν
είναι και τόσο εύκολη υπόθεση τελικά.
 Καταλάβαμε την αξία του Συντακτικού
Αναλυτή της C! Επομένως το μάθημα των
Compilers καλό θα ήταν να γίνει
υποχρεωτικό για την κατεύθυνσή μας!
Βιβλιογραφία
 http://www.techteam.gr/wiki/PHP
 http://forum.kahuki.com/programming/6466-html





vs-php.html
http://www.differencebetween.net/technology/diffe
rence-between-php-and-html/
http://php.about.com/od/advancedphp/ss/php_sessi
ons_2.htm
http://www.w3schools.com/
http://www.php.net/manual/en/language.functions.
php
http://www.w3schools.com/php/default.asp
Βιβλίο: Programming in PHP (Rasmus Lerdorf and
Kevin Tatroe)
Ευχαριστούμε για την προσοχή
σας!