Jak vytvořit admin uživatele WordPressu pomocí skriptu na FTP

Upraveno 5 prosince, 2023 22:51

Uživatele WordPressu obvykle vytvoříte pouze dvěma způsoby. Ten první je klasický, z prostředí administrace a druhý, pro zkušenější uživatele přímo v databázi. Pojďme se ale podívat na třetí způsob, kterým vytvoříte uživatele WordPressu velmi pohodlně. V tomto článku si totiž ukážeme, jak vytvořit admin uživatele WordPressu pomocí skriptu na FTP. Princip bude jednoduchý. Vytvoříme PHP soubor, který jednoduše nahrajeme na FTP webu. Následně jej zavoláme v prohlížeči a začne se dít magie.

Skript vytvoří uživatele s administrátorskými právy, ukáže Vám jeho heslo a následně, jako v nějakém akčním filmu se sám z FTP smaže. Pojďme na to.

Jak vytvořit admin uživatele WordPressu pomocí skriptu na FTP

Co vlastně všechno budete potřebovat? Není toho mnoho. Stačí Vám obyčejný textový editor a přístup na FTP webu. V tomto konkrétním případě je úplně jedno, zda se na FTP dostanete pomocí FTP klienta, nebo pomocí nějaké webFTP služby od poskytovatele webhostingu.

Následující skript provádí tyto akce:

  • vytvoří nového uživatele WordPressu s uživatelským jménem wpuser
  • nastaví mu práva administrátora
  • ukáže Vám heslo tohoto uživatele, které automaticky vygeneruje
  • sám se na FTP smaže, aby zahladil stopy

K čemu takový skript slouží? Kupříkladu pro situaci, kdy jste zapomněli heslo, nefunguje Vám kontaktní e-mail uživatele a neumíte pracovat s databází. Druhá možnost může nastat tehdy, kdy máte přístup pouze k FTP a chcete se dostat do WordPressu, aniž byste znali přístupové údaje. Jistě, to se dá udělat i jinak. Přes FTP si zjistíte přístupy do databáze, přihlásíte se do phpMyAdmina a změníte hash. Tohle je ale trochu snazší a rychlejší způsob, aniž byste měnili původní heslo správce webu.

Skript pro vytvoření uživatele pomocí FTP

				
					

<?php

// ADD NEW ADMIN USER TO WORDPRESS
// ----------------------------------
// Put this file in your WordPress root directory and run it from your browser.
// Delete it when you're done.
require_once('wp-blog-header.php');
require_once('wp-includes/registration.php');

function generateStrongPassword($length = 15, $add_dashes = false, $available_sets = 'luds') {

    $sets = array();

    if(strpos($available_sets, 'l') !== false)
        $sets[] = 'abcdefghjkmnpqrstuvwxyz';
    if(strpos($available_sets, 'u') !== false)
        $sets[] = 'ABCDEFGHJKMNPQRSTUVWXYZ';
    if(strpos($available_sets, 'd') !== false)
        $sets[] = '23456789';
    if(strpos($available_sets, 's') !== false)
        $sets[] = '!@#$%&*?';

    $all = '';
    $password = '';
    foreach($sets as $set) {
        $password .= $set[tweak_array_rand(str_split($set))];
        $all .= $set;
    }

    $all = str_split($all);
    for($i = 0; $i < $length - count($sets); $i++)
        $password .= $all[tweak_array_rand($all)];

    $password = str_shuffle($password);

    if(!$add_dashes)
        return $password;

    $dash_len = floor(sqrt($length));
    $dash_str = '';

    while(strlen($password) > $dash_len) {
        $dash_str .= substr($password, 0, $dash_len) . '-';
        $password = substr($password, $dash_len);
    }

    $dash_str .= $password;

    return $dash_str;
}

$form = "<form action='' method='POST' style='margin: 20px 0 10px 0;'><button type='submit' name='removefile'>Smazat soubor</button></form>";

// Take a array and get random index, same function of array_rand, only diference is
// intent use secure random algoritn on fail use mersene twistter, and on fail use default array_rand
function tweak_array_rand($array){
    if (function_exists('random_int')) {
        return random_int(0, count($array) - 1);
    } elseif(function_exists('mt_rand')) {
        return mt_rand(0, count($array) - 1);
    } else {
        return array_rand($array);
    }
}

echo "<div class='wpuser'>";

