Newsgroup: it.comp.www.php
Titolo: una sola connessione al database per sessione

La domanda che sto per porre e` chiaramente una faq. Infatti la
prima cosa che ho fatto e` di andare leggerle ma non ho risolto il
mio problema. Sicuramente sbaglio approccio a PHP, sono fin troppo
abituato a c/c++.
Uso debian woody: apache + php4 + postgresql.
Ho una pagina con due frame: uno che fa da indice con un elenco dei
valori disponibili su un database ed un'altro con i dati selezionati.
       pagina web
+-----------+------------+
|  frame 1  |  frame 2   |
|           |            |
|  cliente1 | rag. soc.  |
|  cliente2 | indirizzo  |
|  cliente3 | telefono   |
|  ....     | ...        |
+-----------+------------+
Il frame 2 legge il cliente cliccato sul frame 1 tramite url
(
http://url?cliente
) e si connette (esegue l'istruzione pg_connect) al
database ogni volta.
Mi piacerebbe poter connettermi al database una sola volta magari
quando leggo la lista dei clienti oppure meglio ancora solo ed
esclusivamente la prima volta che accedo al database.
Questo, ovviamente, se e` possibile. La motivazione di cio` e` per
avere le migliori prestazioni possibili.
Provando ad adattare l'esempio di utilizzo delle sessioni come
descritto nelle faq mi viene ritornato questo messaggio di errore:
Warning: Cannot send session cookie - headers already sent by
(output started at /html/clienti/inizio.inc:9) in 
/html/clienti/lista_clienti.php on line 6
Entrambi gli script di esempio li ho scritti all'interno del body
della pagina di esempio che ho creato. Puo` essere questo il motivo
dell'errore?
Sinceramente a me basterebbe un esempio dove viene descritto uno
script PHP con una unica connessione ad un database usato su piu`
pagine.
-- 
Massimo  ;-)  | EMail: 
q-con...@iol.it
 * ICQ: 37930285
--------------> 
http://digilander.iol.it/MaQ
  BABYLON5  --> 
http://digilander.iol.it/babylon5
  *TRIBOL*  --> 
http://digilander.iol.it/usstribolo

 
prima di un session_start() nella pagina non deve esserci alcun output, 
compresi spazi o tabulazioni.
Questo è l'errore che ti restituisce
ciao
Alesi_27

alesi_27 ha detto...

Ah grazie, ora l'errore non me lo da piu`, ma continuo a non riuscire
ad ottenere il risultato voluto.
In pratica sto cercando di portarmi dietro nei vari file *.php il
valore ritornato da pg_connect per usarlo come parametro di pg_exec.
Purtroppo pero` ora mi da un altro errore:
Warning: Supplied argument is not a valid PostgreSQL link resource in
/html/clienti/lista_clienti.php on line 9
Ovvero proprio quando cerco di utilizzare la variabile globale.
Evidentemente non si fa in quersto modo. Ci sono metodi migliori?


 
guarda solitamente uso connessioni "normali" al DB e non connessioni 
permanenti.
Mi pare cmq che non siano poi cosě differenti come prestazioni
ad ogni modo prova a guardare sul manuale la funzione pconnect per 
vedere se č quello che cerchi:
http://www.php.net/manual/it/function.pg-pconnect.php
ciao
alesi_27

 
http://www.php.net/manual/it/function.pg-pconnect.php
Si ho visto, effettivamente e` quello che mi serve. Mi pare anche
di aver capito che non serve a nulla cercare di portarmi dietro la
variabile ritornata da pg_*connect. Almeno su google groups dicono:
"You have to again call the pg_pconnect() function before using it in
a following script."
C'e` anche un'altra cosa che non capisco: come evitare di mettere
login e password in chiaro in ogni stringa di connessione.
-- 
| Massimo ;-) | EMail: 
q-con...@iol.it
 * ICQ: 37930285 |       (o_        |
|-------------> 
http://digilander.libero.it/MaQ
           |  (o-  //\   -o)  |
|  BABYLON 5 -> 
http://digilander.libero.it/babylon5
      |  (/)_ V_/_ _(\)  |
|  *TRIBOL*  -> 
http://digilander.libero.it/usstribolo
    | POWERED BY LINUX |

 
anche se sono in chiaro nessuno ad esclusione del ISP che ospita il sito 
può leggerle.
Le pagine PHP vengono interpretate e il risultato viene ricevuto dal 
browser. Il browser dunque non ha alcun accesso al codice della pagina 
scritta in PHP (ovvero non può in alcun modo leggere la login e password 
del DB).
ciao
Alesi_27

 può leggerle.
Eh, ma io sono paranoico. :))))
Grazie per l'aiuto.


>può leggerle.
io ti consiglio di portare la directory INCLUDE al di sopra di quella 
principale dove risiede il sito, farti un bel file con la connessione e 
richiamarlo all'inizio di ogni pagina
è notevolmente + protetto e cmq i dati sono solo in una pagina
con un attacco calibrato non è difficile vedere il codice php nelle 
directory dove risiede il sito(accessibili dal www), ma gli include puoi 
posizionarli dove vuoi all'interno del server basta modificare il file 
di configurazione del php

 directory dove risiede il sito(accessibili dal www),
scusa mi faresti un esempio ?
ciao
Alesi_27