Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, não sabia se postava no fórum PHP ou javascript pois na minha duvida estou manipulando ambos arquivos como a resposta vem de arquivos PHP talvez alguém aqui possa me ajudar.
A questão é que eu tenho uma condição em um arquivo javascript que recebe uma resposta de um arquivo PHP porem a condição do arquivo javacript nunca é atendida mesmo quando não existe retorno.
Função Java script:
Preciso que caso não exista o (res) ele execute a linha location.href="admin/"
function fctLogin(){
$.post("require/jp/jpLogin.php",
{
email:$('#eLogin').val(),
senha:$('#sLogin').val()
},function(res)
{
if (res){
alert(res);
var span = document.getElementById("myspan");location.href="admin/";
}
});
}<?php
require_once"../class/ConDB.class.php";
$lgn=new Login;
echo $lgn->setLogin($_POST['email'],$_POST['senha']);
Classe PHP Login:
<?php
class Login
{
private $vem,$vsh,$cpt,$crud,$email,$senha,$log,$dds;
public function setLogin($email,$senha)$this->vem=new ValidaEmail;
$this->vsh=new ValidaSenha;
$this->cpt=new Cripto;
$this->crud=new CRUD;
$this->email=$this->vem->setValidaEmail($email);
$this->senha=$this->vsh->setValidasenha($senha);
$this->log=$this->senha==$senha?
$this->crud->select('idUsuario','usuario','WHERE email=? && senha=?',
array($this->email, $this->cpt->setCripto($this->senha))):
FALSE;
if ($this->email<>$email)return $this->email;if($this->senha<>$senha){
return $this->senha;foreach($this->log as $this->dds)
{$_SESSION['logado']=$this->dds;}return 'Acesso negado.';}
}
}
}if($this->log && $this->log->rowCount()>0)
{
foreach($this->log as $this->dds)
{$_SESSION['logado']=$this->dds;}
}Infelizmente não deu certo, mais muito obrigado pela resposta.
function fctLogin(){
$.post("require/jp/jpLogin.php",
{
email:$('#eLogin').val(),
senha:$('#sLogin').val()
},function(res)
{
if (res.length > 0){
alert(res);
var span = document.getElementById("myspan");location.href="admin/";
}
});
}Se você der um alert no res.lenth, qual o valor exibido?
undefined
No caso em questão, você deve retornar qualquer coisa, pois o javascript espera um retorno.
Tentei retornar 0 ou 1, mais ele nunca passa das condições;
if($this->log && $this->log->rowCount()>0)
{
foreach($this->log as $this->dds)
{$_SESSION['logado']=$this->dds;
return 0;
}
if (res !== 0){O engraçado é que mesmo quando o sistema retorna uma erro, tipo "Email invalido" o res.lenth vem undefined mais o erro aparece no span.
res.lenth não existe. É 'length'
Tente usar um retorno mais conciso, como JSON. Pode ser configurado, dessa forma, tudo que vier diferente de um JSON acusará erro.
Na verdade o res.lenth está retornando 5, não sei de onde ele está tirando esses 5 caracteres. Inclusive nas mensagens de erro do tipo acesso negado ele acrescenta 5 caracteres. Mais eu resolvi com o teste de 5 if res.lenth > 5, sei que ficou feio mais é um sistema de simples cadastro para intranet. Em outro momento eu mudo o script de login. Obrigado a todos pela ajuda.
if (res.length > 0){