Ocena wątku:
- 0 głosów - średnia: 0
- 1
- 2
- 3
- 4
- 5
sprawdzanie w pliku czy string się powtarza
|
Liczba postów: 37
Liczba wątków: 13
Dołączył: 18-02-2012
Reputacja:
0
mam kod generujący 50 haseł i zapisujący je do pliku jeden pod drugim:
Kod: for ($s=0; $s<50; $s++){
$znaki = '1234567890qwertyuiopasdfghjkklzxcvbnm';
$kod = '';
for ($i=0; $i<5; $i++) // 5 to długość ciągu
{
$kod .= $znaki[rand()%(strlen($znaki))];
}
$kody[] = $kod; // a tutaj zapisujemy go do tablicy
}
file_put_contents('./kody.txt', implode(PHP_EOL, $kody));
chciałbym udoskonalić go tak aby nie pozwalał na tworzenie dwóch takich samych haseł w pliku
ktoś mi doradził żebym to zrobił za pomocą pętli w pętli ale nie bardzo mam pojęcie jak to zrobić.
Czy mógłby mi to ktoś wytłumaczyć ale naprawdę "łopatologicznie" bo z php dopiero zaczynam, albo podać swój sposób na zrobienie tego?
Liczba postów: 2,587
Liczba wątków: 2
Dołączył: 03-04-2010
Reputacja:
58
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Liczba postów: 37
Liczba wątków: 13
Dołączył: 18-02-2012
Reputacja:
0
a jeśli zastosuję tą funkcję i np. będzie powtarzało się jakies hasło to samo zostanie zastąpione innym czyli nadal będzie 50? Czy 49 (- to jedno które się powtórzyło)?
Liczba postów: 2,587
Liczba wątków: 2
Dołączył: 03-04-2010
Reputacja:
58
Zwróci tylko unikalne. Jeśli chcesz sobie zastąpić, to po prostu dorób sobie zwykłego ifa sprawdzającego liczbę indeksów w tablicy przed i po czysczeniu.
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Liczba postów: 37
Liczba wątków: 13
Dołączył: 18-02-2012
Reputacja:
0
20-02-2012, 00:23
(Ten post był ostatnio modyfikowany: 20-02-2012, 00:48 przez eremen.)
Kod: for ($s=0; $s<50; $s++){
$znaki = '1234567890qwertyuiopasdfghjkklzxcvbnm';
$kod = '';
for ($i=0; $i<5; $i++) // 5 to długość ciągu
{
$kod .= $znaki[rand()%(strlen($znaki))];
}
$kody[] = $kod; // a tutaj zapisujemy go do tablicy
$kody[] = array_unique($kody);
}
file_put_contents('./kody.txt', implode(PHP_EOL, $kody));
zrobiłem tak jednak jak otwieram plik w którym sie zapisują hasła co drugi wers jest napis 'array'... hmm ;]
Liczba postów: 2,587
Liczba wątków: 2
Dołączył: 03-04-2010
Reputacja:
58
1. Najpierw generujesz sobie kody
2. Zapisujesz do tablicy
3. Przejeżdżasz array_unique()
Kod: $kody = array(); // tu sobie pobierasz czy to z pliku czy jak tam chcesz
$kody[] = array_unique($kody);
if( count($kody) < 50 )
{
$result = $kody;
}
else
{
// dodatkowe generowanie kodów
}
4. Zapisujesz do pliku: http://php.net/manual/en/function.file-put-contents.php
A najlepiej to sobie ten skrypt generowanie przerób tak, żeby generował Ci unikalne kody.
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Liczba postów: 37
Liczba wątków: 13
Dołączył: 18-02-2012
Reputacja:
0
20-02-2012, 01:21
(Ten post był ostatnio modyfikowany: 20-02-2012, 01:55 przez eremen.)
no ok, zrobiłem takie coś (zrobiłem heh... znalazłem w necie  ):
Kod: for ($s=0; $s<50; $s++){
srand((double)microtime()*1000000);
$kod=md5(uniqid(rand()));
$kody[] = $kod; // a tutaj zapisujemy go do tablicy
}
file_put_contents('./kody.txt', implode(PHP_EOL, $kody));
jak widać jest to kod troszkę krótszy ;] przeszkadza mi w nim tylko to że nie wiem jak zrobić żeby generowane hasła miały nie mniej nie więcej tylko 5 cyfr
haha zrobiłem tak i działa
Kod: for ($s=0; $s<50; $s++){
srand((double)microtime()*1000000);
$kod=md5(uniqid(rand()));
// obliczamy ilość znaków w tekscie
$licz = strlen($kod);
// sprawdzamy, czy ilość znaków w tekscie jest większa
// lub równa liczbie znaków po jakiej tekst ma być obcięty
if ($licz>=5)
{
// obcinamy tekst o określoną ilośc znaków
$txt = substr($kod,0,5);
}
else
{
// jeżeli warunek nie jest spełniony pozostawiamy tekst bez zmian
$txt = $kod;
}
$kody[] = $txt; // tutaj zapisujemy okrojony kod do tablicy
}
file_put_contents('./kody.txt', implode(PHP_EOL, $kody));
Liczba postów: 9
Liczba wątków: 1
Dołączył: 19-02-2012
Reputacja:
1
Nie lepiej było by zamienić pętle for na np while i po losowaniu sprawdzić czy w tablicy nie istnieje żądana wartość, jeżeli nie dodajesz, zwiększasz jakiś licznik i jedziesz dalej, jeżeli istnieje olewasz i jedziesz dalej aż do osiągnięcia wartości licznika równej ilości wygenerowanych haseł...?
Liczba postów: 2,587
Liczba wątków: 2
Dołączył: 03-04-2010
Reputacja:
58
(20-02-2012, 02:13)marcin006 napisał(a): Nie lepiej było by zamienić pętle for na np while i po losowaniu sprawdzić czy w tablicy nie istnieje żądana wartość, jeżeli nie dodajesz, zwiększasz jakiś licznik i jedziesz dalej, jeżeli istnieje olewasz i jedziesz dalej aż do osiągnięcia wartości licznika równej ilości wygenerowanych haseł...? Najlepiej to by było zrobić tak jak we wcześniejszym poście napisałem: generować unikalne znaki i dla pewności przejeżdżać array_unique(), potem ewentualnie dodać nowe generowane, jeśli były jakieś duplikaty.
Dobre samopoczucie w tym tygodniu sponsoruje cytat:
Cytat:Mogę tylko tylko na prawo i lewo ale na środek nie mogę.
Liczba postów: 37
Liczba wątków: 13
Dołączył: 18-02-2012
Reputacja:
0
to co proponujesz ma sens i jest na pewno lepsze niż to co sam skleciłem ale długo musiał bym się z tym babrać żeby zrobić... a mam jeszcze parę innych wytycznych dotyczących hasła i wgl całej tej sondy ;]
|
Podobne wątki… |
Wątek: |
Autor |
Odpowiedzi: |
Wyświetleń: |
Ostatni post |
|
Wczytywanie pliku i generowanie pdf |
taaniel |
9 |
9,273 |
18-06-2017, 18:37
Ostatni post: lemans88
|
|
[PHP] wydajność funkcje w pliku |
camelrafal |
25 |
45,938 |
02-11-2016, 18:39
Ostatni post: martt4dg
|
|
tworzenie pliku w katalogu głównym strony |
harvester2001 |
3 |
5,230 |
06-09-2013, 22:13
Ostatni post: Kartofelek
|
|
Zapisywanie do pliku z textarea dokładnie wpisanego tekstu |
garfield23 |
2 |
3,593 |
02-04-2013, 21:30
Ostatni post: garfield23
|
|
[PHP/MYSQL] Problem z wyświetlaniem nazwy artykulu i pliku oraz rozmiaru pliku |
martinprz |
0 |
2,290 |
16-11-2012, 03:53
Ostatni post: martinprz
|
Użytkownicy przeglądający ten wątek: 3 gości
|
|
Sponsorzy i przyjaciele
|
|
|