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

    [php - postgres]Problema password blank space

    Come prima cosa, salve a tutti, ecco il mio problema:

    sto sviluppando un'applicazione web basata su php e db postgres nella quale ho anche implementato la gestione degli utenti memorizzazione credenziali, gestione del login, ecc ecc... tra le tante ho creato una pagina per la gestione del proprio account ( modifica dello user e della password ) e fin qui nessun problema la password riesco a cambiarla tranquillamente da una form php che poi farà le query adatte per cambiarla nel db, il problema salta fuori quando all'interno di una password piazzo degli spazi bianchi ad esempio "la mia password".

    Le password all'interno del db sono memorizzate in una tabella chiamata credenziali che contiene tutte le credenziali ( nome utente e password ) di tutti gli utenti, ma oltre a questo ho creato anche dei Ruoli Utente dove ogni ruolo utente corrisponde ad un utente che avrà il nome che lo rappresenta e la password di accesso uguali a quelle memorizzate nella tabella credenziali. Detto tutto ciò, quando cambio una password con una contenente dei blank space questa viene cambiata senza problemi nella tabella credenziali dove il campo password non è criptato ma è in chiaro, mentre all'interno dei Ruoli Utente,dove viene criptata in md5, viene sì cambiata ma a quanto pare non come vorrei visto che nel login successivo alla modifica ( il log in viene fatto tramite php ) mi dice che le credenziali sono sbagliate.

    Questo errore non si presenta se all'interno delle password non ci sono spazi bianchi...

    posto le parti interessate del mio codice php:

    Codice PHP:
    // [...]
    //questa conterrà la nuova password, viene riempita grazie ad una form
    $pwd $_POST["pwd"];

    // [...]

    if(isset($pwd)){
            
    //doQuery è una mia funzione postata sotto
            //$_SESSION["user"] e $_SESSION["pwd"] contengono lo user e password dell'utente attualmente loggato
            //la prima parte della query cambia la password ai ruoli utente
            //la seconda la cambia nella tabella credenziali
        
    $risp doQuery("alter role ".$_SESSION["user"]." password '".$pwd."';
                update motorizzazione.credenziali set pass='"
    .$pwd."' where pass='".$_SESSION["pwd"]."';");
            
    //funzione postata sotto
        
    printAnswer($risp);
        
    //solo se il cambio è avvenuto allora aggiorno la varibile di sessione
        
    if($risp == "")
            
    $_SESSION["pwd"]=$pwd;
    }

    // [...]

    function doQuery($str_query){
        
    /* funzione che passata una stringa contenente una query si connette al DB, effettua la query e
        nel caso in cui la query vada a buon fine restituisce le tuple ottenute ( array di array ) altrimenti
        restituisce una stringa contenente il messaggio di errore riscontrato*/
        
    $conn = @pg_connect("dbname=ufficio_della_motorizzazione user=".$_SESSION['user']." password=".$_SESSION['pwd']);
        
    $query pg_send_query($conn,$str_query);
        
        if(
    $query){
            
    $risposta pg_get_result($conn);
            
    $err pg_result_error_field($risposta,PGSQL_DIAG_MESSAGE_PRIMARY);
            return (
    $err == "")? pg_fetch_all($risposta): $err;        
        }else
            print(
    "ERRORE INTERNO");
    }

    function 
    printAnswer($asw){
        
    /* funzione che presa una risposta di una query stampa il possibile messaggio di errore, oppure
        in caso di successo delega la stampa delle tuple alla funzione printTable*/
        
    if(is_array($asw))
                    
    //funzione che stampa in forma tabellare non la posto perchè non inerente
            
    printTable($asw);
        else 
            if(
    $asw!=""){
                echo 
    "<div class='queryErrorBox'>";
                 include(
    $includePath."boxBegin.html");
                 echo 
    "<div class='title'>FATAL ERROR</div>";
                 echo 
    "<div class='error'>".$asw."</div>";
                 echo 
    "<input type='button' value = 'Indietro' onclick='history.back()'></input>";
                 include(
    $includePath."boxEnd.html");
                echo 
    "</div>";
            }else
                echo 
    "tutto ok";

    Premetto che ho provato a trimmare e aggiustare le slash nella pwd come segue:
    Codice PHP:
    $pwd addslashes(trim($pwd)); 
    utilizzandolo ovviamente anche nella $_SESSION["pwd"] ma niente stesso risultato... che sia un problema di codifica? help

  2. #2
    tanto per dirne una: una password con gli spazi non si può sentire... fai in modo che non sia possibile mettere spazi o caratteri strani...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    anche io ero dell'idea di non permetterlo... però almeno sapere la soluzione mi piacerebbe

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.