// ----------------------------------------------------
// CONFIG VARIABLES
// Make sure that you set these before running the file.
$newusername = 'wpuser';
$newpassword = generateStrongPassword(24);
$newemail = 'adresa@domena.koncovka';
// ----------------------------------------------------
// This is just a security precaution, to make sure the above "Config Variables"
// have been changed from their default values.
if ( $newpassword != 'YOURPASSWORD' && $newemail != 'YOUREMAIL@TEST.com' && $newusername !='YOURUSERNAME' ) {
    // Check that user doesn't already exist
    if ( !username_exists($newusername) && !email_exists($newemail) )
    {
        // Create user and set role to administrator
        $user_id = wp_create_user( $newusername, $newpassword, $newemail);
        if ( is_int($user_id) )
        {
            $wp_user_object = new WP_User($user_id);
            $wp_user_object->set_role('administrator');

            if(is_multisite()) {
                grant_super_admin($user_id);
                $sites = get_sites();

                $user_info = [
                    "capabilities" => get_user_meta($user_id, "wp_capabilities", true),
                    "user_level" => get_user_meta($user_id, "wp_user_level", true)
                ];

                foreach($sites as $site) {
                    update_user_meta($user_id, "wp_" . $site->blog_id . "_capabilities", $user_info['capabilities']);
                    update_user_meta($user_id, "wp_" . $site->blog_id . "_user_level", $user_info['user_level']);
                }
            }

            echo '<p style="color: #428b42">Účet wpuser byl úspěšně vytvořen.</p><br>';
            echo "Uživatelské jméno<br><span class='user-select-all'>" . $newusername . "</span><br>E-mailová adresa<span class='user-select-all'>" . $newemail . "</span><br>";
            echo "Heslo<strong class='user-select-all'>" . $newpassword . "</strong>";
            echo "<span style='font-weight:bold;color:#FF0000;margin-top:20px;'>Aktuální soubor byl smazán.</span>";
            unlink(__FILE__);
        }
        else {
            echo 'Během vytváření uživatele wpuser došlo k chybě.';
            echo $form;
        }

    } else {
        echo 'Administrátorský účet wpuser již existuje!';
        echo $form;
    }
}
else {
    echo 'Vypadá to, že nebylo vyplněno heslo, uživatelské jméno nebo e-mail. Zkuste to znovu.';
    echo $form;
}

if(isset($_POST['removefile'])) {
    unlink(__FILE__);
    echo "<span style='font-weight:bold;color:#FF0000'>Aktuální soubor byl smazán.</span>";
}

echo "</div>";
				
			

Co mám se skriptem dělat?

Nejprve si vytvořte nový textový dokument. Do něj zkopírujte výše uvedený PHP kód. Textový soubor uložte a pojmenujte jej user.php. Všimněte si, že jste ve jméně souboru změnili koncovku z .txt na .php. To je v pořádku. Tento soubor nahrajte do stejné složky na FTP, kde máte nahraný WordPress. Poté soubor spusťte. Napište do prohlížeče URL adresu souboru. To je v tomto případě vase-domena.koncovka/user.php.

Skript se spustí, vytvoří ve WordPressu uživatele s admin právy, ukáže Vám přístupy a smaže se. Nyní můžete využít tyto přístupy k tomu, abyste se přihlásili.

Jak vytvořit admin uživatele WordPressu pomocí skriptu na FTP
Jak vytvořit admin uživatele WordPressu pomocí skriptu na FTP

Jak vytvořit admin uživatele WordPressu pomocí skriptu na FTP

Závěr

Skript používejte uváženě. Primární cíl jeho funkce není v tom, abyste někomu bez jeho vědomí nabourali jeho redakční systém. Slouží v podstatě jako nějaký nouzový systém pro zapomenuté heslo, který můžete alternativně použít.

Web je vytvářen s pečlivostí k obsaženým informacím. Snažím se poskytovat kvalitní a užitečný obsah, který ostatním pomáhá, nebo je inspiruje. Pokud jste spokojeni s mou prací a chtěli byste mě podpořit, můžete to udělat prostřednictvím jednoduchých možností.

Byl pro Vás tento článek užitečný?

Klikni na počet hvězd pro hlasování.

Průměrné hodnocení. 0 / 5. Počet hlasování: 0

Zatím nehodnoceno! Buďte první

Jak užitečný vidíte tento článek.

Sledujte mě na sociálních médiích.

Je mi líto, že pro Vás nebyl článek užitečný.

Jak mohu vylepšit článek?

Řekněte mi, jak jej mohu zlepšit.

newsletter

Odebírejte Newsletter

Buďte v obraze! Připojte se k odběru newsletteru a buďte první, kdo získá nejnovější informace přímo do vaší e-mailové schránky. Sledujte aktuality, exkluzivní události a inspirativní obsah, přímo na Vašem e-mailu.  

Odebírat
Upozornit na
guest
0 Komentáře/ů
Vložené zpětné vazby.
Zobrazit všechny komentáře.

Pokud mi chcete napsat rychlou zprávu, využije, prosím, níže uvedený
kontaktní formulář. Děkuji.

Další Kontaktní údaje