• User Newbie

    Mancato riconoscimento di variabili identiche

    Ciaooo a tutti!!!

    Cerco di spiegarmi al meglio ma ho timore di non riuscire...

    Da un semplice form registro su txt una ipotetica password. Tutto ok.
    In un altro form richiedo l'inserimento della password per accedere ad una pagina. Lo script è il seguente.

    [PHP]
    // INIZIO CODICE APERTURA E LETTURA FILE CON PASS Provaaaaaaaaaaaaaa
    $filepassword = "pass.txt";
    $handle = fopen($filepassword, "r");
    $contenutopass = fread($handle, filesize($filepassword));
    echo "$contenutopass";
    fclose($handle);
    // FINE CODICE APERTURA E LETTURA FILE CON PASS
    // INIZIO CODICE VERIFICA PASSWORD
    $password=$_POST['password'];//recupero la variabile globale var1 di tipo POST
    $password = str_replace(" ", "", $password);
    $password = trim($password);
    $password = stripslashes($password);
    if ($password=="$contenutopass"){ // PUNTO DI VERIFICA
    echo ""; // PASSWORD RICONOSCIUTA CORRETTAMENTE
    } else {
    echo "Password Errata $password";
    include("finale_panart_error.php"); // CARICAMENTO PARTE FINALE DELLA PAGINA
    exit();
    }
    // FINE CODICE VERIFICA PASSWORD
    [/PHP]

    La cosa assurda è che da verifica stampate a video con "echo" la variabile $contenutopass, che contiene i dati del file pass.txt, risulta corrispondere a $password, che è appunto quella inserita nel secondo form per cui richiedo la verifica.

    Mi potreste aiutare???? sto veramente impazzendo!!!!!!

    😢⭕x:eheh::():


  • User

    Ciao, se ho capito bene a te non funziona la variabile passato con il $_post

    Prova una di queste 2 pero non sono sicuro che funziona
    prova 1
    [php]

    // INIZIO CODICE VERIFICA PASSWORD
    $password=$_POST['password'];//recupero la variabile globale var1 di tipo POST
    $password .= str_replace(" ", "", $password);
    $password .= trim($password);
    $password .= stripslashes($password);
    if ($password=='$contenutopass'){ // PUNTO DI VERIFICA
    echo "Se Funziona mi stai leggento"; // PASSWORD RICONOSCIUTA CORRETTAMENTE
    } else
    {
    echo "Password Errata $password";
    include("finale_panart_error.php"); // CARICAMENTO PARTE FINALE DELLA PAGINA
    exit();
    }

    [/php]Prova 2

    [php]
    // INIZIO CODICE VERIFICA PASSWORD
    $password= trim(stripslashes(str_replace(" ", "", $_POST['password'])));//recupero la variabile globale var1 di tipo POST
    // se ti da errore prova questa[/
    // $password = addslashes(ltrim(rtrim(strip_tags(stripslashes($_POST['password'])))));
    if ($password=='$contenutopass'){ // PUNTO DI VERIFICA
    echo "Se Funziona mi stai leggento"; // PASSWORD RICONOSCIUTA CORRETTAMENTE
    } else
    {
    echo "Password Errata $password";
    include("finale_panart_error.php"); // CARICAMENTO PARTE FINALE DELLA PAGINA
    exit();
    }[/php]


  • ModSenior

    Ciao usaikarts,

    hai controllato che in $contenutopass non ci siano dei \n?


  • User Newbie

    Come no, certamente ho controllato. 😮


  • User Newbie

    Il mio problema non è tanto nel recupero del dato inviato da form. Ma il controllo di cosa è registrato sul file txt ($contenutopass) rispetto a ciò che viene ripreso da $_Post. Comunque da quanto ho capito non è proprio così scontanta come cosa...


  • User

    Ho provato il tuo codice, il file pass.txt lo scritto a mano e funziona bene, tu come creai il file pass.txt?? Credo che l'errore sia nel salvataggio della password in pass.txt.


  • User Newbie

    Grazie per l'interessamento. Il file lo scrivo in questo modo:
    [php]
    $var=@fopen("artisti"."/".$vardirectory."/"."pass.txt","x+");//apro il file .txt (modalità lettura/scrittura)
    @fwrite($var,$password."\r");//scrivo la variabile del form nel file .txt
    @fclose($var);//chiudo il file .txt[/php]Ancora non ne sono venuto fuori... comunque il file ovviamente me lo scrive... e da verifica con comando echo sembra tutto ok... però poi non passa... sigh sigh sigh!!!!!


  • User Attivo

    Ciao usaikarts,
    forse c'è un errore nella condizione che testi:
    [PHP]
    if ($password=='$contenutopass'){ // PUNTO DI VERIFICA
    echo "Se Funziona mi stai leggento"; // PASSWORD RICONOSCIUTA CORRETTAMENTE
    }
    [/PHP]

    Io proverei così:
    [PHP]
    if ($password == $contenutopass){ // PUNTO DI VERIFICA
    echo "Se Funziona mi stai leggento"; // PASSWORD RICONOSCIUTA CORRETTAMENTE
    }
    [/PHP]

    Ciao


  • User

    Ciao, io personamente non ho mai usato x+, come il tuo esempio, queste sono i modi di lettura / scrittura di php + usati

    la modalità per aprire un file hanno i seguenti simboli:
    "r" -> apre il file in sola lettura;
    "r+" -> apre il file in lettura ed in scrittura;
    "w" -> apre il file in sola scrittura;
    "w+" -> apre il file in lettura e scrittura;
    "a" -> apre il file in sola scrittura e inserisce il puntatore alla fine del file ("w" lo inserisce all'inizio)
    "a+" -> apre il file in lettura e scrittura inserendo il puntatore alla fine del file;.

    Quindi in teoria il tuo codice deve diventare cosi.
    [php]
    $var=@fopen("artisti"."/".$vardirectory."/"."pass.txt","w+");//apro il file .txt (modalità lettura/scrittura)
    @fwrite($var,$password."\r");//scrivo la variabile del form nel file .txt
    @fclose($var);//chiudo il file .txt
    [/php]


  • User Newbie

    A list of possible modes for fopen() using mode

    'r' Open for reading only; place the file pointer at the beginning of the file.

    'r+' Open for reading and writing; place the file pointer at the beginning of the file.

    'w' Open for writing only; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it.

    'w+' Open for reading and writing; place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it. 'a' Open for writing only; place the file pointer at the end of the file. If the file does not exist, attempt to create it.

    'a+' Open for reading and writing; place the file pointer at the end of the file. If the file does not exist, attempt to create it.

    'x' Create and open for writing only; place the file pointer at the beginning of the file. If the file already exists, the fopen() call will fail by returning FALSE and generating an error of level E_WARNING. If the file does not exist, attempt to create it. This is equivalent to specifying O_EXCL|O_CREAT flags for the underlying open(2) system call.

    'x+' Create and open for reading and writing; place the file pointer at the beginning of the file. If the file already exists, the fopen() call will fail by returning FALSE and generating an error of level E_WARNING. If the file does not exist, attempt to create it. This is equivalent to specifying O_EXCL|O_CREAT flags for the underlying open(2) system call.


  • User

    Ciao, ti chiedo scusa, non volevo dire che è sbagliato usare x+, ma di provare anche w+ e perchè no anche r+, il controllo if funziona e se fai un file pass.txt a mano e lo provi ti funziona, quindi le cose "credo" sono 2, il file pass.txt non è nella stessa cartelladel file che lo chiama per il controllo (ma non credo non funzionava neanche echo) , o salvi la password con qualche carattere speciale che echo non stampa.


  • User Newbie

    Mi chiedi scusa?????? Ma che scherzi sono io che ti ringrazio ancora per l'interessamento... sono stato un pò brusco forse nel postare queste info senza un mio testo, ma andavo di fretta....!!! Davvero!!!!!!

    Comunque avevo già testato anche questo tipo di variante!! (Purtroppo non ne esco fuori!!!!!!!!!!!!)


  • ModSenior

    Se con echo va bene probabile il problema dello \n, che lo vedi solo dal fatto che nel sorgente della pagina dopo l'echo va a capo.
    L'unica cosa possibile se l'echo funziona bene è quella.


  • User

    Fai cosi, perchè l'errore c'è, ma non lo vediamo:), da quesllo che ho capito tu usi 2 form vero? Il primo ti crei la password da inviare al pass.txt e il secondo scrivi una password che va controllata tra quelle salvate nel pass.txt giusto?

    Poi mettere il 1 form quello per creare la password che poi invii al file che la scrive nel pass.txt.

    Ciao.


  • User Newbie

    Ho risolto. Grazie a tutti. Era come diceva Thedarkita.... un cavolo di stupido errore \r nella compilazione del fwrite.... che scemo... che scemo.... che SCEMO!!!!!!!!!!!!!! Scusate tutti per il tempo perso e ancora grazie!!!!!


  • User

    De Nada.