webové odkazy php překážka. Hacky a doplňky. Spoofing adresního řádku v aplikaci Microsoft Internet Explorer

V souboru /includes/joomla.php ve funkci cleanText je návrh na nahrazení řádku

$text = strip_tags($text); $text = strip_tags ( $text , " " ) ;

Tento hack je určen pouze pro obrázky, které se vkládají jako normální obrázky. U obrázků vložených mambotem (mosimage) tento hack nebude fungovat.

Jak zajistit, aby se v komponentě com_weblinks objevil přímý odkaz

V weblinks.html.php musíte nahradit řádek:

$link = sefRelToAbs( "index.php?option=com_weblinks&task=view&catid=" . $catid ."&id=" . $row ->id ) ; $odkaz = $řádek ->url ; Jak zajistit, aby Joomla fungovala na dvou hostitelích (doménách) současně. Tito. například v místní síti na 10.0.0.15 a z internetové stránky-firmy.ru. Nehledě na to, že obě adresy jsou přiřazeny stejnému stroji.

Za prvé, celý problém je v tom, že Joomla zobrazuje všechny obrázky a soubory CSS (jejich cesty v šabloně) vzhledem ke své proměnné $mosConfig_live_site - základní adresa webu zadaná během instalace. A pokud se k ní někdo pokusí přistupovat s jinou adresou, pak se na logice jejího fungování nic nemění - základní adresa se bere z konfiguračního souboru. Pokud je například v konfiguraci uvedeno, že je Joomla umístěna na localhostu, pak přístup z místní sítě, a to i na správně nakonfigurovaný Apache naslouchající na adrese 192.168.0.1, na tom nic nezmění - src obrázků bude stále začínat s „localhost“, který pro ostatní stroje již bude mít svůj vlastní localhost Cílem řešení pro takové případy je nahradit proměnnou $mosConfig_live_site u požadovaného hostitele, aby všechny funkce mohly vydávat správné odkazy a již uživatele vedly na. buď jeden nebo druhý virtuální web (uveďte správné základní cesty k obrázkům a základní cesty k adresám, existuje mambot Auto live site, pokud vám to nějakým způsobem nevyhovuje, tak v zásadě může). opakujte, v konfiguraci.php, místo definice $mosConfig_live_site, musíte napsat svůj kód.

if ($_SERVER [ "HTTP_HOST" ] =="host1.ru" ) $mosConfig_live_site = "host1.ru" ; else $mosConfig_live_site = "host2.ru" ;

Je nutné dát pozor, že pokud používáte cache, musíte mít také dva různé cachovací adresáře pro dva hostitele, protože se v cache mohou křížit odkazy na různé hostitele a uživatel ze špatné sítě se pak vůbec nikam nedostane . Proměnná $mosConfig_cachepath je zodpovědná za mezipaměť.

Jak zajistit, aby se na jedné stránce objevily dvě součásti současně

Hned vám řeknu - ne všechno je tak jednoduché. Koneckonců to není modul. Proto se za prvé vyplatí hledat alternativu, tzn. Oblíbená součást jistě přichází s moduly, které dokážou replikovat její funkčnost. Pokud nic takového neexistuje, pak je tato možnost. Může být vyroben jako modul, nebo teoreticky může být vložen do šablony. Myšlenka je taková - volání komponenty přes index2.php (co a proč - přečtěte si celou skutečnost). Tito. můžete vytvořit iframe s src="index2.php?option=com_component&no_html=1" na požadovaném místě vložení pro druhou komponentu. A tam se to zobrazí. Další věc je, že je nepravděpodobné, že bude možné plně zajistit funkčnost. Ale přesto je to cesta ven.

Nebo použijte konstrukci: mosLoadComponent("com_mycomp" ) ;

Ale pokud je komponenta spuštěna tímto způsobem, musíte pochopit, že neví o vašich manipulacích a bude pracovat podle svých $option a $task.

Jak zvýšit délku nadpisu v článku

V phpMyAdmin musíte spustit následující dva příkazy (existuje speciální stránka pro provádění SQL dotazů), stačí nahradit ###_ vaší skutečnou předponou tabulky. Maximální možný počet je 255. V příkladu je použito 200.

ALTER TABLE `###_content` ZMĚNA `alias_název` `alias_název` VARCHAR(200) NOT NULL; ALTER TABLE `###_content` CHANGE `title` `title` VARCHAR(200) NOT NULL;

Jak do RSS kanálu zahrnout celé texty zpráv, nejen jejich titulky

