Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Array as session variable PHP7

    Ho questo script di login tramite form dove tra le altre cose viene settata la var di sessione $_SESSION['MM_UserGroup'] :

    Codice PHP:
    $loginFormAction $_SERVER['PHP_SELF'];
    if (isset(
    $_GET['accesscheck'])) {
      
    $_SESSION['PrevUrl'] = $_GET['accesscheck'];
    }

    if (isset(
    $_POST['username'])) {
      
    $loginUsername=mysqli_real_escape_string($tao_conn$_POST['username']);

      
    $password=sha1($_POST['password']);
     
     
      
    $MM_fldUserAuthorization "AuthLev";
      
    $MM_redirectLoginSuccess "Pub_LoginRedirect.php";
      
    $MM_redirectLoginFailed "Pub_loginSorry.php";
      
    $MM_redirecttoReferrer false;
      
    mysqli_select_db($tao_conn$database_tao_conn);
      
    $LoginRS__query=sprintf("SELECT email01, Pwd, AuthLev FROM utenti WHERE email01=%s AND Pwd=%s",
      
    GetSQLValueString($tao_conn,$loginUsername"text"), GetSQLValueString($tao_conn,$password"text"));
       
      
    $LoginRS mysqli_query($tao_conn,$LoginRS__query) or die(mysqli_error($tao_conn));
      
    $loginFoundUser mysqli_num_rows($LoginRS);
      if (
    $loginFoundUser) {
        
      
    $loginStrGroup  mysqli_result($LoginRS,0,'AuthLev');

        if (
    PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
        
    //declare two session variables and assign them
        
    $_SESSION['MM_Username'] = $loginUsername;
        
    $_SESSION['MM_UserGroup'] = $loginStrGroup;          
        if (isset(
    $_SESSION['PrevUrl']) && false) {
          
    $MM_redirectLoginSuccess $_SESSION['PrevUrl'];    
        }
        
    header("Location: " $MM_redirectLoginSuccess );
      }
      else {
        
    header("Location: "$MM_redirectLoginFailed );
      }

    Quando la richiamo nelle varie pagine

    Codice PHP:
     echo $_SESSION['MM_UserGroup'] ; 
    in php5 mi restituisce il valore ma in php7 restituisce "Array" con il seg errore:

    Notice: Array to string conversion in ....

  2. #2
    PS: per la mysqli_result utilizzo questa funzione:


    Codice PHP:
             function mysqli_result($result,$row=0,$field=0)

    {


        
    $numrows $result->num_rows;

      

        if (
    $numrows && $row <= ($numrows-1) && $row >=0){

            
    $result->data_seek(0);

            
    $result->data_seek($row);

            
    $resrow = (is_numeric($field)) ? mysqli_fetch_row($result) : mysqli_fetch_assoc($result);

          

            if (isset(
    $resrow[$field])){return $resrow;}

        }

        return 
    false
    Come assegnare il valore a $_SESSION['MM_UserGroup'] nello script sopra per poterlo poi usare nelle varie pagine ?

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,001
    Prova a fare
    print_r($_SESSION['MM_UserGroup']);

    così ci si rende conto di cosa contenga.

  4. #4
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Prova a fare
    print_r($_SESSION['MM_UserGroup']);

    così ci si rende conto di cosa contenga.


    Array ( [email01] => xxx@mailutente [Pwd] => xxx_pwdutente [AuthLev] => 2 )

    In pratica restituisce l'intera query mentre devo assegnare il valore solo di [AuthLev]

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    30
    Devi modificare in return $resrow[$field]; altrimenti recuperi un array ma non puoi utilizzare echo perché tenta di convertire un array in stringa.
    Comunque prima di scrivere $_SESSION devi assolutamente creare o recuperare la sessione con session_start(); //niente echo o output prima di questa funzione
    Ultima modifica di darbula; 21-09-2020 a 13:00 Motivo: Fix variabile

  6. #6
    Quote Originariamente inviata da darbula Visualizza il messaggio
    Comunque prima di scrivere $_SESSION devi assolutamente creare o recuperare la sessione con session_start(); //niente echo o output prima di questa funzione
    Grazie Darbula (e Alhazred )

    OK per session_start(); (è gia cosi) ma come devo "modificare in return $resrow['field']" ?

    Non posso utilizzare la array_column (o altro) per estrarre da $_SESSION['MM_UserGroup']; solo il valore di [AuthLev] ?
    Ultima modifica di nicemotion; 21-09-2020 a 13:06

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    30
    forse ti stai confondendo, la vecchia funzione mysql_result o la tua nuova funzione mysqli_result passa solamente l'oggetto come primo parametro quale row restituire e il nome o offset da recuperare. (Il ritorno di questa funzione è di tipo scalare ma non può ritornare un array occorre un'altra funzione per questo).
    Quindi se stai già recuperando AuthLev perché vuoi recuperarlo ancora?
    Ho modificato il messaggio precedente per favore prova e solo dopo scrivi sul forum.. grazie mille
    Ultima modifica di darbula; 21-09-2020 a 13:22

  8. #8
    Quote Originariamente inviata da darbula Visualizza il messaggio
    forse ti stai confondendo, la vecchia funzione mysql_result o la tua nuova funzione mysqli_result passa solamente l'oggetto come primo parametro quale row restituire e il nome o offset da recuperare.
    Quindi se stai già recuperando AuthLev perché vuoi recuperarlo ancora?
    Ho modificato il messaggio precedente per favore prova e solo dopo scrivi sul forum.. grazie mille
    Funziona... grazie mille a te Darbula

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