Newsgroup: it.comp.www.php
Titolo: Prob Sessioni

Imposto una sessione con
- $Accesso = TRUE;
- session_start();
- session_register("Accesso");
faccio un header(...)
nell'altra pagine controllo se esiste la sessione con if
(session_is_registered("Accesso"))
se prima metto un ob_end_flush, a parte qualche warnig funzia altrimenti no!
Non capisco quato ob_start e end_flush

 faccio un header(...)
Dovrebbe bastarti questo:
http://it.php.net/manual/it/ref.session.php
Se ti servono anche questi è probabile che tu abbia impostato male il tuo
script:
http://it.php.net/manual/it/function.ob-start.php
http://it.php.net/manual/it/function.ob-end-flush.php

io ho letto questi documenti, ma non si capisce bene!
Saluti
Massimo

Sembra tutto semplice, anche il codice, ma da problemi.

>Sembra tutto semplice, anche il codice, ma da problemi.
Te ce metti puro ti? 
Non basta Aultůc che prefissa abbestia? 
Si canbi subjecto non si capisie niente!
Mat3o

Sembra tutto semplice, anche il codice, ma da problemi.
Guarda il lato positivo: se non sono cosi' gravi da sentire il bisogno
di descriverli anche minimamente, vuol dire che li correggerai in poco
tempo :-)
Leonardo
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.

La descrizione e' quella nel primo post.
La riporto
Imposto una sessione con
- $Accesso = TRUE;
- session_start();
- session_register("Accesso");
faccio un header(...)


 Non capisco quato ob_start e end_flush
per funzionare, un header (comprese funzioni cookies e sessions), deve 
essere il primo output mandato al browser.
per poter comunque fare delle print PRIMA, devi bufferizzare l'output e 
poi, dopo aver mandato gli headers, gli mandi il buffer.
puoi fare in due modi:
1 - (più pesante)
  - usi una variabile dentro cui metti tutto quello che vorresti stampare
  - mandi gli headers
  - stampi la variabile
