Autor Zpráva
Hondrej
Profil *
Mohl by mi prosim nekdo poradit. Hledate v souboru. Kazdy radek odpovida 1 zaznamu. Zaznam ve tvaru login:heslo;

POtreboval bych, kdyz je treba prihlaseni uzivatel login3:heslo3 (V tomto pripade to odpovida 3 radku) a tento zaznam se nachazi v souboru, aby byl prepsan jinym zaznamem. Ovsem pouze tento jeden prislusny radek. Muj script dela, ze vse od zacatku az po vyskyt onoho vyrazu prepise.

Myslim si, ze by se to dalo "nejak" vyresit posunem ukazatele na prislusny radek, ale nevim jak to realizovat.
Napada nekoho neco? Budu velice vdecny za jakoukoli odpoved.

$obsah = file("test.txt"); // nacteni celeho souboru do pole. 1 prvek pole = 1 radek souboru
foreach($obsah as $key => $value)
{
list($uzivatel[$key], $password[$key]) = explode(":", $value);
}
if (in_array(strtolower("login[2]"), $uzivatel)) // nachazi se v souboru informace o nalogovanem uzivateli?
{
$heslo = crypt($_POST["heslo"]); // zasifrovani hesla
if(crypt($_POST["heslo"], $heslo) == $heslo) // zdarile sifrovani
{
$zapisovany_retezec = $_POST["login"].":".$heslo."\r\n"; // co a v jakem formatu se bude zapisovat
$fp = fopen("test.txt", "r+"); // otevreni souboru pro cteni a zapis
fwrite($fp, $zapisovany_retezec); // zapis do souboru
fclose($fp); // zavri souboru
}
else // sifrovani se nezdarilo
{
echo "chyba";
}
}
medden
Profil *
Myslím, že sa to dá pomocou fseek() a fwrite, totižto fwrite píše na miesto, kam ukazuje file pointer, a ten sa môže meniť pomocou fseek a iných (rewind, ...).

Dalo by sa s tým pohrať, ale nemali by ste to jednoduchšie celé to dať do databázy, a nemuseli by ste sa s tým toľko trápiť? Niektorí ľudia sa databáz boja ako čert kríža, aj keď je to často dosť neodôvodnené ;-) Skutočne databáza vám zjednoduší robotu, a ešte sa aplikácia zvykne radikálne zrýchliť. Oplatí sa to.
Hondrej
Profil *
Ja databaze pouzivam, ale v tomto pripade jsem vyuzil neceho jineho. A mam k tomu duvod, verte mi.
Hondrej
Profil *
Jinak samozrejme dekuji za odpoved. Pokusim se to pomoci fseek() vyresit.
Hondrej
Profil *
pokusil jsem se to vyresit tedy vlozenim fseek($fp, CISLO_RADKU_SOUBORU);
Ted mam chvilkovou indispozici hledanim cisla_radku_souboru. Mel jsem $key, ale to uz neni ve foreach, takze nejak jinak )
Toto téma je uzamčeno. Odpověď nelze zaslat.

0