Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302

    La variabile di sessione non viene inizializzata

    Ciao a tutti, ho una form di login, solo che non riesco a capire perchè non viene inizializzata la variabile di sessione. questa la form

    codice:
    <?php
    
    
    include('conndb.php'); // Includo lo script di connessione
    
    
    if($_POST) {
    	effettua_login();
    } else {
    	mostra_form();
    }
    
    
    function mostra_form()
    {
    	// mostro un eventuale messaggio
    	if(isset($_GET['msg'])) {
    		echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
    	}
    	?>
    
    
    	<!DOCTYPE html>
    <html >
      
      <head>
        <meta charset="UTF-8">
        <title>Nuovo Documento</title>
        <link rel="stylesheet" href="css/style.css">
        <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
        <script src="js/index.js"></script>
      </head>
    
    
    	<body>
    
    
        <div class="wrapper">
    	<div class="container">
    		<h1>Nuovo documento</h1>
    		<form id="form_login" name = "form_login" "class="form" method="post" action="">
    			<input type="text" placeholder="Username" name="username">
    			<input type="password" placeholder="Password" name="password">
    			<button type="submit" id="login-button">Accedi</button>
    		</form>
    	</div>
    	
    	<ul class="bg-bubbles">
    
    
    	</ul>
    </div>
        
    	</body>
    </html>
    
    
    	<?
    }
    
    
    function effettua_login()
    {
    	// recupero il nome e la password inseriti dall'utente
    	$username      = trim($_POST['username']);
    	$password  	 = trim($_POST['password']);
    	
    	// verifico se devo eliminare gli slash inseriti automaticamente da PHP
    	if(get_magic_quotes_gpc()) {
    		$username      	= stripslashes($username);
    		$password  		= stripslashes($password);
    	}
    
    
    	// verifico la presenza dei campi obbligatori
    	if(!$username || !$password) {
    		$messaggio = urlencode("Non hai inserito il nome o la password");
    		header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
    		exit;
    	}
    	// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
    	$username     	= mysql_real_escape_string($username);
    	$password 		= mysql_real_escape_string($password);	
    
    
    	// preparo ed invio la query
    	$query = "SELECT * FROM utenti WHERE username = '$username' AND password = MD5('$password')";
    	$result = mysql_query($query);
    	
    	// controllo l'esito
    	if (!$result) {
    		die("Errore nella query $query: " . mysql_error());
    	}
    
    
    	$record = mysql_fetch_array($result);
    
    
    	if(!$record) {
    		$messaggio = urlencode('Nome utente o password errati');
    		header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
    	} else {
    		session_start();
    		$_SESSION['id'] = $record['id'];
    		$messaggio = urlencode('Login avvenuto con successo');
    		header("location: home.php");
    	}
    }
    
    
    ?>
    Mi dareste una mano
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  2. #2
    Prova a mettere session_start() come prima istruzione.

    P.S.
    Sei sicuro che entri nell'else?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Prova a mettere session_start() come prima istruzione.

    P.S.
    Sei sicuro che entri nell'else?
    Ciao Satifal,
    nel ringraziarti per la risposta ti comunico che sono riuscito a risolvere (seppur in parte). Il problema erano le pagine protette dalle inclusioni dirette le quali richiamavano in maniera errata la $_SESSION.

    Ora, visto che manco da parecchio nel mondo php, ho risolto facendo cosi ...
    codice:
    <?php session_start(); 
    if (!session_is_registered ('user_id')) {
    echo "<h1>Area riservata, accesso negato.</h1>";  
    echo "Per effettuare il login clicca <a href='index.php'><font color='blue'>qui</font></a>";  die;}
    session_start(); $record = $_SESSION['id'] = $_REQUEST['id'];
    echo "La tua sessione è " . $_SESSION ['user_id'];
    ?>
    Ho notato che la funzione : Function session_is_registered() is deprecated
    anche se le pagine di fatto vengono protette. Hai suggerimenti ?
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.