Verificare se si è loggati su un sito esterno

Avete due siti e uno dei due ha una sezione protetta? Volete sapere se l’utente è loggato al sito 1 e inviare i dati dell’utente al sito 2? Un modo c’è, e senza l’uso di complesse API!

Abbiamo due siti, il Sito1.it e il Sito2.com. Da Sito1.it possiamo accedere al nostro account tramite un semplice form (presupponiamo lo abbiate già) che creerà i vari cookie, sessioni o dati nel database che servono a Sito1.it per sapere se avete eseguito l’accesso.

In Sito2.com abbiamo la necessità di verificare che l’utente sia loggato su Sito1.it (si può anche recuperare l’id o l’immagine del profilo dell’utente, quello che si necessita insomma). Come fa Sito2.com a sapere che siamo collegati correttamente al primo? Con un piccolo barbatrucco.

Su Sito1.it creiamo la pagina ‘apiLogin.php’ (useremo questo nome per questa guida ma potete usare quello che preferite).

Al suo interno riceveremo l’url che Sito2.com ci invierà (spiego dopo) e le varie verifiche riguardo l’accesso valido dell’utente:

<?php

//Sito1.it

//Recuperiamo la url inviata dal Sito2.com
$url = $_GET['url'];

//Ammettiamo che usiamo un cookie per tenere aperta la sessione di login dell'utente
if(isset($_COOKIE['login']) && $_COOKIE['login']=='si'){

//se è loggato facciamo redirect nella url passata e aggiungiamo la variabile login settata a si
header('refresh:1;url='.$url.'?login=si);

}else{

//se non è loggato facciamo redirect nella url passata e aggiungiamo la variabile login settata a no
header('refresh:1;url='.$url.'?login=no);

//in questo caso sarebbe buona norma rimandare l'utente alla pagina di login e quando logga
//rimandarlo alla url passata come utente loggato

}

?>

Da questo punto in poi è semplice. Creiamo una pagina apposita su Sito2.com oppure una verifica semplice che controlla se è stato passato il valore LOGIN. Usiamo il secondo esempio, aggiungendo anche il link che non abbiamo inserito prima, ovvero quello per la verifica del login dell’utente su Sito1.it :


<?php
//

//su Sito2.com verifichiamo se l'utente è loggato verificando i valori get</pre>
if(isset($_GET['login'])){

echo "L'utente è loggato? ".$_GET['login'];

// Qui possiamo salvare un cookie con l'informazione per mantenere attiva la sessione anche su Sito2.com
}else{

//Questo sarà il link per la verifica dell'utente
echo 'Verifica se l'utente è collegato:
<a href="http://www.sito1.com/apiLogin.php?url='.urlencode("http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']).'">Verifica QUI</a>';

}

?>

Nel codice sopra verifichiamo che sia passata la variabile LOGIN. In caso positivo scriviamo l’esito, altrimenti mostriamo una scritta “Verifica se l’utente è collegato: Verifica QUI” dove Verifica QUI è collegato alla pagina “apiLogin.php” del Sito1.it che prenderà il nome della pagina che invia la richiesta e gli ritorna la risposta.

Tutto chiaro? Mi sembra semplice, se poi avete bisogno chiedete come sempre 🙂

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

w

Connessione a %s...