wp_signon restituisce l'utente, ma l'utente non è connesso

4 nov 2010, 12:38:08
Visualizzazioni: 25.8K
Voti: 8

Uso wp_signon() e restituisce un utente, non un errore. Tuttavia quando eseguo is_user_logged_in() restituisce false.

Un aiuto sarebbe molto apprezzato :)

0
Tutte le risposte alla domanda 5
3

get_currentuserinfo() non ha funzionato per me. Ho scritto riguardo a questo problema e la soluzione sul mio blog:

http://blog.rhysgoodwin.com/programming/wordpress-wp_signon-current_user-is-not-populated/

Saluti, Rhys

28 dic 2010 00:24:56
Commenti

Questo mi è stato davvero d'aiuto. Nel caso il blog vada perso, ha detto di usare wp_set_current_user() dopo wp_signon().

d79 d79
15 ott 2015 20:14:11

Ha funzionato per me, fratello.

User User
25 lug 2018 09:37:56

get_currentuserinfo() è ora deprecato, comunque wp_get_current_user() funziona per me.

mistertaylor mistertaylor
2 mar 2019 00:52:33
2

Dopo aver utilizzato wp_signon(), le informazioni dell'utente non vengono impostate, che è il modo in cui WordPress verifica la presenza di un utente in is_user_logged_in(). Dovrebbe bastare chiamare get_currentuserinfo() dopo wp_signon().

4 nov 2010 15:51:56
Commenti

È possibile replicare l'utente che ha effettuato l'accesso tramite il modulo di login. Vorrei che l'utente rimanesse connesso, come con un normale accesso.

User User
4 nov 2010 16:13:24

prova $creds = array(); $creds['user_login'] = $user_login; $creds['user_password'] = $user_pass; $creds['remember'] = true; $user = wp_signon( $creds, false ); per ricordare l'utente

Philip Seyfi Philip Seyfi
17 nov 2011 21:49:58
0

Ho avuto lo stesso problema. Ecco lo snippet completo funzionante che ha risolto il problema:

    if( isset($_POST['log']) && isset($_POST['pwd']) ):
      $creds = array( 'user_login' =>  $_POST['log'], 'user_password' => $_POST['pwd'], 'remember' => $_POST['rememberme'] );
      $user = wp_signon( $creds, false );
      if ( is_wp_error($user) ): echo $user->get_error_message(); endif;
      wp_set_current_user($user->ID);
      return $user;
    endif;

Anche wp_logout() ha lo stesso problema. Ecco come farlo funzionare anche in questo caso:

wp_logout();  
wp_set_current_user(0);
24 mag 2013 17:16:56
1
 //la funzione wp_signon è ancora in fase di sviluppo, se apri i file core di WordPress
 //troverai questo commento

 // TODO dovremmo deprecare l'azione wp_authentication?

 //ho trovato una soluzione
 function login_after_register($userlogin,$userpass){
$credentials = array( 'user_login' =>  $userlogin, 'user_password' => $userpass, 'remember' => true );

$secure_cookie = is_ssl();

$secure_cookie = apply_filters('secure_signon_cookie', $secure_cookie, $credentials);
add_filter('authenticate', 'wp_authenticate_cookie', 30, 3);

$user = wp_authenticate($credentials['user_login'], $credentials['user_password']);
wp_set_auth_cookie($user->ID, $credentials["remember"], $secure_cookie);
do_action('wp_login', $user->user_login, $user);
 }
 //poi dovresti chiamarla in questo modo
 //prima di get_header() o di qualsiasi html
 login_after_register($_POST['r_user_name'],$_POST['r_password']);
27 mag 2013 00:35:47
Commenti

Se questo dovrebbe essere una risposta, necessita di qualche spiegazione. Per favore, aggiorna la tua risposta.

fuxia fuxia
27 mag 2013 00:41:32
0

Basta impostare il secondo parametro su true. Impostarlo su false impedirà a wp_signon() di impostare il cookie sicuro, essenziale per accedere a wp-admin.

$user = wp_signon( $credentials, true );
14 giu 2021 13:30:23