Problema con protezione pagina privata, la sessione non viene memorizzata

Ciao a tutti, il mio problema è il seguente: ho creato un modulo di login, collegato ad un db,  che permette di accedere ad una pagina riservata e, testandolo in locale nessun problema. Al momento della pubblicazione però è sorto un problema..quando effettuo il login corretto la pagina privata mi rimanda inevitabilmente e direttamente alla location che ho indicato nel caso non fosse ritrovata una sessione aperta o nel casso si volesse accedere alla pagina privata utilizzando direttamente l'URL. Ripeto che in locale funziona ma in remoto non c'e' verso di farlo girare.

Posto il codice della pagina privata nel caso qualcuno potesse aiutarmi:

<?php

require('config.php');


if(!isset($_SESSION['login']))
{
    header('Location: index.php');
    exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Area privata</title>
</head>

<body>
Pagina privata!<br />
<br />
<br />
<a href="logout.php">Logout</a><br />
</body>
</html>

 Vi ringrazio in anticipo per l'aiuto....

inviato 5 anni fa
righez
X 0 X

Dimenticavo! I dati che invio tramite il form interagiscono correttamente con il db...la psw viene riconosciuta e la mail viene inserita nell'apposito campo...credo che il problema sia proprio nel fatto che nn venga riconosciuta la sessione aperta...ovviamente senza questo controllo chiunque copi l'url della pagina potrebbe accedervi senza problemi...

grazie ancora per l'aiuto!

risposto 5 anni fa
righez
X 0 X

Ho testato ora le mie pagine su un altro provider e funziona perfettamente...ne deduco quindi che probabilmente il problema è dovuto a impostazioni del provider....qualcuno può aiutarmi?thanx

risposto 5 anni fa
righez
X 0 X

1) Hai provato ad usare anche altri browser web?

2) pulisci la cache dei tuoi browser e riprova.

3) controlla la configurazione di php.

risposto 5 anni fa
Mario Santagiuliana
X 0 X

Ho provato a cambiare browser e a svuotare la cache ma niente....come ho già detto ho testato i miei script su un altro provider con mysql relativo e tutto gira bene....il provider che mi da problemi è register.it, qualcuno saprebbe dirmi come posso modificare le impostazioni php di questo provider o, se ci fossero, altre impostazioni che potrebbero essermi utili per risolvere il mio guaio....sto impazzendo tra mille tentativi e non riesco proprio a capire.....

ancora grazie a tutti..a presto....

risposto 5 anni fa
righez
X 0 X

Il tipo di contratto che utilizzo è hosting developer windows e l'errore sta proprio nel fatto che all'invio del login i dati vengono inviati al db ma la pagina mi rimanda alla location indicata nel caso la sessione non sia individuata...non riesco proprio a capire....sto impazzendo....eppure ho fatto anche un test di incremento sessione ed ha funzionato...help me please....!!!!

risposto 5 anni fa
righez
X 0 X

Crea dei file php di test che dovrebbero funzionare e non vanno.

Poi facceli vedere.

P.S. se usi il php perchè prendere un hosting windows? Secondo me linux è meglio.

risposto 5 anni fa
Mario Santagiuliana
X 0 X

I file php di test che ho provato funzionano tutti...è quello che mi fa dare di matto....qui di seguito posto i codici delle mie pagine così magari qualcuno mi può dire se sono incompleti o migliorabili:

config.php

<?php
// avvio la sessione
session_start();

// Dati connessione al database
$db_host = 'xxxxxxxxxxx';        // Host - solitamente localhost
$db_utente = 'xxxxxxxxxxx';        // Nome utente del Database
$db_password = 'xxxxxxxxxxxx';        // Password del Database
$db_nomedb = 'xxxxxxxxxxxx';     // Nome del Database

// Effettua la connessione al database
$dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
mysql_select_db($db_nomedb);
?>

login.php

<?php

// Includo la connessione al database
require('config.php');


