Ir para conteúdo
Rasp

mysqli statement + select view

Recommended Posts

Prezados,

 

Fiz em ambiente local (xampp) uma tela de login simples e está funcionando perfeitamente, sem apresentar qualquer erro, porém, ao subir para meu servidor web (ambos rodam PHP 7.1), o sistema de login não funciona, só gera a mensagem de erro de login e senha. Após verificar os possíveis erros, identifiquei que a consulta SQL não está funcionando, porém, no PHPmyAdmin funciona normalmente (no servidor web), estou usando uma view, mas não encontrei nada que tivesse o mesmo problema que estou passando.

 

Segue código:

 

if($sql = $mysqli->prepare("SELECT * FROM `vw_login` WHERE `login` = ? LIMIT 1")) {
	$sql->bind_param("s", $frmlogin);
	$sql->execute();
	$sql->bind_result($id, $nome, $hash);

	if($sql->fetch() AND Bcrypt::check($frmsenha, $hash)) {
		...
		header('Location: /');
	} else {
		session_destroy();
		$retorno = "Login ou senha incorretos.";
	}

	$sql->close();
}

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 22/05/2018 at 10:52, Rasp disse:

Prezados,

 

Fiz em ambiente local (xampp) uma tela de login simples e está funcionando perfeitamente, sem apresentar qualquer erro, porém, ao subir para meu servidor web (ambos rodam PHP 7.1), o sistema de login não funciona, só gera a mensagem de erro de login e senha. Após verificar os possíveis erros, identifiquei que a consulta SQL não está funcionando, porém, no PHPmyAdmin funciona normalmente (no servidor web), estou usando uma view, mas não encontrei nada que tivesse o mesmo problema que estou passando.

 

Segue código:

 


if($sql = $mysqli->prepare("SELECT * FROM `vw_login` WHERE `login` = ? LIMIT 1")) {
	$sql->bind_param("s", $frmlogin);
	$sql->execute();
	$sql->bind_result($id, $nome, $hash);

	if($sql->fetch() AND Bcrypt::check($frmsenha, $hash)) {
		...
		header('Location: /');
	} else {
		session_destroy();
		$retorno = "Login ou senha incorretos.";
	}

	$sql->close();
}

Obrigado!

 

vw é uma view? se sim você colocou ela em seu servidor para efetuar a busca?

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, igu disse:

 

vw é uma view? se sim você colocou ela em seu servidor para efetuar a busca?

 

Sim, como eu disse, migrei do xampp local para um servidor web, dentro do PHPMyAdmin ela roda perfeitamente, mas o statements mysqli do php não executa, porém, no xampp roda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque não tenta usar PDO?

Caso não conheça veja isso: https://forum.imasters.com.br/topic/565800-crud-introdução-a-pdo/

 

