Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - strcmp()
Forum - PHP - strcmp()

Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 17:45
Lunedė, 19/09/2011
Salve a tutti sto implementando  un maledetto script per simulare un login con un file di testo

il contenuto del file archivio.txt č il seguente:

bonny
paolo
gigi
antonio
alby


la pagina login.php veine chiamata da un form con il metodo post

Codice sorgente - presumibilmente Php

  1. $utente = $_POST['utente'];
  2. //apro il file leggo i membri
  3. $var = fopen("file/archivio.txt", "r");
  4. $membri = file("file/archivio.txt");
  5. fclose($var);
  6.  
  7. $dim = count($membri);
  8. $flag = 0;
  9. $i = 0;
  10. //controllo se membro esiste
  11. while (($i < $dim)) {
  12.    
  13.     echo 'ciclo membri['.$i.'] = '.$membri[$i].' ; utente = '.$utente.'   '.strcmp($membri[$i],$utente).'<br/>';
  14. /*
  15.     if (strcmp($membri[$i],$utente) == 0 ){
  16.                
  17.         $flag = 1;
  18.     }
  19.  * */
  20.  
  21.     $i++;
  22. }



sto impazzendo perchč non funziona se inserisco la stringa "a" nella variabile $utente, l'istruzione echo dentro al while stampa:

ciclo membri[0] = bonny ; utente = a 1
ciclo membri[1] = paolo ; utente = a 1
ciclo membri[2] = gigi ; utente = a 1
ciclo membri[3] = antonio ; utente = a 7
ciclo membri[4] = alby ; utente = a 4



ma secondo voi come mai strcmp restituisce 7 o 4  e non 0,1,-1 come dovrebbe??
Non ci capisco pių nulla...

a parte questo se decommento le istruzioni dentro il while non fa il confronto

Ultima modifica effettuata da Bonny il 19/09/2011 alle 17:46
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
1
Down
V
Segnala al moderatore
Postato alle 17:47
Lunedė, 19/09/2011

come viene specificato qui: http://php.net/manual/en/function.strcmp.php

la funzione strcmp restituisce la distanza lessicale tra due stringhe, quindi se sono uguali restituisce 0.

una considerazione sull'idea malsana che ti č venuta riguardo al login tramite file di testo: č una sciocchezza, usa un database.

Gia'.... Php != C - pierotofy - 19/09/11 21:56
grazie HeDo mi tuffo in cose nuove senza leggere bene le documentazioni - Bonny - 20/09/11 08:13
PM