Nasıl bir eklenti WordPress bir URL Hijack miyim?

2 Cevap php

Tabii ki her zaman. 'Htaccess dosyasını WordPress düzenleyebilirsiniz, ama bu tür benim WP biraz standart dışı eklentisi yapmak istiyorum. Bunun yerine, WordPress özel bir eklenti ile bir URL kaçırmak için yolu nedir?

Örneğin, 'ben bir eklenti olarak WordPress yüklü olabilir ayrıntılı ürün kataloğu oluşturmak istiyorum diyelim. Bir kez aktive sen eklenti üzerinde bir yönetici paneline gidin ve "/ katalog" (veya ne olursa olsun seçtiğiniz) ile başlayan tüm URL'ler Bu ürün katalog uygulaması için giderdim bunu söyleyebilirdi. Şimdi app wp-content/plugins/mycatalog klasöründe bulunması olacaktır. Yani, / catalog/product/400 sonra URL dışarı "ürün" ve "400" ayrıştırmak hangi wp-content/plugins/mycatalog/app.php giderdim.

2 Cevap

Ben yolu wp-content/plugins/hijack bir eklenti klasörü oluşturulur ve daha sonra içeride bu dosyayı plugin.php sıkışmış.

<?php
/*
Plugin Name: Hijack
Plugin URI: http://example.com/contact
Description: Sample URL Hijacker Plugin
Author: John Doe
Version: 1.1
Author URI: http://example.com/contact
*/

add_filter('init','Hijack');

function Hijack() {
    $URL = get_bloginfo('wpurl');
    $PLUGIN = $_SERVER['SCRIPT_FILENAME'];
    $PLUGIN = str_replace('/index.php','',$PLUGIN);
    $PLUGIN = $PLUGIN . '/wp-content/plugins/hijack';

    $sHijack = '/catalog';

    $sURL = $_SERVER['REDIRECT_URL'];
    if (strpos(' ' . $sURL,$sHijack)>0) {
        $sYank = $URL;
        $sYank = str_replace('http://','',$sYank);
        $sYank = str_replace('https://','',$sYank);
        $sYank = str_replace($_SERVER['SERVER_NAME'] . '/','',$sYank);
        $sYank = $sYank . $sHijack;
        $sTemp = str_replace($sYank,'',$sURL);
        $sTemp = str_replace($sYank . '/','',$sTemp);
        $sTemp = str_replace('//','/',$sTemp);
        if ((substr($sTemp,-1,1) == '/') and ($sTemp != '/')) {
            $sTemp = substr($sTemp, 0, -1);
        }
        define('VARS',$sTemp);
        include($PLUGIN . '/index.php');
        exit(0);
    }
}

Sonra oradan, ben sadece bir test olarak wp-content/plugins/hijack/index.php eklenmiş ve bu kod kullanılır:

<?php

echo VARS;
echo "<br />\n";
print_r($_GET);

Eklenti aktive edildiğinde bu noktada, benim kaçırmak eklenti klasöründe index.php dosyasına / katalog gibi, / catalog/products/400, vb tüm URL'leri yönlendirme olabilir, ve sonra index.php önünde gibi hareket ediyorum WordPress'in içinden yüklü benim web uygulaması için kontrolör. (Ben PHP programlama MVC modeli aşina umuyorum.) Ön denetleyicisi sonra Absorpsiyonlu ne göre sayfa kontrolörleri aramak için yeniden olabilir.

Ben tam olarak ne istediğinizi anlamak emin değilim, ama her zaman $_SERVER['REQUEST_URI'] PHP ile belgenin istenen URL'yi kontrol ve parse_url veya {[(2) gibi bir şey kullanabilirsiniz }] teşrih etmek.

Sayfa yönlendirme gibi bir header() bir HTTP yönlendirmesi veya bir META yönlendirme ile çağrı kullanabilirsiniz. Bunların hiçbiri da WordPress özgüdür. redirection eklenti muhtemelen ihtiyacınız ne yaptığını:

http://wordpress.org/extend/plugins/redirection/