Visualizzazione dei risultati da 1 a 2 su 2

Discussione: sessioni php + login

  1. #1

    sessioni php + login

    1. creo un form in cui faccio inserire user e password (method='post');
    2. eseguo un query sui dati passati dall'utente. Se la query va a buon fine, ovvero l'utente è in db, setto l'array $_SESSION con i dati cho ho estratto dalla query e faccio un redirect alla index.php. Qui richiamo una funzione che si chiama display_page, la quale include il template e se
    $_SESSION è settato mostra il suo contenuto, altrimenti il form per il login

    Il problema è che devo eseguire due volte la procedura di login prima che questa abbia successo.

    codice:
    session_start();
    
    function login(){
    	
    
    	global $datab, $user, $error_msg, $user_;
    
    	$user = $_REQUEST['us_email'];
    	$password = $_REQUEST['password'];
    
    	$con = mysql_connect($datab['host'], $datab['username'], $datab['password']) or die("could not connect: " .myqsl_error());
    	mysql_select_db($datab['name'], $con) or die("could not connect: " .myqsl_error());
    	$query = "SELECT nome, cognome, priv 
    		  FROM utente
    		  WHERE us_email = '$user' AND us_password = '$password' ";
    	
    	$res = mysql_query($query, $con) or die("Mysql error: " . mysql_error());
    	$user_ = mysql_fetch_array($res);
         	
    	if($user_ == FALSE){
    
    		echo "<script> alert('utente non riconosciuto')</script>";
    		redirect("index.php",0 );
    		
    	}
    
    	else{
    		$_SESSION['nome'] = $user_['nome'];
    		$_SESSION['cognome'] = $user_['cognome'];
    		$_SESSION['priv'] = $user_['priv'];
    		redirect("index.php?myact=autentica", 0 );
    
    	}
    }
    
    function display_page(){
    
    	include 'home.php';
    	if ( isset($_SESSION['nome']) == FALSE){
                                        form();
    	}
            else 
                utente_loggato( $_SESSION['nome'],  $_SESSION['cognome'] );
                                        
    
    }
    grazie per l'aiuto

  2. #2
    il problema era ovviamente nel redirect. Nel forum ho trovato questa funzione:

    codice:
    function redirect($s,$url)
    {
       $parse_url = parse_url ( $url );
     $s = $s > 0 ? $s : 0;
        $host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : (isset($_SERVER['SERVER_ADDR']) ?  $_SERVER['SERVER_ADDR'] : '');
     
        $parse_url['scheme']   = isset($parse_url['scheme'])   ? $parse_url['scheme']   : 'http';
        $parse_url['host']     = isset($parse_url['host'])     ? $parse_url['host']     : $host;
        $parse_url['path']     = isset($parse_url['path'])     ? $parse_url['path']     : '';
        $parse_url['query']    = isset($parse_url['query'])    ? $parse_url['query']    : '';
        $parse_url['fragment'] = isset($parse_url['fragment']) ? $parse_url['fragment'] : '';
     
        if (substr($parse_url['path'], 0, 1) != '/') {
            $parse_url['path'] = dirname($_SERVER['PHP_SELF']) . '/' . $parse_url['path']; 
        }
     
        if (session_id() !== '') {
            if ($parse_url['query'] !== '') { 
                $parse_url['query'] = $parse_url['query'] . '&amp;'; 
            }
            $parse_url['query'] = '?' . $parse_url['query'] . session_name () .    '=' . session_id();
        }
     
        if ($parse_url['fragment'] !== '') { 
            $parse_url['fragment'] = '#' . $parse_url['fragment']; 
        }
     
        $url = $parse_url['scheme'] . '://' . $parse_url['host'] . $parse_url['path'];
        session_write_close();
        header("location:"   );
    
        exit();  
    	
    }
    Qualche anima pia potrebbe darmi delucidazioni su cosa succede in questa parte:

    codice:
     if (substr($parse_url['path'], 0, 1) != '/') {
            $parse_url['path'] = dirname($_SERVER['PHP_SELF']) . '/' . $parse_url['path']; 
        }
     
        if (session_id() !== '') {
            if ($parse_url['query'] !== '') { 
                $parse_url['query'] = $parse_url['query'] . '&amp;'; 
            }
            $parse_url['query'] = '?' . $parse_url['query'] . session_name () .    '=' . session_id();
        }
     
        if ($parse_url['fragment'] !== '') { 
            $parse_url['fragment'] = '#' . $parse_url['fragment']; 
        }
    grazie mille.

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.