Kirjautumissysteemiä teen ja mulla on lause:
if($tiedot[1] == $salasana){
jotain;
}echo tulostaa saman arvon, mutta vertalu ei ole tosi. Mitä vois olla pielessä.
Kokeile kirjoittaa:
if (trim($tiedot[1]) == $salasana) {Näin taulukon rivin lopussa olevat mahdolliset rivinvaihdot eivät häiritse vertailua.
Heikko vertailu: laita
if($tiedot[1] === $salasana) { jotain; }Antin homma oli toimiva. Kiitos avusta, ois menny jonkun aikaan ennenkuin olisin ite keksiny.
Ton trim funktion avulla ratkes monta muutakin ongelmaa, jossa on ollu ylimääräsiä rivinvaihtoja.
Kannattaisi ehkä lukea tämä: https://www.php.net/manual/en/language.
Voit saada oikean tuloksen vertailullakin, mutta sinun pitää käyttää oikeita merkkejä oikea määrä.
-W-
Miten noilla vertailuoperaattoreilla voi ottaa huomioon ylimääräiset rivinvaihdot?
Vertailu === hyväksyy vähemmän kuin vertailu ==, eli jos edes vertailun == tulos ei ole tosi, ei myöskään vertailun === tulos ole tosi.
Luin tuon asian väärinpäin eli haluttiin tosi tuosta vertailusta alunperin.
Kuullostaa tuokin aika vaaralliselta: ehkä olisi syytä kiinnittää huomiota siihen miten ja missä muodossa tuo taulukko sekä muut muuttujat alustetaan?
Vertailut on joko TRUE tai FALSE ja siihen muotoon pitää saada muuttujat suoraan. Jos muuttujissa on jotain muuta ylimääräistä, niin oletuksena palautetaan kyllä FALSE joka pitäisi olla HYVÄN OHJELMOINNIN LÄHTÖKOHTA ILMAN POIKKEUKSIA.
Tietoturvaa, onko sitä? Se taitaa nykyään kaikessa koulutuksessa ja oppaissa unohtua...sitten ihmetellään jälkeenpäin kun perusasiatkin on hakusissa.
-W-
Tosiaan onnistuu myös laittamalla käyttäjätiedot muotoon:
käyttäjä|salasana|
kun se oli aiemmin
käyttäjä|salasana
jollon siihen tuli rivinvaihto,jota en sitten millään huomannut.
Aihe on jo aika vanha, joten et voi enää vastata siihen.