// Se il modulo viene inviato...
if(isset($_POST['login']))
{
    
    // Dati Inviati dal modulo
    $mail = (isset($_POST['email'])) ? trim($_POST['email']) : '';    // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : '';    // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
   
    

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
        $mail = addslashes($mail);
        $pass = addslashes($pass);
    }
   elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})", $mail))
        die('Email non valida');
   
      
   
    
    // Crypto la password e la confronto con quella nel database
 
    
    // Controllo l'utente esiste
    $query = mysql_query("SELECT ID FROM joe_codice WHERE codice = '$pass' LIMIT 1");
   
    
    // Se ha trovato un record
    if(mysql_num_rows($query) == 1)
   
   
    {
        $strSQL = "INSERT INTO joe_utenti (mail,codice)";
        $strSQL .= "VALUES('$mail','$pass')";
        mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());
      
      // prelevo l'id dal database
        $login = mysql_fetch_array($query);
        
        // Creo una variabile di sessione
        $_SESSION['login'] = $login['id'];
      
      
      $strSQL = "DELETE FROM joe_codice WHERE codice = '$pass'";
        mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());
        
        // reindirizzo l'utente
        header('Location: pag_download.php');
        exit;
    }
    // se non esiste da l'errore
    else
        die('Password errata');
      
      
      
      
    
      

}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

<head>
    <title>Pagina Download</title>
    <link rel="Stylesheet" href="styles/caccamo/stile.css" type="text/css" />
</head>

<body>
<div align="center">


  <div class="head"></div>
  
  <div class="content">    
  <form action="" method="post">
      <p>&nbsp;</p><p>&nbsp;</p>              
    
      <table>
        <tr>
          <td valign="top"><img src="styles/caccamo/foto_cornice.jpg"/></td>
         <td valign="top">             
            <p>
               Inserisci mail:<br/>
               <input name="email" type="text" id="email" value="email" />
            </p>
             
            <p>                                                           
               Inserisci codice:<br/>
               <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" />
                        
               <br ><br >                
               <input name="login" type="submit" value="Login" />              
            </p>
              
            
         </td>
        </tr>     
      </table>
      
          
    </form> 
    
  
   
    <div class="footer">
      <table>
        <tr>
          <td><img src="styles/caccamo/logo_estil.jpg"/></td>
         <td><img src="styles/caccamo/logo_tumino.jpg"/></td>
         <td>
           <a href="http://www.soundaymusic.com" target="_blank">
            <img src="styles/caccamo/logo_sounday.jpg"/>
           </a>
          </td>
        </tr>
      </table>      
     </div>
  </div>
        
</div>
</body>
</html>

e pag_download.php

<?php

require('config.php');


if(!isset($_SESSION['login']))
{
    header('Location: login.php');
    exit;
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

<head>
    <title>Pagina Download</title>
    <link rel="Stylesheet" href="styles/caccamo/stile.css" type="text/css" />
</head>

<body>
<p>area download</p>
</body>
</html>

ecco qui...e la cosa che mi sconcerta è che sia in locale e sia sotto un altro provider gira perfettamente....

P.S. purtroppo l'hosting non lo preso io, ma l'hanno preso precedentemente le persone per cui lavoro....

grazie ancora.....sto perdendo tutti i capelli per quanto mi fa stressare sta cosa... :tichedoff:

risposto 5 anni fa
righez
X 0 X

Invece di "!isset" prova con la funzione empty di php a vedere se c'è una sessione salvata.

risposto 5 anni fa
Mario Santagiuliana
X 0 X

Niente da fare...anche con la funzione empty le pagine si comportano allo stesso modo...al momento del submit si collega un istante alla pagina di download e immediatamente vie reindirizzato alla location indicata per la mancanza di sessione sebbene tutti i dati arrivino perfettamente al database come ordina il codice....è un vero dilemma...sono molto demoralizzato :(...siete la mia ultima speranza per non rinunciare....grazie raga....!

risposto 5 anni fa
righez
X 0 X
al momento del submit si collega un istante alla pagina di download e immediatamente vie reindirizzato alla location indicata per la mancanza di sessione

Puoi spiegarti meglio? Sei sicuro che nella tua pagina html non ci sia un refresh che reindirizza ad un'altra pagina?

risposto 5 anni fa
Mario Santagiuliana
X 0 X

Ok... sono riuscito a risolvere passando ad un hosting developer linux di register.it e questo non da alcun problema...l'hosting developer windows non leggeva proprio la sessione...finalmente l'arcano è stato svelato...grazie ancora MarioS per la tua disponibilità.....stammi bene..... :bye:

risposto 5 anni fa
righez
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda