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

    php problema con le sessioni.

    Ragazzi ho un problema con la mia funzione login, non riesco a portarmi la sessione da una pagina all'altra.

    nella mia pagina index.php ho il seguente form:
    Codice PHP:
    <form id="login-form" action="gestione.php" method="post">
            <
    fieldset>
                <
    legend>Entra</legend>

                <
    label for="login">Username</label>
                <
    input type="text" id="login" name="user_accesso" style="text-transform:lowercase;"/>
                <
    div class="clear"></div>
                
                <
    label for="password">Password</label>
                <
    input type="password" id="password" name="pass_accesso"/>
                <
    div class="clear"></div>

            
                <
    input type="submit" style="margin: -20px 0 0 287px;" class="button" name="commit" value="Entra"/>    
            </
    fieldset>
        </
    form
    dove mi richiamo la mia pagina gestione.php
    Codice PHP:

    <?php 

    if(!isset($_SESSION["user111"])){
    include 
    'login.php';
    }
    if(!isset(
    $_SESSION["user111"])){
    echo 
    "<script>document.location.href='index.php'</script>";
    echo 
    "<script>'Content-type: application/octet-stream'</script>";
    }
    ?>
    dove la mia pagina login.php è la seguente:
    Codice PHP:

    <?php
        $redirect
    ="index.php";
        if (isset(
    $_GET['username']) && isset($_GET['email']) )
        {
        
    $login_user_form=$_GET['username'];
        
    $login_user_form=mysql_real_escape_string ($login_user_form);    

        
    $email=$_GET['email'];
        
    $email=mysql_real_escape_string ($email);    
        
    $pass=@mysql_query("SELECT pass FROM utenti WHERE email=\"$email\" ") or die(mysql_error());
        
    $pass_user mysql_fetch_array($pass);
        
    $pass_user_form=$pass_user[0];
        } 
        else {
        
        
    $login_user_form=$_POST['user_accesso'];
        
    $login_user_form=mysql_real_escape_string ($login_user_form);    

        
    $pass_user_form=$_POST['pass_accesso'];
        }

        
    $pass=@mysql_query("SELECT pass,abilita FROM utenti WHERE user_name=\"$login_user_form\" ") or die(mysql_error());
        
    $pass_user mysql_fetch_array($pass);


    //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 login e passwprd se sono vuoti
     
    if ($login_user_form=='' or pass_user_form=='' ){
     echo (
    "<script> alert('Inserisci Nome Utente e\o Password!') </script>");
     echo 
    "<script>document.location.href='index.php'</script>";
       echo 
    "<script>'Content-type: application/octet-stream'</script>";
     
     }

    //controllo user e passwd da login
    if(isset($login_user_form) && isset($pass_user_form)){ 
        if(
    $pass_user[0]==$pass_user_form and $pass_user[1]==1)
                    {
    $_SESSION['user111']=$login_user_form;}
        if(
    $pass_user[0]==$pass_user_form and $pass_user[1]==0)
                    {echo (
    "<script> alert('Devi convalidare la registrazione, cliccando sul link ricevuto via email.')</script>");
                    echo 
    "<script>document.location.href='index.php'</script>";
       echo 
    "<script>'Content-type: application/octet-stream'</script>";         }
        if(
    $pass_user[0]!=$pass_user_form)                
                    {echo (
    "<script> alert(' Nome Utente o Password errata!') </script>");
                                    echo 
    "<script>document.location.href='index.php'</script>";
       echo 
    "<script>'Content-type: application/octet-stream'</script>";}
    }

    //creazione cookie per login automatico 
    if(isset($_POST['ricorda']) && isset($_SESSION['user111'])){ 
        
    $cok=md5($login_user)."%%".$pass_user[0]; 
        
    setcookie("sav_user",$cok,time()+31536000); 
    }

    //logout 
    if(@$_GET['logout']==1){ 
    unset(
    $_SESSION);
        
    $_SESSION=array(); // Desetta tutte le variabili di sessione. 
        
    unset($_SESSION);
        
    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 password 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[0]) 
        
    $_SESSION['user111']=$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");

    $PHPSESSID=session_id(); ?>
    <?php 
        
    if(!isset($_SESSION['user111'])){ //non siamo loggati, pagina di login 
            
    if(@$_GET['nocookie']==1){ //i cookie sono off e si vuole ricordare il login 
                
    print("<script>alert('I cookie sono disabilitati. Attivali per il login automantico!')</script>"); 
                                echo 
    "<script>document.location.href='index.php'</script>";
                                  echo 
    "<script>'Content-type: application/octet-stream'</script>";}
    ?>
    <?php
        
    if(!isset($_COOKIE['PHPSESSID'])) //i cookie sono off, dobbiamo propagare noi il PHPSESSID 
            
    print("<input type=\"hidden\" name=\"phpsessid\" value=\"$PHPSESSID\" />");}
        else{
             
    $username=$_SESSION['user111'];
             
    $id_utente_1 mysql_query("SELECT id FROM utenti WHERE user_name=\"$username\" ") or die(mysql_error());
             
    $id_utente mysql_fetch_array($id_utente_1); 
             echo 
    $id_utente['id'];    
        }
    ?>

    <div align="center">
                <form action="gestione.php?logout=1" method="post">
                        <input id="loginsubmit" type="submit" value="Logout" >
                </form>
            </div>
    il problema è che se poi mi richiamo un'altra pagina del tipo gestione.php?page=2 mi dice che non sono loggato, come mai? sto impazzendo

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    prova mettendo il session_start() come primo comando dei vari script

  3. #3
    ciao, ma di preciso dove lo dovrei mettere? perchè gia è messo dentro login.php

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    gestione.php
    Codice PHP:
    <?php  
    session_start
    ();

    if(!isset(
    $_SESSION["user111"])){ 
    include 
    'login.php'

    [...]
    anche in login, metti il session_start nella stessa posizione... e anche nelle pagine seguenti, dove ti serve

  5. #5
    veramente facendo cosi non mi funziona piu' nulla

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    ottieni qualche errore in particolare?

  7. #7
    errore no, ma o mi loggo e non mi loggo non mi dice proprio nulla

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    allora, ho fatto un po' di test sul tuo codice: prima cosa, non capisco il controllo in gestione.php, gli chiedi di fare due cose diverse sotto la stessa condizione (probabilmente nella seconda hai solo dimenticato di togliere il "!" davanti alla variabile di sessione).
    Per far funzionare il controllo devi dichiarare il session_start() in gestione.php, se lo dichiari anche nel form puoi fare il giro completo per vedere se mantiene la sessione. Dichiaralo anche in index.php e prova a stampare a video la variabile di sessione per vedere se viene mantenuta.

    quando includi login.php, puoi anche non dichiarare il session_start, dato che è già presente in gestione.php e si trasferisce alla pagina inclusa.

    nel login.php ci sono alcuni errori (ad esempio, alla variabile $pass_user_form manca il "$")

    abilita la visualizzazione degli errori, se non l'hai già fatto.

    PS: se posso, io non lo passerei il valore dello user in chiaro nella sessione...

  9. #9
    ciao, ora funziona, ho messo il session start in gestione.php, per quanto riguarda il valore dell'user nella sessione , tu cosa mi consigli?
    perche a me questo valore poi serve per lavorare sulle query, come lo dovrei passare criptato?

    Perche se no lo dovrei passare criptato, e poi decodificarlo per fare le mie query

  10. #10
    ho risolto cosi, ne frattempo ti posto pure il codice che faccio per poi lavorare con tutte le query:
    Codice PHP:
    <?php

    $connessione 
    mysql_connect('localhost''root''') or die(mysql_error());
    $selezione_db mysql_select_db('portale'$connessione) or die(mysql_error());
    require 
    'funzioni_stringhe.php';
    require 
    'variabili.php';
    session_start();
     
    //logout 
    if($_GET['logout']==1){ 
    unset(
    $_SESSION);
        
    $_SESSION=array(); // Desetta tutte le variabili di sessione. 
        
    unset($_SESSION);
        
    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); 
        echo 
    "<script>document.location.href='index.php'</script>";
       echo 
    "<script>'Content-type: application/octet-stream'</script>";   
        exit; 
    //si termina lo script in modo da ritornare alla schermata di login 
    }

    ?>
    <?php 
    if(!IsSet($_SESSION['user111'])) //non siamo loggati, pagina di login 

      

        include 
    'login.php';

    else 
    //siamo loggati pagina riservata 

      echo 
    $username=$_SESSION['user111']; 
               
             
    $id_utente_1 mysql_query("SELECT id FROM utenti WHERE user_name=\"$username\" ") or die(mysql_error());
             
    $id_utente mysql_fetch_array($id_utente_1); 
             echo 
    '
    id UTENTE'
    .$id_utente['id'];     
      print(
    "<A HREF=\"gestione.php?logout=1\">logout</A>"); 

    ?>

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.