Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [php] mistero misterioso sulle sessioni

    Ciao a tutti!!
    Ho un grosso problema!
    Ho creato un sistema di login con php e mysql. Allora la login funziona perfettamente, il problema si presenta quando io, usando le sessioni, cerco di mantenere lo stato di "loggato" navigando tra le pagine del sito.
    Il mistero nasce dal fatto che quando io testo lo script in locale, tutto funziona perfettamente, mentre quando lo butto nel server online, non mi mantiene più la sessione tra le pagine! Diciamo che su 10 tentativi la mantiene una volta! COME E' POSSIBILE?!!

    Vi prego aiutatemi!

    Vi posto il codice (sì è sempre quello, qualcuno sarà nauseato di vederlo...
    ):

    prima pagina (private.php)
    codice:
    <?php
    session_start();
    
    include ("config.inc.php");
    
    $db = mysql_connect($db_host, $db_user, $db_password) or die("Connessione non riuscita: " . mysql_error());
    
    $select = mysql_select_db($db_name, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    
    if (isset($_POST['submit'])){
    	$usr = trim($_POST['usr']);
    	$pwd = trim($_POST['pwd']);
    	$query = "SELECT * FROM tabella_utenti WHERE usr='$usr' AND pwd='$pwd' " ;
    	$sql = mysql_query($query,$db);
    	$login_check = mysql_num_rows($sql);
            $row = mysql_fetch_array($sql);
    	$usr = $row['usr']; 
    		if($login_check > 0){
    		session_register('usr');
    		header ('location:enter.php'); 
    		}
    		else {
    		header('location:private.php?login=no'); }
    } 
    
    mysql_close($db);
    
    
    
    ?>
    <?php include('header.htm'); ?>
    
    <div id="content">
      <div id="main" class="box">
    	<h3>Area Riservata</h3>
    	
    	<?php
    	if (isset($_GET['login'])) { $login = $_GET['login'];} 
    	
    	if ($login == no) { print ("<p class=\"errore\">Login errata!!!</p>
    "); }
    	
    	?>
    	
    	
    
    Inserisci username e password nel box sottostante:</p>
    	
    
    </p>
    
    	
    
    <form name="form1" method="POST" action="private.php">
      <table border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td>Nome utente: </td>
          <td><input name="usr" type="text" id="usr" class="form" /></td>
        </tr>
        <tr valign="middle">
          <td>Password: </td>
          <td><input name="pwd" type="password" id="pwd" class="form" /></td>
    	  <td rowspan="2" width="150"><input name="submit" type="submit" value="Entra" class="form" /></td>
        </tr>
      </table>
    </form>
    
    </div></div>
    		
    <? include('footer.htm'); ?>

    pagina riservata (enter.php)
    codice:
    <?php
    // Controllo accesso
    session_start();
    if (!isset($_SESSION['usr']))
    {
    header('location:private.php?login=no');
    exit;
    } 
    
    // Il resto dello script
    Spero che qualche anima buona mi risponda perchè io sto impazzendo! Ho chiesto lumi all'amministratore del mio hosting ma mi dice che per lui è tutto a posto.........

  2. #2
    Ciao.. ancora con questo codice???


    scherzo..
    Vediamo.. intanto usa i tag appositi x inserire del codice sul forum cosi si capisce meglio..
    Codice PHP:
    <?php
    session_start
    ();

    include (
    "config.inc.php");

    $db mysql_connect($db_host$db_user$db_password) or die("Connessione non riuscita: " mysql_error());

    $select mysql_select_db($db_name$db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    if (isset(
    $_POST['submit'])){ //cos'è questo submit?? il bottone?? è meglio se verifichi l'usr e la pass
        
    $usr trim($_POST['usr']);
        
    $pwd trim($_POST['pwd']);
        
    $query "SELECT * FROM tabella_utenti WHERE usr='$usr' AND pwd='$pwd' " ;
        
    $sql mysql_query($query,$db);
        
    $login_check mysql_num_rows($sql);
            
    $row mysql_fetch_array($sql);
        
    $usr $row['usr']; 
            if(
    $login_check 0){
            
    session_register('usr'); //questo non serve vedi link in fondo..
            
    header ('location:enter.php'); 
            }
            else {
            
    header('location:private.php?login=no'); }


    mysql_close($db);



    ?>//apri e chiudi inutilmente..
    <?php include('header.htm'); ?>

    <div id="content">
      <div id="main" class="box">
        <h3>Area Riservata</h3>
        
        <?php
        
    if (isset($_GET['login'])) { $login $_GET['login'];} 
        
        if (
    $login == no//no è una stringa 
    { print ("<p class=\"errore\">Login errata!!!</p>
    "
    ); }
        
        
    ?>
        
        

    Inserisci username e password nel box sottostante:</p>
        

     </p>

        

    <form name="form1" method="POST" action="private.php">
      <table border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td>Nome utente: </td>
          <td><input name="usr" type="text" id="usr" class="form" /></td>
        </tr>
        <tr valign="middle">
          <td>Password: </td>
          <td><input name="pwd" type="password" id="pwd" class="form" /></td>
          <td rowspan="2" width="150"><input name="submit" type="submit" value="Entra" class="form" /></td>
        </tr>
      </table>
    </form>

    </div></div>
            
    <? include('footer.htm'); ?>
    Io lo riscriverei cosi dal tuo foglio:
    Codice PHP:
    <?php
    session_start
    ();

    include (
    "config.inc.php");

    $db mysql_connect($db_host$db_user$db_password) or die("Connessione non riuscita: " mysql_error());

    $select mysql_select_db($db_name$db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

    if (isset(
    $_POST['usr']) && isset($_POST['pwd']) {
        
    $usr trim($_POST['usr']);
        
    $pwd trim($_POST['pwd']);
        
    $query "SELECT * FROM tabella_utenti WHERE usr='$usr' AND pwd='$pwd' " ;
        
    $sql mysql_query($query$db);
        if(
    $mysql_num_rows != 0) {
                
    $row mysql_fetch_array($sql);
            
    $_SESSION['usr'] = $row['user'];
            
    header ('location: enter.php'); 
            } else {
            
    header('location:private.php?login=no');
        }


    mysql_close($db);

    include(
    'header.htm'); 
    ?>
    <div id="content">
      <div id="main" class="box">
        <h3>Area Riservata</h3>
        
        <?php
        $login 
    = (isset($_GET['login'])) ? $_GET['login'] : '';
        
        if (
    $login == 'no') { echo "<p class=\"errore\">Login errata!!!</p>
    "
    ; }
        
        
    ?>
        
        

    Inserisci username e password nel box sottostante:</p>
        

     </p>

        

    <form name="form1" method="POST" action="private.php">
      <table border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td>Nome utente: </td>
          <td><input name="usr" type="text" id="usr" class="form" /></td>
        </tr>
        <tr valign="middle">
          <td>Password: </td>
          <td><input name="pwd" type="password" id="pwd" class="form" /></td>
          <td rowspan="2" width="150"><input name="submit" type="submit" value="Entra" class="form" /></td>
        </tr>
      </table>
    </form>

    </div></div>
            
    <? include('footer.htm'); ?>
    Se non capisci qualcosa chiedi..

    Qui trovi il link x session_register()..

    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    ho fatto le modifiche che mi hai consigliato (mancava una parentesi ma ho corretto), però non funziona ugualmente...

    vorrei ricordare che in ogni caso il mio codice originale, nonostante le imperfezioni, in locale funziona correttamente.

    ma cosa intendi per:
    if ($login == no) //no è una stringa


    secondo te dovrei fare il controllo in modo diverso?

  4. #4
    Intendevo che il valore "no" è una stringa quindi devi utilizzare gli apici..

    Mmh cosa vuol dire nella pagina enter.php il commento "//controllo accesso"?? c'è qualcosa prima di quel session_start()???

    e prova a fare:
    Codice PHP:
    session_start();
    print_r($_SESSION);
    if (!isset(
    $_SESSION['usr']))
    {
    header('location:private.php?login=no');
    exit;

    e vedi cosa ti dà..
    Questa volta, più che un voto.. è favoreggiamento.

  5. #5
    Uhh scommetto ke ti dà.. array()..

    Ho trovato l'errore... ti ho scritto male il campo della tua tabella:

    $_SESSION['usr'] = $row['user'];

    invece di

    $_SESSION['usr'] = $row['usr'];

    prova a cambiare e vedi se funzia..
    Questa volta, più che un voto.. è favoreggiamento.

  6. #6
    niente da fare... continua a non funzionare...

  7. #7
    Non va ancora?? cosa ti dà il print_r??
    Questa volta, più che un voto.. è favoreggiamento.

  8. #8
    guarda per me è un mistero!!!
    allora ho fatto le seguenti modifiche:
    Codice PHP:
    $login_check mysql_num_rows($sql);
        
        if(
    $login_check != 0) {
        
    $row mysql_fetch_array($sql);
        
    $_SESSION['usr'] = $row['usr'];
        
    header ('location:enter.php');
        } elseif (
    $login_check == 0) {
        
    header('location:private.php?login=no');
        } 
    e adesso funziona...

    non chiedermi come è possibile, comunque secondo me era qualche impostazione dell'hosting...
    tu che dici?

  9. #9
    No l'hosting non centra.. ecco l'errore...

    Codice PHP:
        if($mysql_num_rows != 0) { //qui ci va mysql_num_rows($sql) ehehe la frettaaa..
                
    $row mysql_fetch_array($sql);
            
    $_SESSION['usr'] = $row['user'];
            
    header ('location: enter.php');
            } else {
            
    header('location:private.php?login=no');
        } 
    Capito??
    Questa volta, più che un voto.. è favoreggiamento.

  10. #10
    ti eri dimenticato il ($sql) dopo $mysql_num_rows....

    beh dato che funziona ormai lo lascio come ho fatto io, tanto non cambia niente!

    grazie per l'aiuto

    PS: credo che alla fin fine l'errore iniziale fosse dovuto proprio al fatto che $login == no era senza apici!


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.