Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Salasanasuojaus PHP:llä

Väpä [02.09.2007 17:49:44]

#

Tänään ei tunnu olevan mikään mun paras päivä joten joudun kysymään apua huvin yksinkertaiseen kysymykseen:
Yritän tehdä PHP:llä nettisivuille kirjautumis hommeila joka tarkastaa löytyykö käyttäjän tekstikenttään kirjoittama salasana tiedostosta. Minulla on käyttäjän kirjoittama salasana muuttujassa $tunnus ja tiedosto tunnukset.txt jonne on kirjoitettu salasanat, jokainen omalle rivilleen. Ongelmaksi muodostuu se, että mikä komentorakenne kävisi läpi kaikki tiedoston rivit ja vertaisi jokaista riviä salasanaan. Jos rivi ja salasana täsmäävät niin se suorittaisi tietyt skriptit, jos ne eivät täsmää niin tarkistetaan seuraava rivi. Mikäli mikään riveistä ei täsmää niin tulostetaan viesti.

Loppuosa kyllä onnistuu, mutta en vain ole löytänyt/keksinyt mikä suorittaisi nuo salasanan ja tiedoston vertailu hommat...

Antti Laaksonen [02.09.2007 17:59:34]

#

Tiedoston rivien läpikäyntiin soveltuu for-silmukka. Tämä koodi etsii tiedostosta salasanaa "abc". Tämä toimii, jos tiedoston rivillä on pelkkä salasana eikä mitään muuta tietoa.

<?php
$rivit = file("lista.txt");
$loytyi = 0;
for ($i = 0; $i < count($rivit); $i++) {
    $rivi = trim($rivit[$i]);
    if ($rivi == "abc") {
        echo "Salasana löytyi";
        $loytyi = 1;
        break;
    }
}
if ($loytyi == 0) {
    echo "Salasanaa ei löytynyt";
}
?>

Dramo [03.09.2007 15:41:19]

#

Jos tiedosto on todella suuri / voi mennä suureksi nopeuden kannalta on parempi käyttää foreach ratkeisua, joka on aikalailla tasan puolet nopeampi. Eron tosin näkee varmaan tyyliin 5 miljoonan rivin tapauksissa.. Mutta, kuitenkin.

Blaze [03.09.2007 15:54:48]

#

Dramo kirjoitti:

nopeuden kannalta on parempi käyttää foreach ratkeisua, joka on aikalailla tasan puolet nopeampi.

[citation needed]

kayttaja-2791 [03.09.2007 17:53:04]

#

Blaze kirjoitti:

Dramo kirjoitti:

nopeuden kannalta on parempi käyttää foreach ratkeisua, joka on aikalailla tasan puolet nopeampi.

[citation needed]

Ainakin Laaksosen toteutukseen suhteutettuna uskon foreachin vievät voiton selvin numeroin; forin tarkistuslause suoritetaan jokaisen silmukan pyörähdyksen aikana, eli count($rivit) hidastaa läpikäyntiä.

Väpä [05.09.2007 15:24:22]

#

Kiitoksia vinkeistä!!! Noiden avulla sainkin jo sen toimimaan!!!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta