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

    Autenticazione, quale tra queste due?

    Buon giorno, sto cercando disperatamente, di capire una volta per tutte le sessioni, cookie, ma sopratutto l'autenticazione di uno o più utenti.
    Ho trovato in rete e qui su html.it, due modi apparentemente diversi di autenticazione.
    Volevo un vostro parere sui due modi e se nell'eventualità, sia del primo che del secondo, apportare qualche miglioria.

    1° esempio:
    codice:
    function authenticate() {
    	header('WWW-Authenticate: Basic realm="Prova del Sistema di Autenticazione"');
    	header('HTTP/1.0 401 Unauthorized');
    	echo "Per poter accedere a questa risorsa occorre inserire una coppia login e password valide\n";
    	exit;
    }
    	
    if (!isset($_SERVER['PHP_AUTH_USER']) || ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
    	   authenticate();
    } 
    else {
    	   echo "
    
    Benvenuto: {$_SERVER['PHP_AUTH_USER']}
    ";
    	   echo "Vecchio: {$_REQUEST['OldAuth']}";
    	   echo "<form action='{$_SERVER['PHP_SELF']}' METHOD='POST'>\n";
    	   echo "<input type='hidden' name='SeenBefore' value='1'/>\n";
    	   echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}'/>\n";
    	   echo "<input type='submit' value='Ri autentifica'/>\n";
    	   echo "</form></p>\n";
    }
    Questo primo esempio, mi restituisce all'entrata della pagina, una doppia autenticazione.
    Che, non capisco come fà a restargli in memoria lo user e la password digitati.
    Crea un file di sessione?o un cookie?E se si, in quale directory?Perchè ho tentato di trovarli, ma non ci sono riuscito.


    2° esempio:
    codice:
    include('ConnectionDB.class.php');
    $Rconn = new DBConnection();
    $Rconn->VerificaConn($ConnVersoDB);
    	
    	$_SESSION['SessUserName'] =	$_SERVER['PHP_AUTH_USER'];
    	
    	//echo "User: " . $_SESSION['SessUserName'];
    	$redirect="http://localhost/sessioni_TXT/login.php";
    	
    	//gestione della sessione nel caso in cui i cookie sono disabilitati 
    	if(isset($_POST['PHPSESSID']) && !isset($_COOKIE['PHPSESSID'])){ 
    		$PHPSESSID=$_POST['PHPSESSID'];
    	  	header("Location: $redirect?PHPSESSID=$PHPSESSID"); //si ricarica la pagina di login 
    	} 
    	 
    	session_start(); //si inizia o continua la sessione 
    	 
    	//controllo user e passwd da login 
    	if(isset($_POST['posted_username']) && isset($_POST['posted_password'])){
    		$sql = ("select distinct login, pwd_md5 from session_start where login='".$_POST['posted_username']."' and pwd_md5='".md5($_POST['posted_password'])."'") or die ("Impossibile effettuare la query sql" . mysql_error());
    		$Rs = mysql_query($sql);
    		if(@mysql_num_rows($Rs)==0){
    				echo "<p style='color:red;text-align:center;'>
    						La ricerca non ha prodotto risultati!
    						
    
    						Indietro
    					</p>";
    				//exit;
    		}
    		else{
    			while ($riga = mysql_fetch_array($Rs)) {
    				$loginDB = $riga['login'];
    				$pwd_md5DB = $riga['pwd_md5'];
    			}
    		
    			if($loginDB==($_POST['posted_username']) && $pwd_md5DB==md5($_POST['posted_password'])) 
    				$_SESSION['user']=$_POST['posted_username'];
    		}
    	} 
    	 
    	//creazione cookie per login automatico 
    	if(isset($_POST['ricorda']) && isset($_SESSION['user'])){ 
    		$cok=md5($login_user)."%%".$pass_user; 
    	  	setcookie("sav_user",$cok,time()+31536000); 
    	} 
    	 
    	//logout 
    	if($_GET['logout']==1)	{ 
    		$_SESSION=array(); // Desetta tutte le variabili di sessione. 
    	  	session_destroy(); //DISTRUGGE la sessione. 
    	  	if(isset($_COOKIE['sav_user'])) //se presente si distrugge il cookie di login automatico 
    			setcookie("sav_user",$cok,time()-31536000); 
    		  	header("Location: $redirect"); //si ricarica la pagina di login 
    		  	exit; //si termina lo script in modo da ritornare alla schermata di login 
    	} 
    	 
    	//controllo user e passwd da cookie 
    	if(isset($_COOKIE['sav_user'])){ 
    		$info_cok=$_COOKIE['sav_user']; 
    	  	$cok_user=strtok($info_cok,"%%"); 
    	  	$cok_pass=strtok("%%"); 
    	  	setcookie("sav_user",$info_cok,time()+31536000); 
    	 
    		if($cok_user==md5($login_user) && $cok_pass==$pass_user) 
    			$_SESSION['user']=$login_user; 
    	} 
    	 
    	//caso in cui si vuole ricordare il login, ma i cookie sono off 
    	if(!isset($_COOKIE['PHPSESSID']) && isset($_POST['ricorda'])) 
    		header("Location: $redirect?nocookie=1"); 
    ?> 
    <HTML> 
    	<HEAD> 
    	</HEAD> 
    	<BODY> 
    	<?php 
    	$PHPSESSID=session_id(); 
    	 
    	if(!isset($_SESSION['user'])){ //non siamo loggati, pagina di login 
    		if($_GET['nocookie']==1) //i cookie sono off e si vuole ricordare il login 
    			print("Spiacente, ma con i cookie disabilitati non posso fare i miracoli ;)
     Attivali se vuoi ricordare il tuo login.
    "); 
    	print("
    
     
    	<FORM METHOD='POST' ACTION=\"login.php\"> 
    		username: <INPUT TYPE='TEXT' SIZE='20' NAME='posted_username'>
     
    		password: <INPUT TYPE='PASSWORD' SIZE='20' NAME='posted_password'>
     
    		ricordami: <INPUT TYPE='CHECKBOX' NAME='ricorda' VALUE='1'>
    
     
    		<INPUT TYPE='SUBMIT' NAME='SUBMIT' VALUE=\"Loggami\">
    "); 
    		print("<INPUT TYPE='text' NAME='PHPSESSID' VALUE='$PHPSESSID'>"); 
    	if(!isset($_COOKIE['PHPSESSID'])) //i cookie sono off, dobbiamo propagare noi il PHPSESSID 
    		print("<INPUT TYPE='text' NAME='PHPSESSID' VALUE='$PHPSESSID'>"); 
    		print("</FORM>"); 
    	} 
    	else{ //siamo loggati pagina riservata 
    		$username=$_SESSION['user']; 
    		print("Il tuo ID: $PHPSESSID 
    
    "); 
    		print("Sei loggato come: $login_user
    
    "); 
    		print("<A HREF=\"login.php?logout=1\">logout</A>"); 
    	}
    ?>
    In questo secondo, c'è il classico form, dove si inserisce user e password.
    Faccio la connessione al DB, estrapolo i dati che mi servono per il confronto, creo un file di sessione ed eventualmente un cookie..
    Ho l'opportunità di fare un logout cosi, da cancellare( il contenuto)del file di sessione ed il cookie.

    Un'altra cosa.Una volta loggato e riconosciuto, entro e visito quelle pagine protette, ma, per tener attivo l'utente in tutte le pagine come devo fare?

    Grazie mille e scusatemi se mi sono dilungato cosi..Ma io devo capire, oltre che studiare

  2. #2
    niente regà?

  3. #3
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    entrambe le soluzioni vanno bene.
    Personalmente utilizzo la seconda soluzione e funziona esattamente come hai detto tu:
    l'utente inserisce l'username e password, lo script ne controlla l'esistenza e se esiste, crea una ( o più ) variabile all'interno della sessione ( ad esempio l'id utente ).

    Una volta creata la sessione questa sarà attiva per tutte le pagine successivamente visitate dall'utente. Quindi inserirai nel tuo codice uno script che controlla l'esistenza della o delle variabili da te create nella sessione, es.:

    Codice PHP:

    define
    SESSIONE'miaSessione' );
    $userId = isset($_SESSION[SESSIONE]['id']) ? (int)$_SESSION[SESSIONE]['id'] : 0;

    if(
    $userId == 0){
      
    // codice che va al login
    }else{
      
    // sezione protetta

    Il cookie sul pc utente lo usi se vuoi fare in modo che l'utente si possa connettere in automatico alle visite successive.
    Non ho trattato tutte le problematiche di sicurezza che sono sicuro che andrai a vederti
    Ciao

  4. #4
    grazie per avermi risposto.Ma come al solito ho qualche domandina:
    1) in questa porzione di codice del secondo script,
    codice:
    <?php
    $PHPSESSID=session_id();
    	 
    if(!isset($_SESSION['user'])){ //non siamo loggati, pagina di login
    	if($_GET['nocookie']==1) //i cookie sono off e si vuole ricordare il login
    		print("Spiacente, ma con i cookie disabilitati non posso fare i miracoli ;)
     Attivali se vuoi ricordare il tuo login.
    ");
    		print("
    
    
    			<FORM METHOD='POST' ACTION=\"login.php\">
    			username: <INPUT TYPE='TEXT' SIZE='20' NAME='posted_username'>
    
    			password: <INPUT TYPE='PASSWORD' SIZE='20' NAME='posted_password'>
    
    			ricordami: <INPUT TYPE='CHECKBOX' NAME='ricorda' VALUE='1'>
    
    
    			<INPUT TYPE='SUBMIT' NAME='SUBMIT' VALUE=\"Loggami\">
    ");
    			print("<INPUT TYPE='hidden' NAME='PHPSESSID' VALUE='$PHPSESSID'>");
    	 
    		if(!isset($_COOKIE['PHPSESSID'])) //i cookie sono off, dobbiamo propagare noi il PHPSESSID
    		print("<INPUT TYPE='hidden' NAME='PHPSESSID' VALUE='$PHPSESSID'>");
    		print("</FORM>");
    }
    /************************/
    /*******QUI***********/
    /************************/
    else{ //siamo loggati pagina riservata 
    	$username=$_SESSION['user'];
    		/*print("Il tuo ID: $PHPSESSID 
    
    ");
    		print("Sei loggato come: $username
    
    ");
    		print("<A HREF=\"login.php?logout=1\">logout</A>");*/
    		header("Location: $redirect");
    }
    ?>
    in quest'ultimo ramo, in pratica si accede alla pagina riservata

    nella pagina riservata pagina_1.php ho fatto cosi:
    codice:
    <?php
    define(SESSIONE, 'miaSessione'); 
    $userId = isset($_SESSION[SESSIONE]['id']) ? (int)$_SESSION[SESSIONE]['id'] : 0; 
    
    if($userId == 0){ 
       	echo "NON PUOI ENTRARE";
    }else{ 
       	echo "PAGINA PROTETTA";
      	print("Il tuo ID: $PHPSESSID 
    
    ");
       	print("Sei loggato come: $username
    
    ");
    	print("<A HREF=\"login.php?logout=1\">logout</A>");
    }
    ?>
    ma non capisco due cose:
    1) in define(SESSIONE,'miaSessione' ), questi due parametri dove li reperisco?
    2) nella pagina_1.php il controllo è giusto?e se si, lo dovrò eseguire per tutte quelle pagine che voglio proteggere?

    scusami, abbi pazienza...

  5. #5
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    allora, innazitutto il define col nome della sessione non è una cosa obbligatoria, piuttosto è una mia convenzione ( ma credo che anche altri scrivano il loro codice allo stesso modo ).
    Permettimi di fare un piccolo passo indietro.
    Nella tua applicazione non devono mancare 2 files che saranno inclusi in ogni singola pagina del tuo progetto ( che sia sito internet, gestionale ecc.. ):

    - file del setup ( io lo chiamo setup.php )
    - file che viene caricato subito dopo il setup ( io lo chiamo application_top.php, ho preso spunto da oscommerce )

    Nel file di setup crei una costante a cui dai il nome della sessione che varrà per quel progetto:

    Codice PHP:
    define(SESSIONE,'miaSessione' 
    Inoltre, il file di setup ti servirà per inizializzare le altre costanti, come ad esempio username, host e pass del db ( per questo dev'essere incluso sempre ).
    Dare il nome della sessione differenziato ti da la possibilità di installare 2 o più volte lo stesso progetto sullo stesso server. In caso contrario, autenticandoti in uno solo saresti autenticato da tutte le parti.

    Nel file application_top.php ( nome da esempio ) puoi inizializzare quelle variabili che ti servonoi a livello globale, ad esempio

    Codice PHP:
    $userId = isset($_SESSION[SESSIONE]['id']) ? (int)$_SESSION[SESSIONE]['id'] : 0
    Il tuo file index.php sarà qualcosa del genere:

    Codice PHP:
    <?php

    require_once('./includes/setup.php');
    require_once(
    './includes/application_top.php'); // ho creato una dir includes

    ?>
    Su application_top.php inoltre inizializzi la sessione e registri la costante

    Codice PHP:
    session_start();

    if(!
    session_is_registered(SESSIONE){
      
    session_register(SESSIONE);

    Inoltre potrai inizializzare alcuni oggetti che ti serviranno a livello globale ( ad esempio la gestione del database ).
    La sessione inoltre potrai anche salvarla sul database se preferisci ( con session_set_save_handler )

    Il controllo va bene come l'hai fatto.
    Per essere sicuro fallo direttamente sulla sessione:
    Codice PHP:
    if(isset($_SESSION[SESSIONE]['id']) && (int)$_SESSION[SESSIONE]['id'] > 0){
     
    // contenuto protetto
    }else{
     
    // login

    Non ti rimane altro che provare per vedere se le cose funzionano o meno
    Ciao

  6. #6
    ti ringrazio...ma se puoi, cortesemente, butta un'occhiata, su questo post, xkè purtroppo sono sicuro, che avrò altre cose da chiederti...
    scusami fin da ora, ma...abbi pazienza.

    Grazie mille molto gentile

  7. #7
    lo sapevo che non sarebbe stato semplice però, se puoi aiutarmi ancora te ne sarò grato.
    Dopo il tuo esempio ho fatto cosi:
    ti posto l'inizio del codice, il resto è identico a quello postato in precedenza.
    codice:
    //questa è la pagina di login.php
    
    require_once('./includes/setup.php'); 
    require_once('./includes/application_top.php'); // ho creato una dir includes 
    	$Rconn = new DBConnection();
    	$Rconn->VerificaConn($ConnVersoDB);
    	$redirect="http://localhost/websites/sessioni_TXT/pagina_1.php";
    
    
    //l'ultima parte dello script mi esegue il controllo di autenticazione:
    <?php
    $PHPSESSID=session_id();
    	if(!isset($_SESSION['user'])){ //non siamo loggati, pagina di login
    		if($_GET['nocookie']==1) //i cookie sono off e si vuole ricordare il login
    			print("Spiacente, ma con i cookie disabilitati non posso fare i miracoli ;)
     Attivali se vuoi ricordare il tuo login.
    ");
    			print("
    
    
    				<FORM METHOD='POST' ACTION=\"login.php\">
    				username: <INPUT TYPE='TEXT' SIZE='20' NAME='posted_username'>
    
    				password: <INPUT TYPE='PASSWORD' SIZE='20' NAME='posted_password'>
    
    				ricordami: <INPUT TYPE='CHECKBOX' NAME='ricorda' VALUE='1'>
    
    
    				<INPUT TYPE='SUBMIT' NAME='SUBMIT' VALUE=\"Loggami\">
    ");
    				print("<INPUT TYPE='hidden' NAME='PHPSESSID' VALUE='$PHPSESSID'>");
    	if(!isset($_COOKIE['PHPSESSID'])) //i cookie sono off, dobbiamo propagare noi il PHPSESSID
    		print("<INPUT TYPE='hidden' NAME='PHPSESSID' VALUE='$PHPSESSID'>");
    		print("</FORM>");
    	}
    	else{ //siamo loggati pagina riservata 
    		header("Location: $redirect");
    	}
    in setup.php
    codice:
    <?php
    define(SESSIONE,'sess_on_line');
    
    class DBConnection{
    	var $host;
    	var $user;
    	var $pass;
    	
    	function DBConnection(){
    		//costruttore			
    	} 
    	function VerificaConn($ConnVersoDB){
    		if($host !="" || $user !="" || $pass !=""){
    			die("Valori insistenti..Impossibile effettuare una connessione verso il DB");
    		}
    		else{
    		//impostazione connessione
    			$host = "localhost";
    			$user="root";
    			$pass="";
    			//connessione al database
    			mysql_connect($host,$user,$pass) or die ("Connessione Fallita!! " . mysql_error());
    			//selezione del DB
    			mysql_select_db("dbname") or die ("Selezione del DB Fallita!! ". mysql_error());
    		}
    		return $conn;	
    	}
    			
    	//apri la connessione
    	function db_connect($connDB){
    		return(mysql_connect($this->VerificaConn($ConnVersoDB)));
    	}
    	function db_close($chiudi_db){
    		return(mysql_close($this->$db_connect($connDB)));
    	}
    }
    ?>
    in application_top.php
    codice:
    <?php
    session_start(); 
    
    if(!session_is_registered(SESSIONE)){ 
      session_register(SESSIONE); 
    }
    
    $userId = isset($_SESSION[SESSIONE]['id']) ? (int)$_SESSION[SESSIONE]['id'] : 0;
    ?>
    in pagina_1.php( pagina riservata)
    codice:
    <?php
    require_once('./includes/setup.php'); 
    require_once('./includes/application_top.php'); // ho creato una dir includes 
    
    echo "Sess: " . $_SESSION[SESSIONE]['id'];
    /*if($userId == 0){ 
       	echo "NON PUOI ENTRARE";
    }else{ 
       	echo "PAGINA PROTETTA";
      	print("Il tuo ID: $PHPSESSID 
    
    ");
       	print("Sei loggato come: $username
    
    ");
    	print("<A HREF=\"login.php?logout=1\">logout</A>");
    }*/
    
    if(isset($_SESSION[SESSIONE]['id']) && (int)$_SESSION[SESSIONE]['id'] > 0){ 
    	echo "PAGINA PROTETTA";
      	print("Il tuo ID: $PHPSESSID 
    
    ");
       	print("Sei loggato come: $username
    
    ");
    	print("<A HREF=\"login.php?logout=1\">logout</A>");
    }else{ 
    	echo "NON PUOI ENTRARE";
    	
    }
    ?>
    Avendo fatto cosi, in pratica mi autentica in login.php, ma quando fà il redirect verso la pagina_1.php(protetta), perde il riferimento e mi dice "NON PUOI ENTRARE".

    Credo che qui ( $_SESSION[SESSIONE]['id'] perda il riferimento,bhooo!!!
    Sai dove sbaglio?

    Grazie ancora......

  8. #8
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Rispondere ai tuoi quesiti non è molto semplice, metti sempre 7 kilometri di codice
    Inizio col darti un'altra 'dritta', ovvero crea, all'interno di includes, una cartella chiamata 'classes' dove all'interno inserirai tutte le tue classi ( per ora la classe della connessione al db che hai inserito su setup.php.

    Includi quindi la classe in cima al file application_top.php.
    Per effettuare una corretta inclusione ti consiglio di crearti una costante su setup spedificando l'indirizzo fisico del server, effettuerai quindi l'inclusione in questo modo:

    application_top.php
    Codice PHP:
    // I n c l u s i o n e  C l a s s i
    require_once( FULLPATH_CLASSES.'Database.class.php' ); 
    Sempre nello stesso file istanzi l'oggetto. Così facendo lo avrai disponibile in tutte le tue pagine.
    Inoltre io non ho visto da nessuna parte un codice dove confronti gli username e pass inviati dall'utente con i record salvati sul db. Se non esiste questa parte non può avvenire il login.

    Se mi permetti, procedi in questo modo:
    1) Fai le modifiche che ti ho detto su.
    2) Crea il file index.php con un 'if' che si controllerà il valore di $_SESSION[SESSIONE]['id']
    Se inesistente o = a zero fai visualizzare il form per il login altrimenti inserisci un semplice messaggio es. SEI LOGGATO!

    3) crea uno script a cui passare i dati inviati dal form che confronta user e pass passati da form, se trova l'utente crea la chiave 'id' (con il valore dell'id utente) all'interno di $_SESSION[SESSIONE]. Dopodiche effettua il redirect dinuovo su index.php.
    Questo script può stare amche su index.php, lo fai eseguire solo se riceve un certo valore post, ad esempio mode=autenticazione ( puoi mettere un input in hidden )
    Quindi

    Codice PHP:
    if(isset($_POST)){
     switch(
    strtoupper($_POST['mode'])){
      case 
    'AUTENTICAZIONE':
       
    // codice che effettua il login
       
    header('Location: '.SITEURL); // SITEURL è una costante che ho creato su setup
       
    exit(); // giusto per essere sicuri che questo caso termini qui
      
    break;
     }

    Momentaneamente DIMENTICATI di quel codice che utilizza anche i cookie ecc.. fai un passo per volta.
    Prova e fammi sapere.
    Ciao

  9. #9
    grazie mille...ma so de 'coccio' .. allora!!
    STEP 1:
    creata cartella 'classes' dove all'interno ho inserito il file 'ConnectionDB.class.php', dov'è c'è la classe per la connessione.

    STEP 2:
    inserita classe sopra application_top.php
    codice:
    include('./includes/classes/ConnectionDB.class.php');
    require_once('./includes/application_top.php'); // ho creato una dir includes
    STEP 3:
    creare costante per l'indirizzo fisico del server?ho fatto cosi, perchè all'interno della classe ConnectionDB.class.php c'è tutto l'occorrente.Altrimenti come devo fare?
    codice:
    define(FULLPATH_CLASSES,'classes/ConnectionDB.class.php');
    STEP 4:
    creato file index.php al suo interno c'è tutto questo:
    codice:
    <?php
    	ob_start();
    	require_once('./includes/setup.php'); 
    	
    	include('./includes/classes/ConnectionDB.class.php');
    	require_once('./includes/application_top.php'); // ho creato una dir includes 
    	$Rconn = new DBConnection();
    	$Rconn->VerificaConn($ConnVersoDB);
    	
    	//controllo user e passwd da login
    	if(isset($_POST['posted_username']) && isset($_POST['posted_password'])){
    		$sql = ("select distinct login, pwd_md5 from session_start where login='".$_POST['posted_username']."' and pwd_md5='".md5($_POST['posted_password'])."'") or die ("Impossibile effettuare la query sql" . mysql_error());
    		$Rs = mysql_query($sql);
    		if(@mysql_num_rows($Rs)==0){
    			echo "<p style='color:red;text-align:center;'>
    			La ricerca non ha prodotto risultati!
    
    			Indietro
    			</p>";
    		}
    		else{
    			while ($riga = mysql_fetch_array($Rs)) {
    				$loginDB = $riga['login'];
    				$pwd_md5DB = $riga['pwd_md5'];
    			}
    			if($loginDB==($_POST['posted_username']) && $pwd_md5DB==md5($_POST['posted_password'])){
    				$_SESSION['user']=$_POST['posted_username'];
    				$PHPSESSID=$_POST['PHPSESSID'];
    			}
    		}
    	}
    
    
    if(isset($_SESSION[SESSIONE]['id']) && (int)$_SESSION[SESSIONE]['id'] > 0){ 
    	echo "PAGINA PROTETTA";
      	print("Il tuo ID: $PHPSESSID 
    
    ");
       	print("Sei loggato come: $username
    
    ");
    	print("<A HREF=\"index.php?logout=1\">logout</A>");
    }else{ 
    	//echo "NON PUOI ENTRARE";
    	print("
    
    
    		<FORM METHOD='POST' ACTION=\"index.php\">
    			username: <INPUT TYPE='TEXT' SIZE='20' NAME='posted_username'>
    
    			password: <INPUT TYPE='PASSWORD' SIZE='20' NAME='posted_password'>
    
    			ricordami: <INPUT TYPE='CHECKBOX' NAME='ricorda' VALUE='1'>
    
    
    			<INPUT TYPE='SUBMIT' NAME='SUBMIT' VALUE=\"Loggami\">
    ");
    			print("<INPUT TYPE='text' NAME='PHPSESSID' VALUE='$PHPSESSID'>");
    	if(!isset($_COOKIE['PHPSESSID'])) //i cookie sono off, dobbiamo propagare noi il PHPSESSID
    			print("<INPUT TYPE='hidden' NAME='PHPSESSID' VALUE='$PHPSESSID'>");
    	print("</FORM>");
    }
    
    ?>
    in questa pagina, non ho capito dove inserire questo script:
    codice:
    if(isset($_POST)){ 
    switch(strtoupper($_POST['mode'])){ 
      case 'AUTENTICAZIONE': 
       // codice che effettua il login 
       header('Location: '.SITEURL); // SITEURL è una costante che ho creato su setup 
       exit(); // giusto per essere sicuri che questo caso termini qui 
      break; 
    } 
    }
    quello che ho riscontrato è che, non mi crea la chiave id, per la sessione.
    bhoooo!!!!

  10. #10
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Allora, puoi partire da una base del genere:

    File: setup.php

    Codice PHP:
    <?php
      error_reporting
    (E_ALL);
      
    session_start();
      
    set_time_limit(300);
      
    ob_start();
      
    $inclusion true;
      
      
    // S w i t c h  M u l t i s e r v e r
        
    switch($_SERVER["SERVER_NAME"]){
        case 
    'localhost':
          
    define'HOST'  'localhost' );
          
    define'DB'  ''  );
          
    define'USER'  ''  );
          
    define'PASSWORD'  ''  );
          
    define'DIR_ROOT'  $_SERVER['DOCUMENT_ROOT'].'/' );
          
    define'DIR_PHISICAL_ADDR'   DIR_ROOT.);
          
    define'SITEURL' 'http://'.$_SERVER['HTTP_HOST'].'/' );
        break;
      }

      
    // D i r e c t o r i e s
      
    define'DIR_INCLUDES'  'includes/' );
      
    define'DIR_CLASSES' 'classes/'  );

      
    // F u l l  P a t h s 
      
    define'FULLPATH_CLASSES'  DIR_PHISICAL_ADDR.DIR_INCLUDES.DIR_CLASSES  );

      
    // C o s t a n t i  d i  S e s s i o n e
      
    define'SESSIONE''miaSessione');
    ?>

    File: application_top.php

    Codice PHP:
    // I n c l u s i o n e  C l a s s i
    include('./includes/classes/ConnectionDB.class.php');

    // R e g i s t r a  l a   s e s s i o n e
     
    if(!session_is_registered(SESSIONE)){
     
    session_register(SESSIONE);
    }

    // I s t a n z e  o g g e t t i  d i  u s o  g l o b a l e
    $Rconn = new DBConnection();
    $Rconn->VerificaConn($ConnVersoDB);
    ?> 

    File: index.php

    Codice PHP:
    <?php
      
    require_once('./includes/setup.php');
      require_once(
    './includes/application_top.php');

    if(isset(
    $_POST)){ 
    switch(
    strtoupper($_POST['mode'])){ 
      case 
    'AUTENTICAZIONE'
       
    // codice che effettua il login es.
      
    $dati_utente // ricavi un array con i dati dell'utente, crea un metodo che faccia ciò
      // se dati utente è un array valido in quanto l'utente è stato trovato ( ti fai i tuoi controlli ) 
      // inserisci l'id nella sessione :
        
    $_SESSION[SESSIONE]['id'] = $dati_utente['id'];
    // La funzione che redireziona l'output ci va perchè come saprai la sessione sarà letta
    // solo dopo essere stata creata
       
    header('Location: '.SITEURL); // SITEURL è una costante che ho creato su setup 
       
    exit(); // giusto per essere sicuri che questo caso termini qui 
      
    break; 

    }

        if(
    session_is_registered(SESSIONE) &&
           isset(
    $_SESSION[SESSIONE]['id']) && 
           (int)
    $_SESSION[SESSIONE]['id'] > 0)
        {
          echo 
    'SEI LOGGATO';
        }else{
    // Inserisci il form che invierà i dati POST alla medesima pagina (index.php)
    }
    ?>
    Consiglio #1:
    aggiungi alla tua classe della connessione dei metodi che ti permettano di ricavare in maniera semplice ( ovvero che ritornino ) degli array da una query

    Consiglio #2:
    gestisci tutto ciò che riguarda gli utenti ( login, logout, creazione utente, modifica ecc.. ) tramite una classe, UserManager.class.php per esempio.

    Consiglio #3:
    Comprati un buon libro.

    Ciao

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.