Sessioni che necessitano di cookie abilitati??

  • Creatore Discussione Creatore Discussione robysdc
  • Data di inizio Data di inizio

robysdc

Nuovo Utente
15 Nov 2008
21
0
0
Ciao a tutti

vi anticipo che sono un novellino della programmazione php e che quindi la mia domanda potrà sembrarvi sciocca..

Sto creando una semplice area ad accesso riservato con le sessioni, il problema è che se nel browser disabilito i cookie

l'applicazione non mi consente più di entrare..

io sapevo che lavorando con le sessioni non c'è questa ncessità..

vi posto il codice certo del fatto che capiate il mio errore..

login.php - riceve le credenziali di accesso e le manda a redirect.php
--------------------
PHP:
 <?php
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#CCCCCC">
     <tr>
         <td>
          <form method="post" action="redirect.php">
         
            <div align="center"><span class="Stile1"><br />
            USERID: </span><input name="userid" type="text" size="20">
            &nbsp;&nbsp;&nbsp;
            <span class="Stile1"> 
            PASSWORD:</span><input type="password" name="password" size="20"><br>
             <input type="submit" value="Login" name="submit" />
            </div>
          </form></td>
</tr> </table>
require ('bottom.inc');
?>


redirect.php - controlla che le credenziali di accesso siano corrette e rimanda alla pagina protetta
-------------------------------------
PHP:
 <?php

// Abilito le sessioni
session_start();


// Creo la funzione per fare il check dello USERID e della PASSWORD
function check_user($usr,$pws) {
$textfile = fopen("utenti.txt", "r");

while ( $rigafile = fgets($textfile,1024) ) {
$campiriga = explode("|", $rigafile);
$file_username = $campiriga[4];
$file_password = $campiriga[5];
if (($file_username == $usr) && ($file_password == $pws)) {
return 0;
}
}
return 1;
fclose($textfile);
}


// Controllo che UserID e Password siano corretti; 
// se lo sono vai alla Pagina Protetta, se UserID o Password non sono corretti visualizza "non sei autorizzato ad entrare in 

quest'area"

$password = $_POST["password"];
$username = $_POST["userid"];

if (check_user($username,$password)) {
require ('top.inc');
echo "<div align='center'>Non sei autorizzato ad entrare in quest'area</div><br>
      <div align='center'>Torna alla pagina di <a href=login.php>login</a></div>";
require ('bottom.inc');
}


else {

$_SESSION['autorizzazione']=1;

header("Location: http://miosito.altervista.org/Php/Guild/sessioni/Guild.php");
};
?>

Guild.php è l'area protetta
----------------------------
PHP:
 <?php

// Abilito le sessioni
session_start();

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");



if (isset($_SESSION['autorizzazione']) || $_SESSION['autorizzazione'] == 1){
require ('top.inc');
CORPO DELLA PAGINA PROTETTA
require ('bottom.inc');
}

else {

require ('top.inc');
echo "<div align='center'>Non sei autorizzato ad entrare in quest'area</div><br>
      <div align='center'>Torna alla pagina di <a href=login.php>login</a></div>";
require ('bottom.inc');

}
?>

il tutto funziona bene ma solo se i cookie sono abilitati

se li disabilito e faccio il login, ricevo il messaggio di errore "Non sei autorizzato ad entrare in quest'area" previsto nel

caso la sessione fosse inesistente o sbagliata..

Avete qualche idea? immagino sia una mia cavolata ma non capisco dove sbaglio..
 
Ad ogni sessione viene associato un codice univoco che serve ad identificarla. Questo codice viene passato al browser che lo salva in un cookie. A tutte le richieste effettuate dal browser successivamente, viene aggiunta una intestazione con il cookie creato per la sessione. In questo modo il server può associare il browser con la relativa sessione e nel tuo caso stabilire ad esempio che un utente è già autenticato, quale utente è e tutti i dati che hai inserito nella sessione.

Se il browser ha i cookies disabilitati non può salvare questa informazione e di conseguenza ogni richiesta farà partire un nuova sessione.

L'alternativa in PHP è passare il codice della sessione negli URL delle pagine, ma questa opzione deve essere abilitata manualmente in PHP > 4.2.0.

Prova a dare un'occhiata qui.
 
ho cercato un pò in rete come abilitare il supporto per i trans-sid oppure o come si fa a riscrivere URL e form per propagare il SID?


credi che per i vari link che collegano le pagine dell'area protetta basti modificare:

codice PHP:
<a href="altroscript.php">Altro script</a>


con

codice PHP:<a href="altroscript.php?<?= SID ?>">Altro script</a>

nel form invece cosa dovrei modificare??

in alternativa come si attiva supporto per i trans-sid ?

Grazie mille
 
ho provato ad inserire nei link ?<?= SID ?> ma nn va..

qualcuno ha qualche idea? come dovrei modificare il form di login?


grazie mille
 

Discussioni simili