Tere,
Kun salasanan kryptaa "crypt($salasana);" ja kirjottaa tiedostoon, niin kuinka voin testata myöhemmin esim kirjautumisessa, että vastaako syötetty salasana tiedostossa olevaa..?
Kun toi crypt palauttaa aina eri merkkijonon... pitääkö käyttää jotain kiinteää salt:ia ja jos pitää, niin mikä se on ja kuinka pitäisi tehdä?
Tuon salasanan vois laittaa MD5 muotoon jolloin sitä voidaan vertailla suoraan.
Lue sitä manuaali, heti ekana on esimerkki miten tarkistetaan
Ei voi käyttää MD5:sta kun teen htpasswd tiedoston käsittelijää. Koitin tota mitä manuaalissa oli jo aikaisemmin, mutta ei tahtonut toimia... pitää yrittää uudelleen, josko olin vaan mokannut.
Hmm, mikäs tässä nyt.. salasanat kyllä täsmää, mutta väittää vaan että ei täsmäisi. Tässä koodi:
test.php
<?php //klikataan formilta testaa nappia if (isset($_POST['testaa'])) { $tunnus = $_POST['tunnus']; //tunnus formilta $salasana = $_POST['salasana']; //salasana formilta $tiedosto = ".htpasswd"; //htpasswd tiedosto $data = file($tiedosto); //tiedosto muuttujaan $kayttajat = array(); //taulukko käyttäjille //kerätään kaikki käyttäjät taulukkoon for ($i=0; $i<count($data); $i++) { $rivi = explode(":", $data[$i]); $kayttajat[$i] = $rivi[0]; } //haetaan tunnuksen tiedot muuttujaan $tunnus_rivi = explode(":", $data[array_search($tunnus, $kayttajat)]); //vastaako tiedostossa oleva salasana syötettyä vanhaa salasanaa if (crypt($salasana, $tunnus_rivi[1]) == $tunnus_rivi[1]) { echo("salasana täsmää"); } else { echo("salasana ei täsmää<br><br>".$tunnus_rivi[1]."<br>".crypt($salasana, $tunnus_rivi[1])."<br><br>"); } } ?> <form name="lomake" method="post" action="test.php"> Tunnus: <input type="text" size="8" name="tunnus"><br> Salasana: <input type="password" size="8" name="salasana"><br> <input type="submit" name="testaa" value="Testaa"> </form>
Tuota voi testata osoitteessa: http://koti.mbnet.fi/f4w/test/test.php
Tunnus: test
Salasana: test
Salasanat näyttäisi olevan samat, mutta silti ei pelitä?
Pitääkö sitä tiedostosta haettua riviä jotenkin putsata, esim rivivaihdot jne?
Siinä .htpasswd tiedostossa mitä toi käyttää ei oo kun yksi rivi, ei rivin vaihtoja eikä mitään. Rivi tiedostossa on:
test:$1$YNwup0at$.RPQijv3frPpcZd8HpKuJ1
Missä vika?
Kokeileppa:
if(crypt($salasana, $tunnus_rivi[1]) == trim($tunnus_rivi[1])){...
Eli tuo siis "putsaa" rivinvaihdot.
jees.. toimi ok nyt, tack.
Aihe on jo aika vanha, joten et voi enää vastata siihen.