Php mysql e cms

998 views
880 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
998
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Php mysql e cms

  1. 1. Php – MySQL - CMS Ugo Rinaldi - 2010-2013 ugo.rinaldi@gmail.com
  2. 2. PHP – Hypertext Preprocessor  Motore di scripting (eseguiti sul server)  Sintassi “C-like”  Piattaforme diverse  Linguaggio potente, ricco di funzioni  Connessione a database  Modulo del Web Server  ...modulo CGI
  3. 3. A cosa vogliamo arrivare  Php  Mysql  Php + Mysql >>> Applicazioni web dinamiche
  4. 4. Pagine statiche  Html = pagine statiche  Javascript migliora molto la dinamicità client  Necessario aggiornare contenuti e dati
  5. 5. Web Server  Una applicazione server: Apache, IIS, ...  Riceve richieste client  Interagisce con altre applicazioni server  Determina ed invia al client risposta con dati e/o codice HTML
  6. 6. Cosa serve  Xampp:  Download  Installazione  Prova  Editor di testo  Browser
  7. 7. Iniziamo con Php Il tag per inserire codice php: <?php … ?> Per scrivere nella pagina: echo “Hello World!” Print(“......”) Nomi variabili: $a, $b, $importo Costanti define("COSTANTE", "Ciao mondo.");
  8. 8. I cicliwhile($i>0) { echo “i vale $i”; }do { echo "$i <br />n"; $i++; } while ($i < 10);for ($i=-5; $i < 5; $i++) { echo "$i <br />n"; }
  9. 9. Variabili Stringa$s=”Linkin Park”;print(“stringa = $s”);for ($i=0; $i<strlen($s); $i++) { print($s{$i}.“<br>”);}
  10. 10. Caratteri speciali tra apici singolo apice” doppio apice backslashr ritorno a capon nuova lineat tabulazione orizzontaleDa usare dentro una stringa tra singoli o doppi apiciesempio: “Marta disse: ”Firenze lo sa”nr”
  11. 11. OperatoriOperatori aritmetici+ - * / % ++ –Operatori di assegnamento+= -= *= /= %= &=Operatori relazionali== === < <= > >= != !==Operatori logici&& AND || OR XOR !$a%=$b equivale a $a=$a%$b
  12. 12. Flusso di controlloif ($saldo==0) { …;} else { ...;}if ... elseif … else ...
  13. 13. switch e breakSwitch ($scelta) { case “+” : $r=$a+$b; break; case “-” : $r=$a-$b; break; case “*” : $r=$a*$b; break; case “/” : $r=$a/$b; break; default: echo “operatore errato!”;}
  14. 14. foreachCiclo su tutti gli elementi di un array$a=array(“ieri”,”oggi”,”domani”,”dopodomani”);foreach($a as $ele) { print(“$ele <br>”);}
  15. 15. break – continue - exitbreak :Permette luscita da qualsiasi ciclocontinue :Salta allinizio del ciclo per literazione successivaexit :Interrompe completamente lesecuzione dello script
  16. 16. try … catch (MyException $e) ...try { // istruzione che puo causare errore} catch (Exception $e) { // istruzioni in caso di errore}
  17. 17. FunzioniPer dichiarare la funzionefunction somma($a, $b) { $c=$a+$b; return $c;}per richiamarla$somma=somma($val1,$val2); Oppure ancheprint(“la somma e : “.somma($val1,$val2).”<br>”);
  18. 18. Visibilità VariabiliSono LOCALI le variabili dichiarate in una funzioneglobal nomevariabileattiva luso di una variabile definita esternamentestatic $contatore=0Dichiara una variabile locale assegnando un valore non reinizializzato nelle successive esecuzioni
  19. 19. Parametri di una funzione utentePassati per valore es: function swap($a,$b) {…}O per riferimento es: function swap(&$a,&$b) {…}Valore di default es: function swap($a,$b=0) {…}Funzioni con numero variabile di argomenti:...func_num_args() e func_get_arg($i)...esempio fattoriale e funzioni dinamiche
  20. 20. ArrayDichiarazioni di array:$contatti [];$nomi[0]=”Marcincus”;$cd[]=”Metallica”;$squadre[“campioni”]=”Inter”;$vocali=array(“a”,”e”,”i”,”o”,”u”);...esempio array
  21. 21. Array associativi  Fondamentali in PHP  Non usano numeri per puntare agli elementi  Usano stringhe $clienti[“nome”]=”Rossi Mario”; $clienti[“provincia”]=”Catania”; $clienti[“telefono”]=”095-454545”; $cd=array(“Autore”=>”Springsteen”, “Titolo”=>”The River”, “Anno”=>1980);
  22. 22. Variabili predefinite Php  $_GET  $_POST  $GLOBALS  $_SERVER  …  ...  $_SESSION
  23. 23. Le SessioniLa sessione è il modo più semplice per seguire un utente dal momento in cui si collega a quando interrompe il collegamento internet.Il server apre una sessione con la funzione session_start() e gli assegna un nome univoco.Le variabili di sessione sono memorizzate in un array globale di nome $_SESSION[]Deposita un cookie nella macchina dellutente e ogni volta che ne ha bisogno, ne estrae i dati per risalire alla sessione e al file salvato.Iniziare la sessione con session_start() prima di ogni altro output dal server. NESSUNA funzione di uscita deve precederla, neppure il codice HTML!!
  24. 24. Session: funzioni e codicisession_start(); // apre una sessione$_SESSION[nomevariabile]; //crea larray globale che contiene tutte le variabili di sesssione.session_unset(); //distrugge le variabili sessione.session_destroy(); //distrugge una sessionesession_set_cookie_params(); //imposta i secondi di inattività oltre i quali la sessione è cancellata
  25. 25. Session: un esempio<?phpsession_start();//Recupero username e password dal form e li salvo$username = $_POST[user];$password = $_POST[pass];$_SESSION[username] = $username;$_SESSION[password] = $password;$_SESSION[views]=1;?><html>...<body>...
  26. 26. Session: lesempio in una pagina successiva<?phpsession_start();If (isset($_SESSION[views])) $_SESSION[views]=$_SESSION[views]+1;else $_SESSION[views]=1;echo "Views=". $_SESSION[views];?>
  27. 27. I file di testo Caratteri visualizzabili (testo) Accesso sequenziale Ogni riga finisce con il carattere di ritorno a capo n
  28. 28. Scrittura di un fileif (!$p_file = fopen("miofile2.txt","w")) { echo "Errore: non posso aprire il file miofile2.txt"; exit;}flock($p_file,LOCK_EX);fputs($p_file,"Pippon");fputs($p_file,"Pluton");fputs($p_file,"Paperinon");flock($p_file,LOCK_UN);fclose($p_file);
  29. 29. Lettura di un fileif (!$p_file = fopen("miofile3.txt","r")) { echo "Spiacente, non posso aprire il file";} else { while(!feof($p_file)) { $linea = fgets($p_file, 255); echo "$linea<BR>"; } fclose($p_file);}
  30. 30. Lettura e scrittura$p_file = fopen("rubrica2.csv","r");$p_file_out = fopen("miofile3.txt","w");If (!$p_file || !$p_file_out) { echo "Spiacente, non posso aprire uno dei file";} else { flock($p_file_out,LOCK_EX); while(!feof($p_file)) { $linea = fgets($p_file, 255); $linea=str_replace ( ",","n",$linea ); fputs($p_file_out,$linea); } fclose($p_file); flock($p_file_out,LOCK_UN); fclose($p_file_out);}
  31. 31. Invio dati da un form<form action=”http://127.0.0.1/mobile/registra.php” method=”post”> Nominativo: <input type=”text” name=”nome”> Email: <input type=”text” name=”email”> Citt&agrave: <input type=”text” name=”citta”> <input type=”submit” value=”Invia”></form>
  32. 32. Ricezione datiIl server riceverà i valori inviati dal form in un vettore di sistema chiamato $_REQUEST$a=$_REQUEST[nome];$b=$_REQUEST[email];$c=$_REQUEST[citta];
  33. 33. Esercizio - ClientCreare un form perla selezione di una categoria di fornitori da una list boxGenerare 2 numeri interi compresi tra 1 e 100 (longitudine e latitudine)Inserimento/modifica dei numeri generatiInserimento dellemail utenteInvio delle 4 informazioni a ricerca.php
  34. 34. Esercizio - ServerLeggere un file di testo “fornitori.txt”Per i soli record con categoria uguale a quella selezionata dal Client calcolare la distanza minima tra le coordinante client e quelle del fornitoreVisualizzare i dati del fornitore piu vicino alla posizione del client
  35. 35. MySQLPotente database SQLUtilizzato nella maggioranza dei siti dinamici sul webDownload dellultima versione dal sito Oracleoppure download XAMPPPerfettamente integrabile con Apache e Php
  36. 36. Panoramica Sql Select - usata per interrogare 1 o più righe Insert - usata nei nuovi inserimenti di riga Update - usata per modificare 1 o più righe Delete - usata per eliminare 1 o più righe
  37. 37. Interrogazione di un DB $cs=mysql_connect(“localhost”, “pippo”, “miapassword”) si connette al server mysql_select_db(“rubrica”, $cs) apre il database $recSet=mysql_query("select * from rubrica", $cs); esegue la query $line=mysql_fetch_assoc($recSet) copia il record puntato in un array associativo mysql_free_result($recSet); libera la memoria dal record set mysql_close($cs); chiude la connessione
  38. 38. Inserimento nuova riga in un DB $cs=mysql_connect(“localhost”, “pippo”, “miapassword”) si connette al server mysql_select_db(“rubrica”, $cs) apre il database $recSet=mysql_query("insert into tabella (campo1, …) values (val1,...)", $cs); mysql_close($cs); chiude la connessione
  39. 39. Modifica di una riga in un DB $cs=mysql_connect(“localhost”, “pippo”, “miapassword”) si connette al server mysql_select_db(“rubrica”, $cs) apre il database $recSet=mysql_query("update tabella set campo1=xxx, campo2=yyy...", $cs); mysql_close($cs); chiude la connessione
  40. 40. Elimina una riga in un DB $cs=mysql_connect(“localhost”, “pippo”, “miapassword”) si connette al server mysql_select_db(“rubrica”, $cs) apre il database $recSet=mysql_query("update tabella set campo1=xxx, campo2=yyy...", $cs); mysql_close($cs); chiude la connessione
  41. 41. Troppo difficileHTML, Php, MySQL (Java, Tomcat, …) TROPPO DIFFICILE...e allora
  42. 42. CMSContent Management System! Sito dinamico Applicazione lato server No programmazione Specializzati Sfrutta un DB Sezione di amministrazione
  43. 43. VantaggiNo programmazioneAspetto gestito tramite fogli di stile CSS anche già disponibili in template (temi)Anche i flat file CMS: solo file dati, nessun DB relazionale
  44. 44. Generici o SpecializzatiEnciclopedia on-line (Wiki)BlogForum(E-Learning)
  45. 45. Gli attori dei CMS Amministratori Produttori Fruitori
  46. 46. CMS open sourceDrupalJoomlaPhp-NukeWordPress
  47. 47. WordPress Download Wordpress in italiano MySQL  Creare un db “wp”  Creare un utente “wp” con tutti i privilegi per il db Creare c:xampphtdocswordpress Estrarre i file dentro c:xampphtdocswordpress
  48. 48. WordPress 2 Copiare il file wp-config-sample.php in wp-config.php Modificare il wp-config.php nei seguenti punti :  DB NAME wp  DB USER wp  DB PASSWORD wp Salvare e uscire Browser: http://localhost/wordpress/wp-admin/install.php Annotare la password Collegati
  49. 49. Gli articoli Creare una categoria Creare un articolo - Visibilità Pubblicare Pubblicazione programmata
  50. 50. Le pagine Creare un pagina Pubblicare
  51. 51. Gli UtentiAmministratore: tutto + commentiEditore: Articoli, pagine, pubblicazione (no Aspetto, e impostazioni limitate)Autore: articoli, pubblicazioneCollaboratore: articoliSottoscrittore
  52. 52. ???Ricordate lesercizio realizzato con localizzazione dellutente e individuazione del fornitore più vicino?Individuare i fruitori sul territorioIndividuare più frequenti richieste
  53. 53. MoULe
  54. 54. MoULeBack Stage:Associazione di contenuti didattici a specifiche localizzazioni geograficheAcquisizione materiale multimediale e pubblicazione online
  55. 55. FunzionalitàRicerca di informazioni legate alla posizioneInserimento contenuti in modo collaborativo (wiki e mappe concettuali)Annotazioni multimediali mediante dispositivi mobiliChat e forum sensibili alla posizionePoint of interestMonitoraggio utenti

×