2 - (meglio)
  - ob_start() (inizia la bufferizzazione dell'output)
  - mandi gli headers
  - ob_end_flush() (finisce di bufferizzare e sputa tutto al browser.
ciao
-- 
Punkarruso
mail:punkarruso(at)geniotradottoininglese(dot)it
pubblicità progresso:
http://ethology.intercult.su.se/freescience/

   - ob_end_flush() (finisce di bufferizzare e sputa tutto al browser.
Ho adottato questa.

 La riporto
[cut] 
a parte che ti ho già risposto...
1 - cerca di quotare un po' meglio
2 - hai detto qual'è il problema ma non hai postato i messaggi che ricevi 
(in genere è da quelli che si capisce cosa non va) né il codice per intero, 
che in genere aiuta...
ciao
-- 
Punkarruso
mail:punkarruso(at)geniotradottoininglese(dot)it
pubblicità progresso:
http://www.gnu.org/philosophy/no-word-attachments.it.html

 Cosa significa.
se nel php.ini non setti la propagazione automatica, devi riferire alle 
pagine sempre con:
script.php?=SID
questo ti propaga la sessione e permette allo script chiamato di 
riconoscere la sessione a cui appartiene.
ciao
-- 
Punkarruso
mail:punkarruso(at)geniotradottoininglese(dot)it
pubblicità progresso:
http://php.dopoil.com

 Grazie per il sapiente! Cosa ho fatto di male per essere preso in giro?
Lo mette il suo Newsclient da solo, non ti prende in giro...

Faccio del mio meglio:
***************
PAGINA 1:
***************
ob_start();
session_start();
session_register("Accesso");
$relative_url = "istanzia_classe.php";
header ("Location: http://".$HTTP_SERVER_VARS['HTTP_HOST']
."/".dirname($HTTP_SERVER_VARS['PHP_SELF'])
."/".$relative_url);
ob_end_flush();
***************
PAGINA 2
***************
ob_start();
 session_start();
 if (session_is_registered("Accesso")) {
  echo "AAA";
 }
 else {
  echo "BBB";
 }
ob_end_flush();
________________
Mi stampa BBB!!!
_______________

Come si setta la propagazione automatica?
In alcuni casi le session riesco a passare.
Nel post del codice, se nella seconda pagina metto per primo un
ob_end_flus() a parte qualche warnig funziona.

 ob_end_flus() a parte qualche warnig funziona.
QUALI SONO QUESTI WARNINGS???????????????????????????
-- 
Punkarruso
mail:punkarruso(at)geniotradottoininglese(dot)it
pubblicità progresso:
http://www.gnu.org/press/2002-04-11-ms-patent.html

> QUALI SONO QUESTI WARNINGS???????????????????????????
Notice: ob_end_flush() failed to delete and flush buffer. No buffer to
delete or flush. in c:\inetpub\wwwroot\gest\istanzia_classe.php on line 4
Warning: Cannot send session cookie - headers already sent by (output
started at c:\inetpub\wwwroot\gest\istanzia_classe.php:4) in
c:\inetpub\wwwroot\gest\istanzia_classe.php on line 6
Warning: Cannot send session cache limiter - headers already sent (output
started at c:\inetpub\wwwroot\gest\istanzia_classe.php:4) in
c:\inetpub\wwwroot\gest\istanzia_classe.php on line 6
Warning: Cannot add header information - headers already sent by (output
started at c:\inetpub\wwwroot\gest\istanzia_classe.php:4) in
c:\inetpub\wwwroot\gest\istanzia_classe.php on line 25

il sapiente Massimo dice:

allora quelli che hai postato non erano gli scripts come li hai lanciati.
postali al completo (inclusi gli <? ?> e vediamo cosa si può fare...
(mi raccomando, dal primo all'ultimo byte!)
ciao
-- 
Punkarruso
mail:punkarruso(at)geniotradottoininglese(dot)it
pubblicità progresso:
http://www.ruby-lang.org/en/

************
PAGINA 1
************
<?php
 ob_start();
  mysql_connect('localhost','massimo','massimo');
  mysql_select_db('gest');
  $strSQL = "SELECT NomeUtente, Password, azienda.tkAzienda,
azienda.dsAzienda
      FROM tblUtenti, azienda
     WHERE NomeUtente = '$txtNomeUtente' AND
        Password = '$txtPassword' AND
        tblUtenti.tkAzienda = azienda.tkAzienda";
  $mySQL = mysql_query("$strSQL");
  $rstUtente = mysql_fetch_array($mySQL);
  if ($rstUtente) {
   include('classi/classe_login.php');
   $Accesso = TRUE;
   session_start();
   session_register("Accesso");
   $relative_url = "istanzia_classe.php";
   header ("Location: http://".$HTTP_SERVER_VARS['HTTP_HOST']
                       ."/".dirname($HTTP_SERVER_VARS['PHP_SELF'])
                       ."/".$relative_url);
            //header("Location:istanzia_classe.php");
  }
  else {
   session_destroy();
   $Param = urlencode("Login non corretta");
   header("location:login.php?Messaggio=$Param");
  }
 ob_end_flush();
?>
************
PAGINA 2
************
<?php
 ob_end_flush();
  //include('funzioni/accesso.php');
 session_start();
 if (session_is_registered("Accesso")) {
  if (!$Accesso) {
   $Param = urlencode("[1] Login non corretta o non si dispone dell
autorizzazione.");
   ob_end_flush();
   $relative_url = "login.php?Messaggio=$Param";
   header ("Location: http://".$HTTP_SERVER_VARS['HTTP_HOST']
                   ."/".dirname($HTTP_SERVER_VARS['PHP_SELF'])
                   ."/".$relative_url);
   //header("location:login.php?Messaggio=$Param");
   echo "DDD";
  }
  echo "AAA";
 }
 else {
  $Param = urlencode("[2] Login non corretta o non si dispone dell
autorizzazione.");
  $relative_url = "login.php?Messaggio=$Param";
   header ("Location: http://".$HTTP_SERVER_VARS['HTTP_HOST']
                   ."/".dirname($HTTP_SERVER_VARS['PHP_SELF'])
                   ."/".$relative_url);
  //echo $session_is_registered("Accesso");
 }
  include('classi/classi.php');
  $classe = new Main();
  $classe->Stampa_Pagina('header.php',
'menu.php','anagrafica/anag_clienti.php');
 ob_end_flush();
?>

                    ."/".$relative_url);
Deve (forse) diventare (stessa cosa con quello seguente, togli il ."/"):
header ("Location: http://".$HTTP_SERVER_VARS['HTTP_HOST']


Ho asciugato le pagine che ora sono:
**********
PAGINA 1
**********
<?php
$Accesso = TRUE;
session_start();
session_register("Accesso");
$relative_url = "pagina_2.php";
header ("Location: http://".$HTTP_SERVER_VARS['HTTP_HOST']
."/".dirname($HTTP_SERVER_VARS['PHP_SELF'])
."/".$relative_url);
?>
***********
PAGINA 2
**********
<?php
session_start();
if (session_is_registered("Accesso")) {
if (!$Accesso) {
echo "DDD";
}
echo "AAA";
}
else {
echo "BBB";
}
?>
Mi stampa BBB!!

 ."/".$relative_url);
---^
anche qui

Ho notato che la prima volta stampa BBB e quindi nn vede la Sessione,
la seconda volta la vede e stampa AAA perchè = 1!!!!
CHE INCUBO!
Sono 5 giorno che seguo sta cosa, sto morendo!

Ho risolto il problema inserendo il SID nel rife alla pagina 2!!!
Si puo' settarlo automatico?

 Si puo' settarlo automatico?
session.use_trans_sid = 1 nel php ini (riavvia apache poi.. eh)
Ribadisco comunque l'invito a studiarti per bene la sezione sulle sessioni
del manuale.. e suggerisco anche di abituarsi a scrivere il codice secondo
le nuove direttive.. ovvero usare
session_start();
$_SESSION['tuavariabile']  = "blablabla";
etc etc
Poi indenta il codice.. prima non ci capivo niente benchè fossero 3 if in
croce..

 Ho risolto il problema inserendo il SID nel rife alla pagina 2!!!
come volevasi dimostrare...
-- 
Punkarruso
mail:punkarruso(at)geniotradottoininglese(dot)it
pubblicità progresso:
http://www.gnu.org/philosophy/shouldbefree.html

 croce..
Mi scuso ma il client di posta nn ha preso la formattazione di PHPEDIT.
Io ho i cookie abilitati! Perchè nn lo fa in automatico senza passare il
SID?
Lavoro sotto Win 2000 professional con IIS e PHP!

 Lavoro sotto Win 2000 professional con IIS e PHP!
Ah beh allora.. non rispondo delle idiosincrasie del serverino
microsoftiano..
Mi spiace ma non lo conosco bene (per la verità non conosco bene nemmeno
Apache ma visto che devo farlo andare un po' ci ho guardato...) e quindi non
so dirti di cosa si tratti esattamente.
Forse che il php x iis non sia compilato --enable-trans-sid?..
Non saprei... metti apache va..
Tieni tra l'altro presente che potresti avere dei problemi con alcune
variabili server se sei su iis.. magari se prendi spunto da qualche script
in rete poi sul tuo non ti va perchè sei su iis e l'esempio è stato fatto
per apache.
Vabbè.. però sto andando fuori tema.. visto che hai iis ed hai esigenze tali
da non poterlo (o volerlo) cambiare.

Posto il PHP.INI magari c'è un errore.
Session Support enabled
Directive Local Value Master Value
session.auto_start:  Off Off
session.cache_expire:  180 180
session.cache_limiter:  nocache nocache
session.cookie_domain:  no value no value
session.cookie_lifetime: 0 0
session.cookie_path:   / /
session.cookie_secure:   Off Off
session.entropy_file:  no value no value
session.entropy_length:  0 0
session.gc_maxlifetime: 1440 1440
session.gc_probability:  1 1
session.name
 PHPSESSID:  PHPSESSID
session.referer_check:  no value no value
session.save_handler:  files files
session.save_path:  C:\PHP\sessiondata C:\PHP\sessiondata
session.serialize_handler: php php
session.use_cookies:  On On
session.use_trans_sid:  1 1