Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FernandoG

Solicitação de Login PHP em aquivo Javascript

Recommended Posts

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");
span.textContent = (res);}
else{
location.href="admin/";
}
}); 
}

Função PHP(jpLogin.php):

<?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;
}else
if($this->senha<>$senha){
return $this->senha;
}else
{
if($this->log && $this->log->rowCount()>0)
{
foreach($this->log as $this->dds)
{$_SESSION['logado']=$this->dds;}
}else{
return 'Acesso negado.';}
}
}
}

A questão é que o sistema cai no laço a baixo da classe login e não deve me retornar nada sendo assim o (res) do arquivo javascript não existiria e o else deveria ser acionado, mais não estou tendo sucesso nessa questão.

if($this->log && $this->log->rowCount()>0)
{
foreach($this->log as $this->dds)
{$_SESSION['logado']=$this->dds;}
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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");
span.textContent = (res);}
else{
location.href="admin/";
}
}); 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você der um alert no res.lenth, qual o valor exibido?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso em questão, você deve retornar qualquer coisa, pois o javascript espera um retorno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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){

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.