segunda-feira, 16 de janeiro de 2012
integração de login moodle e wordpress
Neste post mostro como consegui logar simultaneamente no moodle e no wordpress.
as base de dados não estão interligadas, ainda nao consegui chegar nessa parte, os usuarios tem que estar presente nas duas databases, com login e senhas iguais.
é meio amador mas da pra quebrar o galho ate conseguir interligar os dois de uma maneira melhor...
segue codigo php abaixo
<?php
//acessando a Base de dados pelo wp-config
include_once("../wp-config.php");
/*
includes para classes da validação no wordpress com o class-phpass.php
*/
include_once("../wp-includes/class-phpass.php");
include_once("../wp-includes/pluggable.php");
if(!$_POST)
{
//crio o formulario
?>
<form method="post" action="" name="login">
<div id='content_login'>
<h1>Login</h1>
<table>
<tr>
<td>Username</td>
<td><input type="text" name="username" value="" /></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password" value="" /></td>
</tr>
<tr>
<td><input type="submit" name="login" value="Login" /></td>
</tr>
</table>
</div>
</form>
<?php
}
else {
//recebo as variaveis do formulario pelo metodo post ao clicar em login
$username = mysql_escape_string($_POST['username']);
$password = mysql_escape_string($_POST['password']);
// seleciono os dados da tabela de usuarios no meu caso é wp-users, mas dependendo da instalação isso pode mudar
// esse é o motivo de usar a variavel $table_prefix que vem do wp-config
$query = mysql_query("SELECT * FROM ".$table_prefix."users WHERE user_login = '$username'");
//executo a query
$row = mysql_fetch_array($query);
//crio o novo objeto $wp_hasher
$wp_hasher = new PasswordHash(8, TRUE);
//puxo os dados da tabela com a codificaçao propria do wordpress
$password_hashed = $row['user_pass'];
//puxo o id do usuario
$user_id = $row['ID'];
/*
abaixo vou checar se o password é igual em md5 ou na classe PasswordHash
*/
if($wp_hasher->CheckPassword($password, $password_hashed)
|| $password_hashed == md5($password)) {
//se der tudo certo nas verificações acima inicio a sessao colocando o logged_in
$_SESSION["logged_in"] = true;
//gravo os cookies de autenticaçao
wp_set_auth_cookie( $user_id, $remember = true, $secure ='' );
//mensagem dizendo que deu tudo certo
echo 'Login ok';
//daqui para baixo ainda ta em teste para logar simultaneo no moodle.
//te me dando alguns problemas pra integrar esses dois....
?>
<html>
<head>
<script type="text/javascript">
//função de envio de formulario com JS
//com direcionamento apos o envio da função
function submitform()
{
document.forms["moodle"].submit();
//aqui vc coloca a url do seu site
location.href="http://site.com.br";
}
</script>
</head>
<!-- aqui na tagbody eu digo que quando a pagina carregar ela vai rodar a função js de envio dos dados do formulario -->
<body onload="submitform();">
<!-- vc tem que localizar onde esta a pasta login dentro do diretorio onde o moodle esta instalado -->
<form name="moodle" action="../uni/login/index.php" method="post">
<input type="hidden" name="username" value="<?php echo $username; ?>"/>
<input type="hidden" name="password" value="<?php echo $password; ?>"/>
</form>
</body>
</html>
<?php
//caso de tudo certo daqui para baixo nao aparece, caso contrario o formulario aparece novamentte para uma nova tentativa de login
}
else {
?>
<form method="post" action="">
<div id='content_login'>
<h1 class='red'>Dados do usuario/password incorretos</h1>
<table>
<tr>
<td>Username</td>
<td><input type="text" name="username" value="" /></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password" value="" /></td>
</tr>
<tr>
<td><input type="submit" name="login" value="Login" /></td>
</tr>
</table>
</div>
</form>
<?php
}
}
?>
Assinar:
Postar comentários (Atom)
e só isso garante a interligação do moodle ao wordpress?
ResponderExcluirna real vc só ta fazendo login simultaneo,
ResponderExcluiro login e senha do usuario tem q estar presente nas duas bases de dados ainda nao integrei as duas bases