Autor | Zpráva | ||
---|---|---|---|
marian34 Profil |
Zdravím,takto zapisujem formulár do súboru:
<?php #zapis $f = fopen("/home/pi/test.user", "a"); fwrite($f,"\n"); fwrite($f, '[account]'); fwrite($f,"\n"); fwrite($f, 'user = '.$_POST['meno']); fwrite($f,"\n"); fwrite($f, 'pwd = '.$_POST['heslo']); fwrite($f,"\n"); fwrite($f, 'hostname = '.$_SERVER['REMOTE_ADDR']); fwrite($f,"\n"); fclose($soubor); ?> |
||
peta Profil |
<?php $pos = 0; $pos = strpos( $str, 'hostname = '.$_SERVER['REMOTE_ADDR'], $pos); if ($pos !== false) {} else ($pos = strpos ...) |
||
marian34 Profil |
??
|
||
marian34 Profil |
Takto to celkom funguje,no chcelo by to ešte test na počet zhôd...
<?php $file_content = file_get_contents('test.user'); $findme = $_SERVER['REMOTE_ADDR']; $pos = strpos($file_content, $findme); if ($pos !== false) { echo "Blok IP."; } else { header( 'Location: /kontakt/index.html' ); exit(); } ?> |
||
marian34 Profil |
#5 · Zasláno: 12. 2. 2014, 20:19:17
Páni,ako sa dá v tejto súvislosti získať počet testovaného reťazca?Tak ako to mám,skončí na prvej zhode.
Ešte by som potreboval nasmerovať ako dosiahnúť toho,že ak budem testovať reťazec pr. "jakpsat",aby nenašlo zhodu v reťazci "jakpsatweb". |
||
peta Profil |
#6 · Zasláno: 13. 2. 2014, 10:05:43
marian34:
Proc tam myslis mam slovo hostname? :) Muzes hledat konec radku a pak dopocitat delku. Muzes pouzit preg_match s podminkou konce radku 'jakpsat$'. viz Kategorie PHP, tam je takovych dotazu more. |
||
marian34 Profil |
peta:
Jj,mám v tom guláš,ale je to príliš rozsiahle,aby som to začal študovať. Teda ako zapísať ten preg_match(skúšam,ale nijako mi to nefunguje): <?php $file = file_get_contents('test.user'); $findus = $_POST['meno']; if (preg_match("/\b$findus\b/", $file)) { echo "nasla sa zhoda"; } ?> edit:takto je to ok,ale už mi z tých lomitiek .ebe. |
||
peta Profil |
Tak zustan u strpos. Cele to explodujes podle \n, pak pres strpos najdes nebo nejades shodu. Pak zjistis, jestli je za $pos dalsi znak nebo treba, zda je to konec retezce (strlen($str)==$pos+strlen($hledane)). Pripadne, jestli vis naprosto jiste, ze za tim mas alespon mezeru, tak muzes hledat retezec
'hostname = '.$prom.' '
Mimochodem, jsou tam dalsi funkce, jako treba preg_match_all, ktera by te mozna zajimava vic. |
||
janbarasek Profil |
#9 · Zasláno: 13. 2. 2014, 17:04:37
Ještě mě tak napadá, jak snadno hledat duplicity:
Stačí celý seznam setřídit nějakým rychlým algoritmem, následně projít cyklem pole a kontrolovat vždy sousední 2 indexy, jestli se shodují. Pokud ano, tak je to duplicita. Podobně jsem řešil hledání počtu stejných slov v textu. |
||
pcmanik Profil |
// offtopic ale nedalo mi nezareagovať
janbarasek: A nieje jednoduchšie použit toto: array_count_values(str_word_count($veta, 1)) ;
Vratí to pole s počtom koľkokrát sa dané slovo opakuje. |
||
janbarasek Profil |
#11 · Zasláno: 13. 2. 2014, 18:42:11
pcmanik:
Nevím, jsem původně programátor v jazyce C, kde toto není, takže jsem zvyklý na všechno vymýšlet svojí funkci a vědět, jak to funguje. Každopádně setříděný seznam má hlavní výhodu v tom, že se nemusí procházet celé pole, ale jen jeho část. |
||
Časová prodleva: 10 let
|
0