Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sprawdzanie czy ciąg znaków jest w pliku
Forum PHP.pl > Forum > Przedszkole
Night123
Czy jest funkcja sprawdzająca czy ciąg znaków znajduje się w notatniku? Jeżeli jest to jeszcze jak jej używać?
sajegib
W notatniku - pewnie, jest nawet skrót klawiszowy CTRL + F Rkingsmiley.png

A jak chcesz sprawdzić czy ciąg jest w pliku to pobierz treść pliku, a potem np. preg_match albo array_search w zależności jak sobie go pobierzesz
Sephirus
Najprościej w PHP:

  1. $szukanyCiag = 'to jest szukany ciag';
  2. $plik = '/sciezka/do/pliku.txt';
  3.  
  4. if(strpos(file_get_contents($plik),$szukanyCiag) !== false) {
  5. echo 'Znaleziono!';
  6. } else {
  7. echo 'Nie znaleziono :(';
  8. }


Kod ten jest jednak niewydajny, gdyż wczytuje do pamięci cały plik. Trzeba by było pomyśleć nad zczytywaniem pliku po kawałku z tzw. nadmiarem.

Jeśli ciąg ma 10 znaków to wczytujemy znaków 20 i sprawdzamy ten kawałek.
Cofamy się przechodzimy wskaźnikiem pliku o 10 do przodu i znowu pobieramy 20.
I tak aż nie znajdziemy bądź nie dojdziemy do końca wink.gif
Night123
Na da się to do rejestracji? Sprawdza czy taki login i hasło istnieje i jak jest to loguje jak nie to nie
jackraymund
wg mnie, lepiej gdybyś zrobił rejestracje mysql, nie notatnikową;p
o wiele latwiej, a zapobiegnie to wykradniecia hasel
Sephirus
@Night123 jeśli chodzi Ci o coś takiego jak przechowywanie danych do logowania to najlepiej to zrobić inaczej smile.gif

Bierzesz sobie jakiś folder. W nim przy rejestracji tworzysz plik o nazwie równej MD5 z loginu (aby uniknąć problemów z zapisem - nie wiem jakie znaki w loginie dopuszczasz). W pliku zapisujesz login oraz hasło i ewentualnie inne dane np tak:

Kod
login = Sephirus
password = d7e81bad5dada68f1f7d0f0fd6e769af
name = Mariusz


np tak:

  1. $salt = md5('jakis_losowy_ciag');
  2.  
  3. $content = 'login = ' . $login . "\n";
  4. $content.= 'password = ' . md5($salt.$password). "\n";
  5. $content.= 'name = ' . $name . "\n";
  6. file_put_contents('/folder/'.md5($login));


Oczywiście trzeba było by sprawdzić czy dany plik (a w tym przypadku user) nie istnieje smile.gif

Potem jak sprawdzasz dane wystarczy:

  1. $salt = md5('jakis_losowy_ciag');
  2.  
  3. if(file_exists('/folder/'.md5($login)) {
  4. $data = parse_ini_file('/folder/'.md5($login));
  5. if($data->password == md5($salt.$password)) {
  6. echo 'ZALOGOWANY!';
  7. } else {
  8. echo 'PODANO ZŁE HASŁO!';
  9. }
  10. } else {
  11. echo 'NIE MA TAKIEGO UŻYTKOWNIKA!';
  12. }


To tylko idea smile.gif masa tu błędów i trzeba by to zoptymalizować ... wink.gif
Night123
Jak bd miał chwilkę to popróbuje jak coś to napiszę rezultaty wink.gif

Mam takie pytanko, a jak to zrobić na Mysql? Mam bazę i chyba tak będzie lepiej.

PS:Sorki za duble posta, ale normalnie to chyba nikt już by tu nie wszedł.
aras785
np tak:
  1. <?php
  2. //nasz login i haslo -> pewnie pobierane będą z formularza
  3. $login = 'Arek';
  4. $haslo = 'test';
  5. //sprawdzamy czy nie są puste
  6. if(!empty($login) and !empty($haslo)) {
  7. //zapytanie do bazy -> uzywam PDO
  8. $db = new PDO('mysql:host=localhost;dbname=baza', 'LOGIN', 'PASSWORD');
  9. $zapytanie = $db->prepare("SELECT login FROM tabela WHERE login=:login AND haslo=:haslo LIMIT 1--");
  10. $zapytanie->bindParam(':login',$login,PDO::PARAM_STR,20);
  11. $zapytanie->bindParam(':haslo',md5($haslo),PDO::PARAM_STR,32);
  12. $zapytanie->execute();
  13. if($zapytanie->rowCount()==1) {
  14. //do sesji dodajesz czy coś i w $zapytanie->fetch() masz login uzytkownika
  15. echo('Udało się zalogować');
  16. }else echo('Zły login lub hasło');
  17. }
  18. ?>
jackraymund
chyba lepiej by bylo gdyby uzyl podstawowych funkcji, bo może być mu ciężko z twoim kodem
http://www.eioba.pl/a/1u8h/rejestracja-i-logowania-phpmysql
ja sam nie jestem aż tak początkujący a nie ogarniam o co w nim chodzi
aras785
Bo nie znasz podstaw PDO dlatego nie rozumiesz.
!*!
@aras785 - zapomniałeś o isset() wink.gif i co uzyskasz przez "LIMIT 1--" ?
@jackraymund - nie promuj przestarzałych metod, wprowadzasz tym ludzi tylko w błąd.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.