+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 2 su 2

Richiesta informazioni su pagina web e Database

  1. #1
    zymarco non è in linea Scolaretto
    Post
    167
    Like Inviati  
    0
    Like Ricevuti  
    0
    Buongiorno a tutti,

    sono alle prime armi oltre al fatto di essere un autodidatta per cui spiegarmi è già un'impresa, conosco vb6 e vba x excel ed access 2003.

    LA mia domanda è la seguente, io mi sono costruito la mia bella pagina web, con Dreamweaver, dove al suo interno vi sono immagini, testi e tabelle. Inoltre ho inserito una tabella che teoricamente dovrebbe ospitare i dati, codice descrizione e prezzo, contenuti nel mio database "Articoli" in formato mdb.

    Lavorando tutto in locale per facilitare l'apprendimento dei concetti, senza quindi pubblicare nulla sul server, come o meglio che linguaggio si deve utilizzare per collegare pagina web e database?
    E' una cosa relativamente semplice oppure è meglio lasciar perdere?

    Grazie mille.

  2. #2
    Skary non è in linea Scolaretto
    Post
    333
    Like Inviati  
    0
    Like Ricevuti  
    0
    Diciamo a grandi linee che ogni linguaggio è buono dato che l'architettura è fatta per essere flessibile.

    Ricapitolando però (ti dico quel che ricordo di un corso che ho fatto ormai anni fa quindi controlla bene le varie parti con wikipedia &co che potrebbe sfuggirmi qualcosa di sbagliato) tu hai un computer chiamato server (non necessariamente contenente i dati) sul quale gira (oltre al sistema operativo) un programma che effettivamente funge da webserver.

    Ossia ascolta le connessioni in entrata e se sono per lui risponde servendo una pagina web.
    Senza entrare troppo nel dettaglio (anche perché dipende da webserver a webserver e soprattutto non ho conoscenze così approfondite) ogni "sito" che vuoi servire avrà uno "ambiente" suo all'interno del webserver dover saranno definite le varie risorse che gli competono.

    Queste risorse possono essere riferimenti a materiale multimediale (che si troveranno nelle pagine) e/o pagine statiche (pagine html già fatte); oltre a questo però puoi definire o degli script o dei programmi da eseguire con l'input arrivato dalla richiesta, l'output di tale esecuzione verrà servito come pagina.

    Questo sistema è chiamato CGI (common gateway interface credo) e rende la tua pagina dinamica (credo sia il tuo caso).

    In genere è preferito (anche se in linea teorica si può usare qualsiasi linguaggio) utilizzare degli script (dove per script intendo erroneamente tutti quei programmi che non siano compilati ed eseguiti nativamente dal processore) per il fatto che il motore di scripting , anche se più lento nell'esecuzione dello script, verrebbe lanciato una volta soltanto nel server e poi avvierebbe un thread per ogni script da eseguire (molto più leggero che lanciare da capo ogni volta l'esecuzione di un programma, come consumo di risorse per il server, anche se c'è da dire che la variante fast cgi dovrebbe risolvere questo problema) e perché un eventuale errore nello script (es array dimensionati male) porterebbe ad un eccezione e terminazione nello stesso, mentre un errore nel programma potrebbe portare a del code injection e su un server non è auspicabile.

    Quindi ricapitolando tu hai il tuo server, dentro di lui hai avviato un webserver in ascolto su alcune porte, se arriva una connessione su tale porta esso avvia il tuo script (es php o dot.net) lo script prende eventuali valori passati al webserver nella richiesta (passaggio di dati tramite get , post o put) e li usa come input della sua esecuzione, eventualmente preleva dati aggiuntivi collegandosi ad un database macina il tuotto e forgia la pagina html da dare in risposta.
    Ogni risposta è quindi come se fosse una pagina html statica che viene generata sul momento.
    Nota anche che siccome l'esecuzione viene riavviata exnovo ogni volta, il webserver non ha modo di mantenere uno stato interno.

    Es :
    I = io ;
    S = server ;

    I) mi collego a www.tuosito.com/index.php
    S) a questo punto la chiamata arriva al tuo webserver che esegue lo script in php chiamato index.php il quale gli dice di mandarmi alla pagina di login (altro script)
    I) il mio browser ora si collega a www.tuosito.com/login.php
    S) il tuo server riceve una chiamata alla sua pagina di login senza nessun argomento pertanto mi serve la pagina di login vuota (con i campi ancora tutti da compilare)
    I) io compilo i campi di login (user e pw) e premo submit
    S) il tuo server riceve una chiamata alla sua pagina di login con le mie credenziali di login, ora lo script si collegherà al db e verificherà che le credenziali siano corrette, se lo sono mi servirà la pagina "privata" altrimenti ritorniamo al punto precedente con la pagina di login vuota.

    NOTA : nota come in tutto questo giro il server non abbia effettivamente uno stato interno del "programma" ma tanti moduli dello stesso, oltretutto tieni presente che l'approccio che ti sto descrivendo ora è veramente molto naif in realtà per in casi come questo sarebbe meglio ricorrere a scelte come AJAX che permettono di ricaricare (come nel caso dell'errore nel login) solo il pezzo di pagina che ti interessa (limitando il consumo di banda e risorse del client) nel caso il messaggio di fallimento del login.

    Ora ipotizzando che il login sia andato a buon fine, il server non può servirmi semplicemente www.tuosito.com/pivata.php perché altrimenti io che sono cattivo mi annoterei il nome e la volta successiva non starei a fare il login nella pagina (oltretutto poi la tua pagina privata non saprebbe distinguere un utente dall'altro), il server deve quindi sfruttare il db per creare una sorta di "stato" da conservare (visto che nativamente non ne ha la possibilità).
    Per fare questo se vede che l'utente si è loggato correttamente, farà si che nel db venga scritto un nonce (sequenza numerica molto lunga e casuale) che lo identifica (l'utente) per un periodo di tempo limitato (es 12h ) ed assegnerà tale nonce all'utente.
    Reindirizzerà quindi l'utnete alla pagina http://www.tuosito.com/pivata.php?no...iopzionali=xxx dove nonce rappresenta il nonce di prima mentre datiopzionali è qualsiasi altra cosa tu voglia (in questo caso quindi stiamo inserendo noi nella destinazione che forniamo una richiesta get di ciò che vorremmo ci tornasse indietro, di modo da creare una sorta di stato che poi andremo a gestire nello script).
    (PS: considera poi che nella url vengono in genere considerati massimo 1024 caratteri, quindi una scelta più saggia sarebbe inserire questi valori sempre hardcoded, ma nella pagina in un campo ,magari nascosto di un form.
    Oltretutto avrai già capito che non ha senso far viaggiare i dati opzionali dal client al server e viceversa quando di fatto sono solo al server che interessano per l'elaborazione della pagina al prossimo giro, è quindi molto più intelligente associare anch'essi al nonce nel db).

    A questo punto la tua pagina "privata" verificherà nel db che il nonce sia corretto e valido , se lo è guarderà nel db a che utente è stato assegnato e restituirà un immagine di uno smile con sotto scritto "buongiorno utente" + nomeUtente altrimenti la scritta "Sessione scaduta".
    Per fare ciò la pagina privata non ha quindi bisogno di sapere cosa è successo prima.
    Le risorse possono essere prelevate tutte dal db (nomeUtente , messaggio da dare ed immagine) possono essere prelevate un po dal db ( nomeUtente, messaggio ) ed un po dal filesystem (immagine) che di fatto è solo un altro db oppure un po dal db (nome utente) hardcoded nello script (messaggio) e dal filesystem (immagine).

    Inutile dirti quanto avere dati hardcoded sia brutto e la prima soluzione sia invece più omogenea e pulita (garantisce maggior flessibilità e facilità nelle modifiche del tuo sito) anche perché in teoria nessuno ti vieterà mai un domani di mettere pezzi di script nel db e fare uno script principale che se eseguito guarda il db e per ogni situazione che deve gestire carica dinamicamente i pezzi che gli interessano dal db


    Considera che questa è un introduzione (neppure fatta troppo bene) e che per fare una pagina da pubblicare bisognerebbe tenere conto di molte altre cose (soprattutto riguardanti la sicurezza).
    Se la tua è una domanda didattica allora ok, altrimenti ti consiglierei (se hai necessità di fare un sito in poco tempo) di affidarti ad un CMS gratuito (tipo l'ottimo joomla).
    Ultima modifica di Skary; 12-05-2013 12:07 

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Creazione dinamica delle pagina su richiesta
    Da Frodo478 nel forum HTML, CSS e JavaScript
    Risposte: 5
    Ultimo Post: 26-06-2013, 22:00
  2. Richiesta di informazioni su login
    Da Missileback nel forum PHP
    Risposte: 7
    Ultimo Post: 28-04-2013, 17:44
  3. Richiesta informazioni per autofill su Access
    Da Round nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 03-04-2013, 11:43
  4. Recuperare informazioni pagina web
    Da Shinji nel forum Visual Basic .Net
    Risposte: 3
    Ultimo Post: 04-07-2012, 12:04
  5. Risposte: 1
    Ultimo Post: 27-11-2010, 23:06