Θεμα Παρουσιασησ: PHP

30
Μέλη ομάδας: Χρυσή Σέα Νικόλας Κλεάνθους Στέφανος Γεωργίου

description

Μέλη ομάδας: Χρυσή Σέα Νικόλας Κλεάνθους Στέφανος Γεωργίου. Θεμα Παρουσιασησ: PHP. Τι είναι η PHP. - PowerPoint PPT Presentation

Transcript of Θεμα Παρουσιασησ: 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 serverWeb BrowserΓια την εγκατάσταση server (Apache Web Server)αναλόγως του Λ.Σ ακολουθούμε:Windows:

http://www.apachefriends.org/en/xampp-windows.htmlLinux: http://www.apachefriends.org/en/xampp-linux.htmlMacOS:

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>

<?phpif (!function_exists("add")) { function add($x,$y){$total=$x+$y;return $total;}echo "1 + 16 = " . add(1,16);?>

</body></html>

ClassesΔημιουργούμε κλάσεις με συναρτήσεις τις οποίες καλούμε όταν δημιουργούνται exeptions.

<?phpclass 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)

<?xml version="1.0"?><note>    <to>Tove</to>    <from>Jani</from>    <heading>Reminder</heading>    <body>Don't forget me this weekend!</body></note>

DOM

note

to fromheading

body

Tove Jani

Reminde

r

Don´t forget

me this weeke

nd!

Header()

Το header() function στέλλει ένα raw HTTP header στον client.

Παράδειγμα: <html>

<?php// This results in an error.// The output above is before the header() callheader('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[$_POST['name']],0,-1);

if(array_key_exists($_POST['name'],$array) && ($_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/646

6-html-vs-php.html http://www.differencebetween.net/technol

ogy/difference-between-php-and-html/ http://php.about.com/od/advancedphp/ss/

php_sessions_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)

Ευχαριστούμε για την προσοχή σας!