Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Sprawdzanie czy ciąg znaków jest w pliku, Takie pytanko
Night123
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 21.01.2013

Ostrzeżenie: (0%)
-----


Czy jest funkcja sprawdzająca czy ciąg znaków znajduje się w notatniku? Jeżeli jest to jeszcze jak jej używać?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
sajegib
post
Post #2





Grupa: Zarejestrowani
Postów: 352
Pomógł: 59
Dołączył: 16.01.2013

Ostrzeżenie: (0%)
-----


W notatniku - pewnie, jest nawet skrót klawiszowy CTRL + F (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
Sephirus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Night123
post
Post #4





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 21.01.2013

Ostrzeżenie: (0%)
-----


Na da się to do rejestracji? Sprawdza czy taki login i hasło istnieje i jak jest to loguje jak nie to nie
Go to the top of the page
+Quote Post
jackraymund
post
Post #5





Grupa: Zarejestrowani
Postów: 217
Pomógł: 21
Dołączył: 10.06.2011
Skąd: Głogów

Ostrzeżenie: (0%)
-----


wg mnie, lepiej gdybyś zrobił rejestracje mysql, nie notatnikową;p
o wiele latwiej, a zapobiegnie to wykradniecia hasel

Ten post edytował jackraymund 22.01.2013, 15:14:56
Go to the top of the page
+Quote Post
Sephirus
post
Post #6





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


@Night123 jeśli chodzi Ci o coś takiego jak przechowywanie danych do logowania to najlepiej to zrobić inaczej (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/smile.gif) masa tu błędów i trzeba by to zoptymalizować ... (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Night123
post
Post #7





Grupa: Zarejestrowani
Postów: 27
Pomógł: 2
Dołączył: 21.01.2013

Ostrzeżenie: (0%)
-----


Jak bd miał chwilkę to popróbuje jak coś to napiszę rezultaty (IMG:style_emoticons/default/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ł.
Go to the top of the page
+Quote Post
aras785
post
Post #8





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


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. ?>


Ten post edytował aras785 23.01.2013, 09:22:08
Go to the top of the page
+Quote Post
jackraymund
post
Post #9





Grupa: Zarejestrowani
Postów: 217
Pomógł: 21
Dołączył: 10.06.2011
Skąd: Głogów

Ostrzeżenie: (0%)
-----


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

Ten post edytował jackraymund 23.01.2013, 09:44:51
Go to the top of the page
+Quote Post
aras785
post
Post #10





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

Ostrzeżenie: (0%)
-----


Bo nie znasz podstaw PDO dlatego nie rozumiesz.
Go to the top of the page
+Quote Post
!*!
post
Post #11





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


@aras785 - zapomniałeś o isset() (IMG:style_emoticons/default/wink.gif) i co uzyskasz przez "LIMIT 1--" ?
@jackraymund - nie promuj przestarzałych metod, wprowadzasz tym ludzi tylko w błąd.

Ten post edytował !*! 23.01.2013, 11:45:37
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 00:20