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

    [php] difficoltà di comparazione tra variabili

    Ciao a tutti,

    Problema:
    sto scrivendo un programma dove devo comparare due dati provenienti da un form e due dati provenienti da un database.

    tutto funziona fino a quando non vado a comparare le due coppie di dati, cioè apparentemente sono uguali (quando esegue il print delle due coppie di dati me le scrive assolutamente uguali) però poi li sente diversi (usando l'operatore == ).

    Questo è il mio script:
    ---------------------------------------------------------------------
    /* INTERROGAZIONE AL DATABASE */
    ################################

    print ("INTERROGO IL DATABASE

    ");
    $result = mysql_query ("SELECT * FROM `password` WHERE `usr` LIKE '$usr' AND `pwd` LIKE '$pwd'");

    /* SCOMPOSIZIONE RISULTATO INTERROGAZIONE AL DATABASE */
    ################################################## ######

    print ("INIZIO IL CICLO DI ANALISI SUL RISULTATO

    ");

    print ("001 la variabile esterna \$usr è $usr

    ");
    print ("002 la variabile esterna \$pwd è $pwd

    ");

    while ($couple = mysql_fetch_array($result))
    {

    print ("01 \$couple[usr] è $couple[usr]

    ");

    print ("02 \$couple[pwd] è $couple[pwd]

    ");

    print ("03 $couple[usr] = $couple[pwd]

    ");

    }

    if ($couple[usr] == $usr)
    {
    print ("04 Il valore \$couple[usr] è uguale a \$usr

    ");
    }
    else
    {
    print ("04 IL VALORE \$couple[usr] NON E' UGUALE A \$usr

    ");
    }

    if ($couple[pvd] == $pwd)
    {
    print ("05 Il valore \$couple[pwd] è uguale a \$pwd

    ");
    }
    else
    {
    print ("05 IL VALORE \$couple[pwd] NON E' UGUALE A \$pwd

    ");
    }

    if (($couple[usr] == $usr) and ($couple[pwd] == $pwd))
    {
    print ("ACCESSO EFFETTUATO!");
    }
    else
    {
    print ("FOTTITI!!!");
    }

    mysql_close($link);
    ---------------------------------------------------------------------

    Quello che vedo sul browser è:
    ---------------------------------------------------------------------

    INTERROGO IL DATABASE

    INIZIO IL CICLO DI ANALISI SUL RISULTATO

    001 la variabile esterna $usr è w.topino

    002 la variabile esterna $pwd è walter

    01 $couple[usr] è w.topino

    02 $couple[pwd] è walter

    03 w.topino = walter

    04 IL VALORE $couple[usr] NON E' UGUALE A $usr

    05 IL VALORE $couple[pwd] NON E' UGUALE A $pwd

    FOTTITI!!!

    ---------------------------------------------------------------------

    CHI MI SA AIUTARE?

    THANKS!

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    usa la forma $array['indice'] e non $array[indice] poi correggi
    codice:
    if ($couple['pwd'] == $pwd)

  3. #3
    Purtroppo ho corretto ciò che mi hai indicato ma il risultato è sempre lo stesso... PURTROPPO ...

    Anzi, se cambio i parametri nel modo seguente:
    ==============================================

    while ($couple = mysql_fetch_array($result))
    {

    print ("01 \$couple['usr'] è $couple['usr']

    ");

    print ("02 \$couple['pwd'] è $couple['pwd']

    ");

    print ("03 $couple['usr'] <=> $couple['pwd']

    ");

    }

    ==============================================

    mi crea l'errore seguente:

    ==============================================

    Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/etassrl/public_html/appli_php/control_pwd.php on line 44

    ==============================================

    dove la linea 44 è:
    ==============================================
    print ("01 \$couple['usr'] è $couple['usr']

    ");
    ==============================================

    VVoVe:
    HELP!

  4. #4
    Nelle print lascia com'era prima oppure devi fare così:

    codice:
    echo "01 \$couple[usr] è (" . $couple['usr'] . ")
    
    ";
    Mettendo le parentesi tra i campi che stampi riesci a renderti conto se sono veramente uguali o il problema é che c'é qualche spazio che non vedi.

  5. #5
    Infatti togliendo gli apici alle variabili che si trovano in print l'errore non me lo ripropone.

    Però il problema più grosso è che continua a non riconoscermi l'ugualianza tra le variabili inviate dal modulo con i dati trovati nel database, sia se metto >>> $couple['usr'] <<< o >>> $couple[usr] <<< , >>> $couple['pwd'] <<< o >>> $couple[pwd] <<< .

    THANKS

  6. #6
    Se metti tutti gli echo con campi tra parentisi come nell'esempio che ti ho scritto vedi se per caso hai degli spazi o degli acapo che altrimenti non vedi.
    Fai così ed eventualmente posta l'output!

  7. #7
    Ho fatto come mi hai detto (SPERO )

    Il codice aggiunto è:
    =====================
    while ($couple = mysql_fetch_array($result))
    {

    echo "01 \$couple[usr] è (" . $couple['usr'] . ")

    ";
    echo "02 \$couple[pwd] è (" . $couple['pwd'] . ")

    ";
    echo "03 $couple[usr] <=> $couple[pwd]

    ";

    }
    =====================

    L'output è:

    =====================
    INTERROGO IL DATABASE

    INIZIO IL CICLO DI ANALISI SUL RISULTATO

    001 la variabile esterna $usr è w.topino

    002 la variabile esterna $pwd è walter

    01 $couple[usr] è (w.topino)

    02 $couple[pwd] è (walter)

    03 w.topino <=> walter

    04 IL VALORE $couple['usr'] NON E' UGUALE A $usr

    05 IL VALORE $couple['pwd'] NON E' UGUALE A $pwd

    FOTTITI!!!
    =====================

    Come ho potuto notare (e come puoi vedere) di spazi non ce ne sono e continua a darmi quella FOTT......IMA disugualianza!!!!!



    Quello che sto facendo ora? ==>>>

    Hai altre idee?

    THANKS!

  8. #8
    Fai:

    codice:
    while ($couple = mysql_fetch_array($result))
    Quindi quando esce dal loop in $couple non c'é + niente.
    Devi fare qualcosa tipo:

    codice:
    if ($couple = mysql_fetch_array($result))

  9. #9
    Effettivamente, analizzando uno degli applicativi free che ci sono a disposizione, il ciclo di controllo è fatto con il comando IF.

    Modificando un pò il mio compilato in questo modo ==>>
    ================================================== ====
    $doublecheck = mysql_num_rows($result);

    if($doublecheck == 0)
    {
    echo "<font color=red>PASSWORD NON VALIDA - FUTTIATI!!</font>
    ";
    }

    elseif ($doublecheck > 0)
    {
    echo "PASSWORD VALIDA - BENVENUTO!!
    ";
    }
    ================================================== ====

    funziona egregiamente!!



    Però non riesco ancora a capire perchè non mi fa ancora quella maledettissima ugualianza!!!

    Ok che quando esco dal loop non c'è niente, però quando il database mi restituisce il risultato, la variabile è un array con due dati, quindi piena; per lo meno una volta dovrebbe farmi quest'ugualianza.

    Per adesso ho risolto il problema (uno dei tanti ), però qualcuno mi saprebbe spiegare meglio che errore faccio?

    <<<=======================>>>
    <<< GRAZIE MARGHERITE!!!! >>>
    <<<=======================>>>

  10. #10
    L'uguaglianza la facevi fuori dal ciclo, quando la variabile non valeva + niente.
    Se l'avessi fatta all'interno al primo giro sarebbe stata vera, ma quando sei fuori non lo é +.

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.