Newsgroup: it.comp.www.php
Titolo: form di login

Salve a tutti,
ho questo problema:
da un form di login mi faccio arrivare id ( $idva ) e password ( $pxd ),
password che deve essere confrontata con quella registrata in un db (
$sResult ).
Il problema è che la password che carico dal db non viene valutata uguale
pur essendo identica.
Segue il codice adoperato:
$sResult = $oTest->ExecSQL("SELECT password FROM [verbale] where
id_verbale=" .$idva);
echo "La passw. nel db è: " .$sResult;                 # riga di test
echo "<br>La passw. digitata da te è: " .$pxd;    # riga di test
echo "<P align='center'>";
        if ($sResult ==  $pxd)
                                {.........
Perché non riesce a confrontare le 2 stringhe? Esse sono uguali, come vedo a
schermo con le due righe di test.
Può essere che la stringa $sResult non si confrontabile con quella immessa
da form per qualche motivo a me sconosciuto?
Grazie a tutti.

                                {.........
usa strcmp(str1,str2);
--
Ciao.
Mario Maroncelli
mar...@mclink.it

 --
Ho provato anke con strcmp ma mi restituisce -1 e non 0 come dovrebbe, mi
viene il dubbio che la stringa restituita dal db non sia confrontabile! è
posibile una cosa del genere?

posibile una cosa del genere?
Potrebbe il problema derivare dal fatto che hai usato Password per il
nome del campo della tua tabella?
password() infatti come è noto è anche una funzione MySQL, quindi è
una parola riservata e usarla come nome di un campo potrebbe creare
dei problemi.
Se non ho capito male, però, tu sei sicuro che la query funziona
correttamente, quindi probabilmente il problema non è questo... In
ogni caso provare non costa nulla: prova a cambiare il nome al campo e
vedi.
Matteo

 Matteo
Grazie.



no.
Piuttosto mi viene in mente che il fatto che stampate a schermo due
stringhe sembrino uguali non vuol dire che lo siano effettivamente.
Spesso ci possonop essere degli spazi alla fine delle stringhe oppure
dei caratteri speciali che non vengono stampati a schermo.
Prova a vedere con strlen(str) se le due stringhe sono lunghe uguale.
Se una è più lunga cerca di capire quale carattere è stato aggiunto e
come eliminarlo .


 Mario Maroncelli
Avevi ragione è proprio questo il probelma, una risulta essere lunga 113
contro i 6 dell'altra, ora come faccio a farmi restituire solo i caratteri
che effettivamente ho richiesto? ho già trimmato la stringa per togliere gli
spazi, come potrei fare a sapere quali caratteri ci sono in piu?
Grazie

 gli spazi, come potrei fare a sapere quali caratteri ci sono in piu?
print(bin2hex(substr($stringalunga,strlen($stringacorta))));
questo vale solo se i caratteri in + sono a fine stringa e se hai una 
tabella dei codici ascii sottomano.
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.gnu.org/philosophy/free-sw.it.html

tabella dei codici ascii sottomano.
Magari con echo bin2hex($stringalunga); cerchiamo di capire quali sono
e dove sono questi caratteri -in piu'- e poi magari li eliminiamo con
una regex oppute con str_replace o strtr.... o magari anche con un
semplice $stringalunga=substr($stringalunga,0,strlen($stringacorta));
Comunque la cosa migliore sarebbe capire perche' si trova la stringa
cosi' lunga.


 ha scritto nel messaggio
news:l433ou8u6g9cei6uf...@4ax.com...


 id_verbale=" .$idva and password =" .$pxd "
ma i post li leggi tutti o lo fai per scherzo??
il problema è che NON gli ritorna il record perché non capisce come mai la 
pwd nel db è != da quella immessa, anche se a video sono uguali.
mah!
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://marketing.tenagra.com/rfc1855.html

 cosi' lunga.
questo è certo!
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.efluxa.it/netiquette/

Grazie!
Finalmente ho risolto e svelato l'arcano..
Allora il motivo era il seguente:
Premetto che io avevo la necessitą di connettermi dal web server (linux) ad
un database di access che resiedeva su un computer remoto che usava
ovviamente windows.
Per fare ciņ ho dovuto installare un servizio che usa xml per trasferire i
dati attraverso il protocollo tcp, quindi la stringa che mi ritornava era
gią formattata in xml, e ovviamente con caratteri non visibili a schermo!
Ringrazio tutti per l'interessamento..
A presto.

 ha scritto nel messaggio
news:wVgg9.4554$eG6....@twister1.libero.it...


 cmq qui si può discutere.
certo che è la soluzione migliore, ma il problema (alla fonte) era diverso!
comunque, se dirtydozen voleva tornare due fault differenti, uno per user 
non trovato, l'altro per password sbagliata, il metodo giusto era il suo.
in ogni caso, ti consiglio questa lettura:
http://www.netmeister.org/news/learn2quote.html
ovvero come imparare a quotare
ciao!
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.efluxa.it/netiquette/