Emerkove osobne stránky - Miroslav Rác

RSS
  1. január 2010

Ako sa brániť proti preklepom v adrese?

Chcete upraviť adresu stránky a zároveň chcete aby sa na stránku používateľ dostal aj za pomoci starej linky a zároveň sa chcete vyhnúť duplicitnému obsahu? Alebo chcete surférom ponúknuť rýchle riešenie pri hľadaní stránky so skomolenou adresou (obsahujúcou nejaký preklep) ? Využite PHP funkciu similar_text().

Ako na to?

Ak dopyt na (napr.) článok po zadaní adresy nevráti výsledok, môžeme používateľovi navrhnúť stránky s podobnou adresou. Ako na to? Môžeme zvoliť jednoduché riešenie (zrejme najjednoduchšie - nad iným som sa ani nezamýšľal) s využitím, už spomínanej funkcie similar_text().

Postup je veľmi jednoduchý. Buď vytiahnúť potrebné dáta všetkých záznamov v tabuľke a porovnávať text, alebo vytvoriť tabuľku, ktorá bude obsahovať všetky dostupné adresy na webe. Záleží od počtu článkov resp. adries. Ja uvediem príklad prvej možnosti (identická možnosť s mojím blogom - sami vidíte, že tu veľa článkov nie je :]).

  • //$ReqURL - URL zadaná používateľom
  • $Select = mysql_query("SELECT * FROM `tabulka`");
  • $Similar = array();
  • while($Row = mysql_fetch_assoc($Select)){
  •   similar_text($ReqURL, $Row['URL'], $Similarity);
  •   if($Similarity > 60){ //ak je podobnosť väčšia ako 60%
  •     $Similar[$Similarity] = 'Mali ste na mysli '.$Row['URL'].'?';
  •   }
  • }
  • krsort($Similar); //zoradíme od najpodobnejšej po najmenej podobnú URL
  • echo implode('', $Similar);

Ak chcete vidieť skript v ackii, schválne skúste linku ->

http://emer.grafika4u.sk/clanky/php-mysql/ako-sa-branit-proti-preklepom

Navrhnutý kód si samozrejme každý upraví podľa vlastných potrieb :) Dúfam, že bude článok niekomu užitočný. Tak naschled v ďalšom článku.


Článok napísal Miroslav Rác 1. januára 2010
vybrali.sme.sk


Airweb.sk - creative web solutions
3 príspevky

Diskusia

nie len pre menšie databázy | emer | 6. marca 2010 o 13:16:36-+Podobný resp. totožný skript (len má iné využitie) používam v jednom projekte, a dá sa povedať, že za rýchly čas (cca 0.3 s) prehľadá aj 40 000 - 70 000 záznamov. Ako sa mi to bude rozrasatať, uvidím, čo to spraví pri väčšom počte.

| blizzboz | 24. marca 2010 o 21:50:32-+nebolo by lepšie overovať podobnosť textu priamo v databáze?

RE: nebolo by lepšie... | emer | 25. marca 2010 o 13:26:37 | Hodnotenie: 2.07-+Áno, aj to som skúšal. Akurát, že pri tých 40 000 záznamoch to trvalo približne 14 sekúnd, čo je oproti 0.3 dosť veľký rodziel.

Pridať komentár

Meno:
Predmet:
Text:Kontrola proti spamu
Menu Vyhľadávanie
  • Na stránke momentálne nie je možné vyhľadávať
Moje poznámky
  • 16. marca 2010 o 11:58:46:
    Na hodnotenie komentárov som použil správny výpočet podľa vzorcu uvedenom v dosť poučnom článku. Viac v rubrike Oplatí sa vidieť.
  • 1. januára 2010 o 13:29:02:
    Prajem vám šťastný a hlavne úspešný nový rok :)
  • 12. decembra 2009 o 23:51:55:
    Predmet v komentároch je už naozaj nepovinný :)
Používatelia
  • Je tu prítomných 1 používateľov.
emer, 2010

Na tomto blogu su vyjadrené moje myšlienky, názory a postoje k určitým veciam alebo udalostiam. Preto upozorňujem, že to čo tu napíšem nemusí byť 100% pravda a aj ja sa môžem zmýliť, alebo mať odlišný názor na vec. Texty neprešli jazykovou kontrolou.