Przeszukiwanie pliku

0

Witajcie... pytanie wyda się zapewne banalne (też tak sądziłem), ale niefortunnie google.pl nie potrafił zrozumieć, o co mi chodzi, więc może Wam się uda...
Mam plik users.dat który składa się z:
login;haslo;email;KodAutoryzacji;stanAuth
login;haslo;email;KodAutoryzacji;stanAuth
login;haslo;email;KodAutoryzacji;stanAuth
...

stanAuth w moim wypadku będzie albo "t" albo "f" - oznacza po prostu, czy dany użytkownik dokonał już autoryzacji konta przez e-mail i jego aktywacji.

Podczas rejestracji jest generowana liczba w jakimśtam zakresie i zapisywana 4 "komórki" oraz wysyłana w e-mailu. Po kliknięciu w link (np: strona.php?kodauth=12345) chciałbym, aby został przeszukany plik w poszukiwaniu tego kodu. Jeżeli znajdzie go, zwrócił login i zmienił stanAuth na "t", a jeżeli nie znajdzie zwrócił stosowny komunikat (chociażby 0)... Problem w tym, że na moim "chciałbym" się kończy, bo jak tego dokonać - nie wiem... Mój kod, który napisałem skończył się na:

        $dane = fopen("users.dat", "r"); 
        flock($dane, 1); 
        
        flock($dane, 3);
        fclose($dane);

#-]. Prosiłbym o jakąś radę czy cóś, bo chyba googiel się na mnie obraził #-(

P.S.Jaki jest odpowiednik pascalowskiego/ansiC randomize i random ?? Myślałem, że zadziała zwykłe "$kod=random(1000)" - ale się myliłem...

0

chciałbym, aby został przeszukany plik w poszukiwaniu tego kodu.

hmm... przyda ci się coś do czytania z pliku (fgets(), fread()):
http://pl.php.net/manual/pl/ref.filesystem.php

Jeżeli znajdzie go, zwrócił login i zmienił stanAuth na "t", a jeżeli nie znajdzie zwrócił stosowny komunikat (chociażby 0)...

hmm... a tu przyda ci się coś do operacji na stringach (strpos(), split()):
http://pl.php.net/manual/pl/ref.strings.php

co do zmiany f na t to raczej nie musisz zapisywać pliku
od początku, wystarczy ustawić na odpowiednim miejscu
(fseek()) i zapisać t...

0

dzięki wielkie, mam jednak jeszcze jedno pytanie - jak 'zrobić' EOF ? tzn. chcę zrobić pętlę, która ma się wykonywać dopoki nie trafi na EndOfFile.....

//dopisane:
no i problemik....

..::Jakaś Pętla::..
if (strpos($kodauth,$tmp=fgets($dane,100))!=false) 
{
  str_replace(";f;",";t;",$tmp) 
}
..::dopóki napotka koniec pliku::..

Czyli jeżeli znajdzie kod autoryzacji w linijce, to ma zapisać tę linijkę do $tmp. Później następuje usunięcie litery "f" i zamiana na "t"... a teraz moje pytanie - jak usunąć linijkę w której był ten kod i zamienić ją na $tmp ? seek ustawia pozycję na X bajcie w pliku, ale to mi raczej zbyt wiele nie daje...

//dopisane:
Dobra, sprawa załatwiona... zrobiłem, że każdy user ma w katalogu /users/ swój plik nick.dat i przepisuję cały plik...

1 użytkowników online, w tym zalogowanych: 0, gości: 1