$sql = $obj_de_conexao->prepare("SELECT * FROM vw_login WHERE login = :datalogin");
$sql->execute([':datalogin' => $frmsenha);
if ($sql->rowCount()) {
    echo "Existe";
} else {
    echo "Não existe";
}
  • Está usando encriptação de senha? Pesquise pelo login ou mail se existirem traga os dados do usuário, e depois compare a senha. Porque se pesquisar do seu jeito, como vai logar um usuário se pode existir mais de uma senha igual no banco?

 

  • Gostei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então @Omar~

 

Tudo já está desenvolvido para mysqli, não queria ter de misturar ou refazer tudo antes de ao menos conseguir entender se isso é um problema da biblioteca mysqli ou algum erro meu. Com relação ao meu login, ele funciona exatamente do jeito que você mencionou!  Eu só comparo a senha através da classe Bcrypt após ter retorno. Com relação a senha, utlizando Bcrypt nunca terá uma senha igual, pois é incluído um salt ao gerar o hash (https://secure.php.net/manual/pt_BR/function.crypt.php)

 

Obrigado por ter respondido! Estou sendo obrigado a colocar "UP" diariamente para ver se alguém pode me ajudar, ao invés disso, tem alguém que não tem conhecimento pelo jeito e vem negativar o comentário. Brasileiros...

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 27/05/2018 at 12:47, Rasp disse:

Então @Omar~

 

Tudo já está desenvolvido para mysqli, não queria ter de misturar ou refazer tudo antes de ao menos conseguir entender se isso é um problema da biblioteca mysqli ou algum erro meu. Com relação ao meu login, ele funciona exatamente do jeito que você mencionou!  Eu só comparo a senha através da classe Bcrypt após ter retorno. Com relação a senha, utlizando Bcrypt nunca terá uma senha igual, pois é incluído um salt ao gerar o hash (https://secure.php.net/manual/pt_BR/function.crypt.php)

 

Obrigado por ter respondido! Estou sendo obrigado a colocar "UP" diariamente para ver se alguém pode me ajudar, ao invés disso, tem alguém que não tem conhecimento pelo jeito e vem negativar o comentário. Brasileiros...

 

Abraço!

 

Olá tudo bem? Conseguiu descobrir o erro?? Estou com o mesmo problema. Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por rd111072
      Olá, moçada!

      Tenho esse gráfico aqui: http://riocir.com.br/renan/chart_barg_g2.php 
      Mas ele exibe só os dias da semana do mês 1. Queria que ele exibisse todos os dias de todos os meses (como é o resultado do echo).

      Segue o código. Alguém pode me ajudar?
       
       
    • Por capaldi
      <?php
      if(isset($_GET['deletar']) && $_GET['deletar'] == 'sim'):
          $id_produto = (int)$_GET['produto'];
          $pegar_dados_produto = BD::conn()->prepare("SELECT img_padrao FROM loja_produtos WHERE id = ?");
          $pegar_dados_produto->execute(array($idProduto));
          $dadosProd = $pegar_dados_produto->fetchObject();
          
          $verificar_imagens = BD::conn()->prepare("SELECT * FROM loja_imgprod WHERE id_produto = ?");
          $verificar_imagens->execute(Array($idProduto));
          
          if($verificar_imagens->rowCount() == 0){
              if(unlink('../../produtos/'.$dadosProd->img_padrao)){
                  $deletar_produto =BD::conn()->prepare("DELETE FROM loja_produtos WHERE id = ?");
                  if($deletar_produto->execute(array($IdProduto))){
                      echo'<script>alert("Produto excluido com sucesso!");location.href"index.php?pagina=editarProdutos</script>';    
                  }
                  
              }
              
          }else{
              while($dadosImagenm = $verificar_imagens->fetchObject()){
                  unlink('../../produtos/'.$dadosImagem->img);
              }
              if(unlik('../../produtos/'.$dadosProd->img_padrao)){
                  $deletar_produto = BD::conn()->prepare("DELETE FROM loja_produtos WHERE id = ?");
                  if($deletar_produto->execute(array($idproduto))){
                      echo'<script>alert("Produto excluido com sucesso!");location.href"index.php?pagina=editarProdutos</script>';
                  }
              }
          }
      endif;
      ?>
       
      Ola, estou tabalhando com esse script, e não consigo resolver esse problema alguém pose me ajudar?
    • Por mateumt15
      Estou com o trecho de codigo abaixo, mas quando tento mostrai isto em uma tabela ele sempre pula a primeira linha do banco. 
      <?php $servername = "127.0.0.1";
              $username = "root";
              $password = "12345678";
              $dbname = "mydb";
              $conn = new mysqli($servername, $username, $password, $dbname);
              $sql = ("select id_link,link,data_inicio,data_fim,acao,dominio from link");
              $result = $conn->query($sql);
              $row = $result->fetch_assoc();
             
              while ($row = $result->fetch_assoc()):
                  echo "<tr>";
                  echo"<td>";echo $row['id_link'];echo "</td>";
                  echo"<td>";echo $row['link'];echo "</td>";
                  echo"<td>";echo $row['data_inicio'];echo "</td>";
                  echo"<td>";echo $row['data_fim'];echo "</td>";
                  if($row['acao']==='0')
                  {
                      echo"<td>";echo 'Bloqueado';echo "</td>";
                  }
                  if($row['acao']==='1')
                  {
                      echo"<td>";echo 'Permitido';echo "</td>";
                  }
                  if($row['dominio']==='0')
                  {
                      echo"<td>";echo 'URL';echo "</td>";
                  }
                  if($row['dominio']==='1')
                  {
                      echo"<td>";echo 'Dominio';echo "</td>";
                  }
              endwhile;
              $conn->close();
      ?>
    • Por patriciahelena
      Boa noite,
       
      Preciso de ajuda.
      No arquivo form.php tenho 3 inputs de entrada(valor1, valor2, valor3) e 3 inputs(disabled) que receberão os valores calculados do arquivo form_matematico5.php.
      Na tag form onsubmit="return calcula()"
       
          <h4 class="calcula"></h4>
       
      <script>
      function calcula($volmedio, $temp, $precogas) {
      $.get("form_matematico5.php", $('#calculorecovap').serialize(),
          function(data){
              $('.calcula').html(data);
          }
      );
      return false;
      }
      </script>
       
       
      No arquivo form_matecatico5.php é feito os calculos gerando 3 valores. 
      Tenho um echo:
      echo 'texto<br><div style=font-size:23px;color:red;>' . number_format($Resultado1,0,",","."). '</div> <br> texto<br><div style=font-size:23px;color:red;>'. number_format($Resultado2,0,",","."). '</div> <br>texto<br><div style=font-size:23px;color:red;>R$ '. number_format($Resultado3,2,",","."). '</div>';
       
      Ele retorna o echo certinho em     <h4 class="calcula"></h4>.
      Mas o que eu quero mesmo é que Resultado1 retorne dentro do primeiro input(disabled), o Resultado2 dento do segundo input(disabled) e assim com o terceiro. Ou seja,
      Cada input(disabled), recebera um valor diferente e não o total de .calcula.
       
      Espero ter explicado direitinho,
      Obrigada
       
       
       
       
       
       
       
    • Por luisfeliperm2
      Estou criando um sistema de login e cadastro de um jogo em php. Conectei ao postgresql e agora estou com um problema. Preciso saber qual criptografia é utilizada. Todas as hashs possuem 32 caracteres e por isso pensei que fosse MD5. Mas não é.
      password - > 62f9f2022536274b47f4daa0887361cf
      teste1 -> deaafc806aef00d0262e098ff089fff1
      Outras senhas criptografadas:
      59a93faaaf6d43ca4c3ef9ec183200ea
      47d163c4e9388dfd4b2dc7c327a33761
      8dffc56f2382d0f5552c04d9fa014d0e
×

Informação importante

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