Chcete-li to provést, musíte v souboru /components/com_rss/rss.php nahradit

$item_description = $řádek ->introtext ; $item_description = $row ->fulltext ; Jak mohu vytvořit dvě stránky Joomla pomocí stejné databáze nebo pomocí stejných souborů?

Pokud jde o použití jedné databáze, musíte napsat jednu databázi v configuration.php pro dva motory, ale musíte rozumět tomu, co děláte. Protože udržování relací pro uživatele v tomto případě bude velmi problematické, protože domény jsou různé. Tito. přihlašovací záznamy v tabulce #__sessions se (mohou) překrývat.

Pokud chcete používat stejné soubory bez kopírování velké distribuce, pak v zásadě můžete použít příkaz „ln -s“ v Linuxu k vytvoření symbolických odkazů na existující soubory a nekopírovat je pro nový web.

Jak vytvořit virtuální stránku přístupnou na konkrétní adrese v obecném designu Joomla (http://site.ru/super_page)
  • Prvním způsobem je použití jakési komponenty SEF, ve které zadáte požadovanou virtuální cestu pro statickou stránku. Zde je mínus - tato komponenta začne předělávat všechny ostatní odkazy (a obecně jsou tyto komponenty velmi náročné na energii a vyžadují mnoho zdrojů, aby fungovaly).
  • Vytvořte alias pro takovou stránku pomocí mod_rewrite a .htaccess. K tomu potřebujete:
    • Vytvořte statickou stránku s textem, který potřebujete, zjistěte její ID a adresu (není nutné takovou stránku vytvářet, může již existovat a obecně se jedná o libovolnou komponentu, ne nutně com_content)
    • Vymyslete alias, ať je to "super_puper"
    • Otevřete .htaccess a před řádek "RewriteCond %(REQUEST_FILENAME) !-f" napište:
RewriteRule ^(super_puper) index.php?option=com_content&task=view&id=12 RewriteCond %(REQUEST_FILENAME) !-f
    • A nyní, za předpokladu, že se Joomla nachází na site.ru, když otevřete odkaz http://site.ru/super_puper, otevře se požadovaná statická stránka s vašimi informacemi. Samotný odkaz "index.php?option=com_content&task=view&id=12" může být cokoli potřebujete, hlavní věc je, že odkaz není absolutní (tj. s http:/ /...), ale relativní (musí začínat indexem .php?...)
Jak zakázat ukládání do mezipaměti pro konkrétní článek

To může být nutné, pokud používáte mambot rd_addphp pro vkládání skriptů, které by měly pokaždé generovat náhodná čísla nebo náhodný text, bez ohledu na systém ukládání do mezipaměti Joomla. Chcete-li zakázat ukládání do mezipaměti určité položky, musíte zjistit její ID (v admin panelu se při úpravách podívejte do adresního řádku, bude to říkat něco jako "...&id=123..."). Takže 123 bude ID našeho článku. Je nutné nahradit v souboru /components/com_content/content.php přibližně na řádku 1600

$cache ->call ( "HTML_content::show" , $row , $params , $access , $page ) ; if ($row ->id !="123" ) $cache ->call ( "HTML_content::show" , $row , $params , $access , $page ) ; else HTML_content::show ($row, $params, $access, $page) ;

Kde 123 je ID článku, které potřebujete.

Nainstaloval jsem mnoho komponent, ale seznam komponent v nabídce správce zobrazuje jejich snížený počet a pak se zobrazí „Další komponenty...“. Jak zobrazit všechny komponenty.

Potřebujete řádek v souboru /administrator/modules/mod_fullmenu.php

$topLevelLimit = 19 ;

nahrazen

$topLevelLimit = 199 ; Jak nainstalovat kopii součásti

Nutno říci, že úkol je to nesmírně obtížný. Pokud nerozumíte tomu, jak komponenta funguje, tak to raději ani nezkoušejte. Pro ty, kteří stále chtějí poznamenat hlavní body:

  • V souboru XML přejmenujte název komponenty ve jmenovce
  • Dále je potřeba přejmenovat použité tabulky (zaprvé v souboru XML a zadruhé ve všech dílčích souborech, kdekoli se používá databázový objekt $database a metoda setQuery)
  • Přejmenujte také všechny cesty v komponentách. Cesty lze použít v odkazech na sebe nebo v názvech zahrnutých souborů. Nejčastěji se jedná o hledání podřetězce com_componentname a jeho nahrazení novým.

Tato metoda ale nic nezaručuje. U jednoduchých to možné je a přejde, ale u složitých to nikdo nezaručí.

Jak zajistit, aby jedna pozice náhodně zobrazovala jeden z modulů, které jsou k ní přiřazeny
  • Možnost 1 – hackněte funkci mosLoadModules. V šabloně na místo, kde je potřeba zobrazit jeden z N modulů, napíšeme (pozor na třetí argument):
mosLoadModules("position", display_setup,true);

A výše uvedenou funkci mírně opravíme:

function mosLoadModules( $position ="left" , $style =0 , $show_random = false ) ( ... $allModules =& initModules() ; if (isset ( $GLOBALS [ "_MOS_MODULES" ] [ $position ] ) ) ( $modules = $GLOBALS [ "_MOS_MODULES" ] [ $pozice ] ; else ( $modules = pole () ; ) //přidej sem if ($show_random && sizeof ($modules ) >0 ) ( $tmp = $modules [ rand (0 ,sizeof ($modules ) -1 ) ] ; $modules = array ($tmp ) ; // konec příkazu if ( count ( $modules ) ;< 1 ) { $style = 0 ; }

Přidali jsme k němu třetí argument (který je použit v šabloně, kde jsme napsali true) a upravili kód.

  • Možnost dvě je bezbolestnější, pouze upravujeme šablonu. Ale pracnější - musíme vytvořit několik pozic. Nejprve vytvoříme několik nových pozic modulu, například new1 ... new10. Uložit. Na správném místě v šabloně před voláním funkce mosLoadModules přidejte potřebný kód:
$rand_num = rand (1 ,10 ) ;//od 1 do 10 - jako v názvu pozice mosLoadModules ( "new" .$rand_num , display_settings) ; Věřím, že přejmenováním složky /adminisrator/ učiním své stránky bezpečnější

Tato možnost není standardně poskytována. Ale ve skutečnosti je možné, organizováním vyhledávání v souborech Joomla, nahradit jakýkoli výskyt takového slova vaším - tajné. Někdy se později mohou objevit chyby o nemožnosti přístupu k souborům, ale pokud znáte číslo souboru a řádku, lze je opravit. Problém je tedy v zásadě řešitelný.

I nadále s vámi sdílím malé, ale velmi užitečné skripty stránek, které pomáhají zlepšit přístup vyhledávačů k vašemu webu. Tentokrát si povíme o správném odkazování stránek.

Nejprve si vytvořte databázi adres stránek a možných kotev pro každou z nich. Jako základ použijeme soubor *.txt. Struktura souboru bude vypadat takto:

adresa_stránky_1, kotva_2, kotva_3,..., adresa_stránky_2 kotvy, kotva_2, kotva_3,..., adresa_1 kotvy, kotva_2, kotva_3,..., adresa_stránky_1, kotva_2; kotva_3, ..., kotva_n

Jak vidíte, další použití skriptu je možné s libovolným počtem adres stránek a jejich kotev. Adresa stránky se píše bez http://www.site.ru/, tzn. ihned od kořene bez prvního lomítka. Adresa je od kotev oddělena středníkem a kotvy jsou odděleny pouze čárkou. Můžete napsat i celou adresu, jen je to pro mě osobně pohodlnější, ale vyplnění a výstup výsledku si můžete změnit sami, myslím, že na to intuitivně přijdete sami.

A tak vznikla databáze odkazů a kotev pro ně, níže uvedu příklad PHP kódu pro přímé zobrazení odkazů pro odkazování na webu:

Tento kód vložíme kamkoli na web, kde se zobrazí 5 náhodných odkazů z databáze a náhodná kotva. Je lepší kotvy zředit, než psát pouze 1 do odkazu. Při správném prolinkování na vašem webu okamžitě zaznamenáte nárůst návštěvnosti a zlepšení ostatních ukazatelů webu.

Těším se na vaše dotazy v komentářích k tomuto příspěvku.

Datum zveřejnění: 3. března 2014
    Recenze a komentáře:

    Dmitriy:
    Díky za scénář, implementuji ho. Není možné kopírovat zdrojový kód ze stránky, kopíruje se pouze po malých částech, pohodlnější by byl celý.

    Kirill:
    Díky za poznámku o kopírování, právě jsem to viděl, pokusím se to brzy opravit.

    Alexey Pavlov:
    Chyba v řádku $tex = explode(":",$sendlist[$count] Potřebujete středník, ne dvojtečku. Trochu jsem změnil kód, aby byl přehlednější:


Horní