Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144

    chiarimenti connessioni mysql, setcaratteri e caratteri speciali

    Ciao a tutti! volevo alcuni chiarimenti, se possibile. Che set di caratteri si usano generalmente nelle pagine php? e il set di caratteri deve essere uguale a quello usato in mysql?
    Quando faccio un inserimento nel db tramite php prima di fare la query "purifico" la stringa da caratteri speciali come virgolette e apostrofi, con quale funzione? addslash?real escape?
    e al contrario cioè dal db in un form precompilato devo usare stripslash?
    mi sono imbattuto nel creare tramite php un form di modifica con i campi precompilati e nessun problema se non nel compilare un campo input dove gli apostrofi davano noia con le virgolette del php e ho risolto cosi: value=\"".$nome."\" è corretto?
    ultima domanda riguarda le connessioni al db. Conviene aprire e chiudere tutte le volte che si esegue una query o tenere aperta la connessione?
    grazie mille

  2. #2
    1) generalmente utf8
    2) Non necessariamente ma sarebbe opportuno.
    3) mysql_real_escape_string http://forum.html.it/forum/showthrea...ostid=10166292
    4) Se l'inserimento e' corretto non devi fare nulla quando estrai i dati.
    5) echo "value=\".$nome.\" altro";
    Ma avendo aperto l'echo con doppio apice non serve la giunzione con il punto. La variabile verrebbe comunque interpretata dal parser.
    6) apri la connessione all'inizio e la chiudi alla fine. Ogni volta che chiudi azzeri il buffer del result set e se la cosa non e' voluta potrebbe causare problemi.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    grazie mille per la risposta. Quindi è sufficiente il mysql real escape?
    per la connessione non ho capito se aprirla e chiuderla ad ogni query o lasciarla aperta?grazie

  4. #4
    Originariamente inviato da lorenzo84
    grazie mille per la risposta. Quindi è sufficiente il mysql real escape?
    per la connessione non ho capito se aprirla e chiuderla ad ogni query o lasciarla aperta?grazie
    6) apri la connessione all'inizio e la chiudi alla fine. Inizio e fine script php. Le query sono all'interno dello script.
    Quando si chiude la connessione viene azzerato tutto il result set ottenuto, e la connessione successiva sara' identica alla precedente poiche' si trattera' sempre dello stesso utente, con stessi privilegi. Quindi e' una azione inutile se non viene fatta per uno specifico motivo.
    Es: cambio utente, azzeramento buffer, tab temporanee

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    Grazie mille! quindi ricapitolando.
    1) il set di catatteri da usare nella pagina e nel db è UTF-8 ?
    2) L'inserimento di dati nel db avviene tramite msql real escape?
    3) La connessione al db sempre aperta e viene chiusa solo quando l'utente si disconnette?
    Potresti dirmi quale è il comando per chiudere la connessione? è possibile farla chiudere dopo un tot di tempo come per la sessione?

  6. #6
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,650
    Non usare mysql_real_escape_string, usa PDO

    http://php.net/manual/en/intro.pdo.php

    Qui spiega l'utilizzo in maniera semplice: http://www.targetweb.it/guida-pdo-co...e-al-database/

  7. #7
    2) mysql_real_escape_string non mette nulla nel db, prepara la stringa con i dovuti caratteri di escape usati dal server mysql.

    3) la connessione non rimane sempre aperta. Dipende anche pero' da cosa intendi sempre aperta.
    L'utente rimane connesso per la durata di esecuzione dello script. Ma la connessione tra client e server una volta istituita rimane in stato di sleepping (dormiente, non attiva) per 28000 secondi (default).

    Per esecuzione dello script si intendono i pochi attimi in cui il server http processa la pagina e non la permanenza del browser sulla pagina ricevuta.

    PDO e' una estensione OO del php per l'interfacciamento a dei database. Quindi usare PDO al posto di un comando mysql_real_escape dell'estensione MYSQL non ha in se molto significato. Si potrebbe usare l'estensione PDO al posto dell'estensione MYSQLI.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    144
    quindi se non ho capito male la connessione io la apro e poi la chiude automaticamente appena processata la pagina? ma non esiste un modo per verificare le connessioni attive in php my admin?
    grazie mille.

  9. #9
    Originariamente inviato da lorenzo84
    quindi se non ho capito male la connessione io la apro e poi la chiude automaticamente appena processata la pagina? ma non esiste un modo per verificare le connessioni attive in php my admin?
    grazie mille.
    nella home di phpmyadmin trovi lo stato. se apri la pagina vedrai la lista dei processi che sono stati attivati.

    in pratica se sei l'unico utente non riuscirai mai a vedere la connessione attiva di te stesso. se lavori non vedi la statistica, se guardi la statistica non lavori. vedrai altri utenti con l'ultimo comando se sono attivi in quel attimo, altrimenti saranno in stato sleep cioe' connessione gia' realizzata ma dormiente in attesa di ulteriore utilizzo. Il tempo di stato sleep e' determinato nelle variabili di sistema del server alla voce "wait timeout" messo a 28000 sec. per default.

    Questo non signfica che sei esclusivo possessore della connessione ma solo che se ti ripresenti con le stesse caratteristiche di host/user/password entro 8 ore (28000 sec) ti verra' riassegnata la stessa connessione (process id#) evitando il processo di inizializzazione di nuova connessione che rappresenta sempre un tempo di elaborazione piu' pesante essendo vincolato, oltre alla serializzazione delle query, anche ai tempi di dialogo client/server.

    Attenzione: lo stato di sleep e' gestito dal server e non da phpmyadmin. Se vuoi cancellare le connessioni devi fare il kill al processo oppure restartare il server. Ma non ha senso il farlo.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    quasi dimenticavo...

    se ti interessano le statistiche del server esegui il comando phpinfo() e guarda alla sezione MYSQLND, scorrendo la lista troverai tutto cio' che riguarda il server.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.