-1
Eu tenho um sistema de login com Ajax+PHP com as linguagens rodando em servidores diferentes. No mesmo servidor funciona perfeitamente, mas nesse modo, a requisição ocorre mas a session não é declarada (eu preciso que ela seja declarada apenas no servidor remoto, não preciso passar ela para o servidor local, apenas das páginas geradas pelo próprio servidor remoto com base nas sessions). O Cors está autorizado pela Header Set Access-Control-Allow-Origin "*"
(em caráter de teste) e creio que esteja funcionando pois quando a senha é incorreta, por exemplo, ela retorna o que deveria, mas não declara a session.
Código da requisição para o servidor
<script>
$('document').ready(function(){
$("#btn-login").click(function(){
var data = $("#login-form").serialize();
$.ajax({
type : 'POST',
url : 'urldoservidorremoto/login.php',
data : data,
success : function(response){
if(response == "1"){
$("#btn-login").html('Entrar');
$("#login-alert").css('display', 'none');
window.location.href = "login-confirma.html";
}
else{
$("#btn-login").html('Entrar');
$("#login-alert").css('display', 'block')
$("#mensagem").html('Email ou senha incorretos. Tente novamente!');
}
}
});
});
});
</script>
Código do php - Executado remotamente
<?php
include 'db.php';
$email = $_POST["email"];
$senha = sha1($_POST["senha"]);
//$verifica_user = mysql_query("SELECT * FROM usuarios WHERE usuario = '$usuario'");
$verifica_user = mysqli_query($mysqli, "SELECT * FROM usuarios WHERE email = '$email' and senha = '$senha' ");
$row = mysqli_num_rows($verifica_user);
if($row <= 0){
session_start();
unset($_SESSION['usuario']);
unset($_SESSION['senha']);
$retorno = '0';
}
else{
while($row = $verifica_user->fetch_assoc()) {
session_start();
$_SESSION['email'] = $email;
$_SESSION['nome'] = $row["nome"];
$_SESSION['sobrenome'] = $row["sobrenome"];
$_SESSION['nascimento'] = $row["nascimento"];
$retorno = '1';
}
$_SESSION['sair'] = 'Sair';
}
echo $retorno;
?>
Eu também fiz um login.js executado remotamente para verificar se a pessoa está logada, esse login.js roda remotamente, eu liberei que ele seja gerado por php no mysql.
<?php
session_start();
include 'db.php';
if(isset($_SESSION['email'])){
$email = $_SESSION['email'];
$verifica_user = mysqli_query($mysqli, "SELECT * FROM usuarios WHERE email = '$email'");
$row = mysqli_num_rows($verifica_user);
while($row = $verifica_user->fetch_assoc()) {
$ativado = $row["contaativa"];
$endereco = $row["endereco"];
if($ativado==0){
echo "var contaativa = 'inativo'; \n ";
echo "var endereco = 'ativo'; \n ";
echo "var logado = 'ativo'";
}elseif($endereco==0){
echo "var endereco = 'inativo'; \n ";
echo "var contaativa = 'ativo'; \n ";
echo "var logado = 'ativo'";
}else{
echo "var endereco = 'ativo'; \n ";
echo "var contaativa = 'ativo'; \n ";
echo "var logado = 'ativo'";
}
}
}else{
echo "var logado = 'inativo'";
}
?>
Essa é a parte que verifica localmente
<script type="text/javascript" src="urldoservidoremoto/js/login.js"></script>
<script>
if(logado == 'inativo'){
window.location.href = 'login.html';
}
else if(contaativa == 'inativo'){
window.location.href = 'ativarconta.html';
}else if(endereco == 'inativo'){
window.location.href = 'configuraendereco.html';
}
</script>
Existe alguma forma de liberar da session funcionar no servidor e os retornos do ajax sejam gerados de acordo com ela? Só reiterando: No servidor local, tudo funciona normalmente.