Učitavanje kombinacije i pronalazak korisnika

1

Učitavanje kombinacije i pronalazak korisnika

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Ovako, imam jedan tekstualni fajl u kom su smeštene neke kombinacije od 14 karaktera i nick-ovi korisnika.

ABCD87ER3T12OP Pera J728PO9U1T27VG Zoran LMXD5000UQ70YI Dragan ... ... ... ... ... ...

Zanima me kako da automatizujem proces provere , a ono što želim jeste da nakon što korisnik upiše tu kombinaciju PHP učita ovaj tekstualni fajl , pređe sve linije proveravajući da li postoji takva kombinacija i ako postoji da pokaže odgovarajući nick (neki sistem verifikacije). Ako ne postoji da korisnika redirektuje (prebaci) na stranicu error.php. Sad od toga jedino što znam je učitavanje fajla i prebacivanje Laughing

Ne morate pisati ceo kod , samo mi treba objašnjenje na koji način to da uradim i koje PHP funkcije da koristim, hvala unapred Ziveli



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3760
  • Gde živiš: 127.0.0.1

Ukratko: fopen(), fread(), fclose() - ako je veliki fajl (tipa preko nekoliko MB), file() ako je manji od toga,

Inace - cuvanje sifri korisnika u plain text fajlu, dostupnom odakle ti padne na pamet, pa jos i u neenkritpovanom formatu je prilicno losa ideja.



offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14824
  • Gde živiš: Niš

Nisam radio PHP nikada, ali mogu da ti dam neke smernice.
U principu, skeniraš fajl od početka do kraja. Za ovako nešto je najpogodnija while petlja koja će da provera uslov posle svake iteracije. Na početku postaviš neku logičku promenljivu koja će da omogući početak izvršenja petlje, ali će isto tako da prekine izvršavanje petlje ukoliko se promeni. U svakoj iteraciji pročitaš po jedan red (dva stringa, prvi je taj od 14 karaktera, a onda čitaš do kraja linije) i prvi string upoređuješ sa stringom koji je uneo korisnik. Ukoliko pronađeš poklapanje dva stringa menjaš logičku promenljivu i tom prilikom se na kraju te iteracije izlazi iz petlje jer uslov nije više zadovoljen. Drugi uslov u while petlji će ti biti nešto kao feof u C-u. Ne znam da li ta funkcija postoji u PHP-u, ali treba da postoji nešto slično. Ona proverava da li se sa čitanjem fajla došlo do kraja. Ukoliko jeste, uslov petlje nije više zadovoljen i izlazi se iz petlje. Na kraju samo proveriš uzrok izlaska iz petlje i odatle znaš da li string koji tražiš postoji ili ne.

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

Odmah od starta ću ti reći koristi MySQL lakše će ti biti i konekcija i sve što ti treba nego da se drndaš sa fajlovima. Ono što i @Rastafarii kaže, to ti je način ali NIKAKAKO u fajlovima čuvati korisnička imena i šifre. EVENTUALNO unutar neke PHP klase ako znaš da ta imena i šifre nećeš menjati svakih 6 meseci pa će ti tako biti "sigurnija". Tu možeš i neku administraciju napraviti pa na isti način uraditi prepisivanje tog PHP fajla ali ga onda moraš izčitati, uzeti PHP elemnte i pripremiti, uzeti sve podatke svih korisnika, pa izdvojiti tvog korisnika a ostale staviti na čekanje, potom izmeniti podatke tvog korisnika, sve pridružiti i tek onda upisati... Pa... trebaće ti za to jedno 700-800 linija PHP koda a sa MySQL bi to rešio za 20-30 linija.

offline
  • PHP Developer
  • Pridružio: 02 Okt 2005
  • Poruke: 546

iscitas linije u array
array file ( string $filename [, int $flags = 0 [, resource $context ]] )
http://php.net/manual/en/function.file.php

i onda proveris sa
bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )
Searches haystack for needle using loose comparison unless strict is set.
http://www.php.net/manual/en/function.in-array.php

