2012-04-06 1 views
10

Esiste un modo per registrare un utente di Wordpress solo con il proprio ID utente wp?Come accedere a un utente in Wordpress utilizzando solo user_id

Sto inviando email agli utenti per confermare qualcosa e quando fanno clic sul link indicato per accedere al sito web devono essere registrati per vedere la pagina in cui li sto portando, quindi devo registrare l'utente in e quindi eseguire un reindirizzamento dell'intestazione.

Ho bisogno di una funzione php fornito da WordPress, uno che posso utilizzare in php, potrebbe anche darmi alcun dettaglio in più su come posso implementarlo (se presente)

+0

ok, sono un wordpress noob, ma la mia sicurezza non è così male. per coloro che pensano che sarà facile sfondare, questo è il link che sto generando; http: //testsite.dom/index.php? page_name = confirm-registration & key = U3VuZGF5IDggQXByIDE1OjQ1OjQ2OjEzMg, per di più: ogni link è unico e una volta cliccato un link e l'utente ha effettuato l'accesso, la chiave scade, quindi ... – pythonian29033

+0

Bene, hai appena risposto alla tua domanda :-). Cheers –

+0

Stavo chiedendo il codice/funzione php per registrare un utente usando il loro id, non come avrei dovuto passare una variabile attraverso l'url, ecco perché la tua risposta non aiuta il problema. – pythonian29033

risposta

33

Ecco una funzione per l'auto-registrare un utente (non testato):

function auto_login() { 
    if (!is_user_logged_in()) { 
     //determine WordPress user account to impersonate 
     $user_login = 'guest'; 

     //get user's ID 
     $user = get_userdatabylogin($user_login); 
     $user_id = $user->ID; 

     //login 
     wp_set_current_user($user_id, $user_login); 
     wp_set_auth_cookie($user_id); 
     do_action('wp_login', $user_login); 
    } 
} 
+1

NICE!meno reputazione, miglior risposta, peccato che non abbia abbastanza rappresentanti per votare la tua risposta, lo proverò ora. Grazie amico, non sapevo dell'accesso ospite, ma grazie BlueRat. tornati presto! – pythonian29033

+2

È un piacere :) – BlueRat

+0

okay, lo accetto come risposta in base al grado in cui è pertinente alla mia domanda, avevo già utilizzato con successo le altre alternative (memorizzando una chiave di accesso univoca in una tabella separata usando wp_user "ID" come chiave esterna, con il mio hash della password effettiva, che decritto una volta che ho verificato la chiave di accesso, ho quindi impostato un campo booleano nella tabella chiamata 'key_expired' su 1 in modo che la chiave non possa essere utilizzata di nuovo) ma non c'è modo noto per registrare un utente in wordpress usando solo il proprio ID utente senza entrare in wordpress e cambiando il suo core – pythonian29033

-1

Questo è un brutto ideea. Considerate questo: Si invia una mail a utente A e B, che contiene il seguente link:

http://wordpressblog.exp/fromemail?user_id=A; 
http://wordpressblog.exp/fromemail?user_id=B; 

Se l'utente B sostituisce il suo ID utente con user_id di A quindi ha accesso a account utente di un. Youd essere migliore di costruire un hash per l'accesso di un utente in questo modo

+0

Ciao Vlad, ya, l'idea era di dare loro una chiave univoca con la quale determinerei il loro id utente wp, in realtà mi chiedevo se esistesse un metodo predefinito wp per fare questa operazione ... – pythonian29033

+4

-1 perché questo non risponde alla domanda –

2

Crea tabella separata per memorizzare tutti i link che hai inviato e rispettivo codice di autenticazione temporanea, che può essere valido solo per qualche tempo, quindi passare il codice di autenticazione temporanea e l'email come parametro url -

Scrivere un codice per convalidare l'utente in base al codice di autenticazione temporanea, in modo che non appena l'utente fa clic su email puoi reindirarlo.

+0

grazie Sandeep, già facendo questo, serve solo il metodo wordpress per registrare l'utente in – pythonian29033

3

È necessario passare 2 parametri nel hook wp_login. Vedi Wp codex

wp_set_current_user($user_id, $user->user_login); 
wp_set_auth_cookie($user_id); 
do_action('wp_login', $user->user_login, $user); 
+1

Io vengo dall'Ucraina ... se è importante per te – Vadym

+0

lmfu, mi spiace. Sono ignorante della differenza (_ ,,) ... ma questo spiega la mia delusione nella tua risposta quindi lol :-P – pythonian29033