Come bypassare la protezione password di una pagina WordPress tramite URL

23 gen 2017, 16:37:17
Visualizzazioni: 15K
Voti: 0

Ho una pagina protetta da password che vorrei rendere accessibile con un link personalizzato contenente la password come variabile GET nell'URL www.dominio.tld/mia-pagina?code=miapasswordpersonalizzata

Ho trovato questo ma non funziona Bypassare i post protetti da password tramite variabile GET

Potresti aiutarmi a bypassare il form della password?

Grazie

0
Tutte le risposte alla domanda 3
0
    add_filter( 'post_password_required', function( $returned, $post )
{
    // Se la pagina è protetta da password e il parametro GET 'pwd' corrisponde alla password del post
    if( $returned && ( $_GET['pwd'] ==  $post->post_password ) )
        $returned = false; // Disabilita la richiesta di password
    return $returned;

}, 10, 2 );

**Link per bypassare la protezione di pagina con password. Da aggiungere nel file functions.php del tema. Il link dovrebbe essere simile a: https://www.example.com/post/?pwd=PASSWORD

10 mag 2023 21:53:09
5

Puoi utilizzare lo stesso principio dell'esempio fornito, tuttavia sostituisci $_GET con $_POST. Quindi avresti qualcosa di simile verso la fine:

// Il tuo controllo personalizzato per il contenuto di '$_POST'
// …controlla anche se effettivamente esiste una password
// …e se l'utente è un visitatore ripetuto, non reimpostare nuovamente il Cookie
if (
        isset( $_POST['circumvent'] ) 
        and 'disable-pass' === $_POST['circumvent'] 
        and isset( $post->post_password )
        and ! isset( 'wp-postpass_'.COOKIEHASH )
    ) {
    // Infine utilizziamo la password in testo semplice per impostare il Cookie
    // come se l'utente l'avesse inserita nel modulo della password
    setcookie(
        'wp-postpass_'.COOKIEHASH,
        $hasher->HashPassword( wp_unslash( esc_attr( $post->post_password ) ) ),
        $expire,
        COOKIEPATH
    );
}
// Ora visualizza il contenuto:
the_content();
23 gen 2017 16:45:20
Commenti

Ciao, grazie per la risposta, ho questo errore: PHP Fatal error: Call to a member function HashPassword() on a non-object in /home/test-user/public_html/wp-content/themes/default/template-landing-private.php on line 81

JCF JCF
23 gen 2017 16:51:29

Potresti aver bisogno di aggiungere global $hasher; all'inizio. Altrimenti potresti postare l'intero file?

fergbrain fergbrain
23 gen 2017 16:56:52

/ Template Name: TEST /

if ( isset( $GET['code'] ) and 'mycustompassword' === $_GET['code'] and isset( $post->post_password ) and null !== 'wp-postpass'.COOKIEHASH //!isset( 'wp-postpass_'.COOKIEHASH ) ) { setcookie( 'wp-postpass_'.COOKIEHASH, $hasher->HashPassword( wp_unslash( esc_attr( $post->post_password ) ) ), $expire, COOKIEPATH ); }

get_header(); while ( have_posts() ) : the_post(); the_content(); endwhile; get_footer();

JCF JCF
23 gen 2017 17:10:29

Per favore pubblica il tuo codice tra backtick (`) in modo che sia formattato correttamente

fergbrain fergbrain
23 gen 2017 17:17:12

Ciao, scusa ho pubblicato una risposta qui sotto con il codice completo. Grazie!

JCF JCF
23 gen 2017 17:23:12
0

invece di usare the_content(), utilizza echo apply_filters( 'the_content', $post->post_content ); potrei sbagliarmi ma credo che questo bypassi completamente il modulo della password, poi puoi implementare la tua logica semplice per decidere se mostrare o meno il contenuto. In ogni caso però ti consiglio vivamente di non farlo se il contenuto è costituito da dati molto sensibili. ad esempio, spero che non si tratti di informazioni personali di qualcuno. Inoltre dovrai assicurarti che il post abbia una password in modo che non compaia nei risultati di ricerca, sitemap, feed o endpoint API JSON di WordPress.

11 feb 2018 06:26:07