ako je ovo neki domaci onda ok ovako ako nije onda procitaj
http://goo.gl/25RfcF Salted Password Hashing - Doing it Right

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Napisano: 10 Dec 2013 14:05

@FoxVanis, sviđa mi se tvoj predlog. Nisu u pitanju baš lozinke, više kao neki bezbednosni ID koji je jedinstven za svakog korisnika (ručno ga dodajem). Verovatno će u MySQL to biti i brže jer ovako mora da otvara fajl pa da isčitava svaku liniju itd. ima tu dosta koda, pa bolje da odradim ispitivanje jednostavno nego to.

Znači to bi bilo ovako:


ako korisnik upiše nešto u polje za SID sledi provera (u suprotnom biva prebačen na glavnu stranu)
poseban SID za svakog korisnika (ovo mogu uneti i ručno)
ako postoji SID koji je ukucao korisnik on se šalje u Kontrol panel pod tim nick-om


Znači tabela , jedan red za nick, drugi za sid?

Dopuna: 10 Dec 2013 14:09

Rastafarii ::Inace - cuvanje sifri korisnika u plain text fajlu, dostupnom odakle ti padne na pamet, pa jos i u neenkritpovanom formatu je prilicno losa ideja.

Hvala na primedbi, na to uopšte nisam obratio pažnju.

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14824
  • Gde živiš: Niš

E.L.I.T.E. ::Znači tabela , jedan red za nick, drugi za sid?Ili pak kolone? smešak

offline
  • PHP Developer
  • Pridružio: 02 Okt 2005
  • Poruke: 546

i obavezno procitaj http://goo.gl/25RfcF Salted Password Hashing - Doing it Right
google link je zato sto forum filtrira
https://c r a c k s t a t i o n . n e t /hashing-security.htm

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

E.L.I.T.E. ::Napisano: 10 Dec 2013 14:05

@FoxVanis, sviđa mi se tvoj predlog. Nisu u pitanju baš lozinke, više kao neki bezbednosni ID koji je jedinstven za svakog korisnika (ručno ga dodajem). Verovatno će u MySQL to biti i brže jer ovako mora da otvara fajl pa da isčitava svaku liniju itd. ima tu dosta koda, pa bolje da odradim ispitivanje jednostavno nego to.

Znači to bi bilo ovako:


ako korisnik upiše nešto u polje za SID sledi provera (u suprotnom biva prebačen na glavnu stranu)
poseban SID za svakog korisnika (ovo mogu uneti i ručno)
ako postoji SID koji je ukucao korisnik on se šalje u Kontrol panel pod tim nick-om


Znači tabela , jedan red za nick, drugi za sid?
Hvala na primedbi, na to uopšte nisam obratio pažnju.



Ako već imaš korisnike u bazi onda koristi ID i SID da bih lakše pratio. Predlog je da napraviš neki HASH generator koji će ti sakriti lozinku ili tvoj SID kod. Kasnije kod provere samo generišeš iz inputa ono što korisnik upiše i uporediš u bazi. Ako je to-to onda dalje ima pristup. neznam ali sve neka ide u MySQL. Prvo napravi šemu na papiru pa onda se baci na kodiranja.

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

vasa.93 ::E.L.I.T.E. ::Znači tabela , jedan red za nick, drugi za sid?Ili pak kolone? smešak

Mislim na phpMyAdmin, zato sam rekao redovi (svaki novi red se dodaje za novu promenljivu).

FoxVanis ::
Predlog je da napraviš neki HASH generator koji će ti sakriti lozinku ili tvoj SID kod.


OK, odradiću to Ziveli

Ko je trenutno na forumu
 

Ukupno su 1078 korisnika na forumu :: 26 registrovanih, 6 sakrivenih i 1046 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: anta, bojcistv, Brana01, ccoogg123, djuradj, Faki-Valjevo, Frunze, Georgius, Krusarac, Mercury, Mi lao shu, milutin134, MiroslavD, mkukoleca, nenad81, nextyamb, nikoladim, proka89, RED4G-304, RiV, sabros, Sirius, User98, wolf431, Wrangler, ZetaMan