Ir para conteúdo

Arquivado

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

Nicken

Login não conecta com postagens

Recommended Posts

Olá! Recentemente tive uma dúvida em relação ao meu banco de dados para com o php, criei atualmente duas tabelas diferentes tendo elas conectadas para criação e login de usuários(tbl_users) e a outra para postagens(pubs), mas quando faço minha postagem ele não envia para o banco de dados, alguém pode me ajudar?

Códigos a seguir:

PHP do Login
 

<?php
session_start();
require_once 'dbconnect.php';

if (isset($_SESSION['userSession'])!="") {
 header("Location: home.php");
 exit;
}

if (isset($_POST['btn-login'])) {
 
 $email = strip_tags($_POST['email']);
 $password = strip_tags($_POST['password']);
 
 $email = $DBcon->real_escape_string($email);
 $password = $DBcon->real_escape_string($password);
 
 $query = $DBcon->query("SELECT user_id, email, password FROM tbl_users WHERE email='$email'");
 $row=$query->fetch_array();
 
 $count = $query->num_rows; // if email/password are correct returns must be 1 row
 
 if (password_verify($password, $row['password']) && $count==1) {
  $_SESSION['userSession'] = $row['user_id'];
  setcookie("login",$email);
  header("Location: home.php");
 } else {
  $msg = "<div class='alert'>
     <span class='glyphicon glyphicon-info-sign'></span> &nbsp; Esse Usuário não Existe!
    </div>";
 }
 $DBcon->close();
}
?>
<!doctype html>
<html>
<head>
<title>Login :: Nicken</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="Sublime Contact Form Widget Responsive, Login form web template,Flat Pricing tables,Flat Drop downs  Sign up Web Templates, Flat Web Templates, Login signup Responsive web template, Smartphone Compatible web template, free webdesigns for Nokia, Samsung, LG, SonyEricsson, Motorola web design" />
<script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } </script>
<!-- fonts -->
<link href="//fonts.googleapis.com/css?family=Nunito:300,400,700" rel="stylesheet">
<link href="//fonts.googleapis.com/css?family=Muli:300,400" rel="stylesheet">
<!-- /fonts -->
<!-- css -->
<link href="_estilos/login.css" rel='stylesheet' type='text/css' media="all" />
<!-- /css -->
</head>
<body>
<div class="signin-form">

 <div class="container">
     
        
       <form class="form-signin" method="post" id="login-form">  
        <?php
  if(isset($msg)){
   echo $msg;
  }
  ?>
  <h1 class="agileits w3 wthree w3-agile w3-agileits agileinfo agile">Comunidade Nicken</h1>
  <div class="content-w3ls agileits w3 wthree w3-agile w3-agileits agileinfo agile">
      <h2>Faça Seu Login</h2>
        <form method="post" class="form-agileits">
        <input type="email" class="email" name="email" placeholder="ENDEREÇO DE E-MAIL" title="Por Favor, E-Mail Válido." required />
        <input type="password" class="form-control" placeholder="SUA SENHA" name="password" title="Por Favor, Senha Válida." required />
        <input type="submit" class="sign-in" name="btn-login"  value="Fazer Login">
        </form>            
        </div>  
                <p class="copyright agileits w3 wthree w3-agile w3-agileits agileinfo agile">Não Tem Cadastro? <a href="register.php">Faça Agora!</a></p>

        </body>
</html>

 

Php do sistema de postagens:

 

<?php
// Report all PHP errors
error_reporting(E_ALL);
  include("_corpo/header.php");

  if (isset($_POST['publish'])) {
    if ($_FILES["file"]["error"] > 0) {
      $texto = $_POST["texto"];
      $hoje = date("Y-m-d");

      if ($texto == "") {
        echo "<h3>Tens de escrever alguma coisa antes de publicar!</h3>";
      }else{
        $query = "INSERT INTO pubs (user,texto,data) VALUES ('$login_cookie','$texto','$hoje')";
        $data = mysqli_query($query) or die();
        if ($data) {
          header("Location: ./");
        }else{
          echo "Alguma coisa não correu lá muito bem... Tenta outra vez mais tarde";
        }
      }
    }else{
      $n = rand(0, 1000000);
      $img = $n.$_FILES["file"]["name"];

      move_uploaded_file($_FILES["file"]["tmp_name"], "upload/".$img);

      $texto = $_POST['texto'];
      $hoje = date("Y-m-d");

      if ($texto == "") {
        echo "<h3>Tens de escrever alguma coisa antes de publicar!</h3>";
      }else{
        $query = "INSERT INTO pubs (texto,imagem,data) VALUES ('$texto','$img','$hoje')";
        $data = mysqli_query($query) or die();
        if ($data) {
          header("Location: ./");
        }else{
          echo "Alguma coisa não correu lá muito bem... Tenta outra vez mais tarde";
        }
      }
    }
  }
  ?>
  <html><head><link href="_estilos/home.css" rel='stylesheet' type='text/css' media="all" />
</head>
  <header>
  </header>
  <body>
  <div id="publish">
    <form method="POST" enctype="multipart/form-data">
      <br />
      <textarea placeholder="Escreve uma publicacão nova" name="texto"></textarea>
      <label for="file-input">
        <img src="_imagens/imagegrey.png" title="Inserir uma fotografia" />
      </label>
      <input type="submit" value="Publicar" name="publish" />

      <input type="file" id="file-input" name="file" hidden />
    </form>
  </div>
</body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Citar

 

mas quando faço minha postagem ele não envia para o banco de dados, alguém pode me ajudar?

 

 

 

Eu quero te ajudar.

Eu vou te ajudar.

Mas você pra isso você precisa me/nós ajudar....

 

Erros estão habilitados? Se sim acontece alguma coisa o que?

 

Para habilitar os mesmos:

ini_set('display_errors', true);
error_reporting(E_ALL);

 

De um print_r/var_dump logo após o seu _POST, veja se está chegando algo...

...

if (isset($_POST['btn-login'])) {
var_dump($_POST);die();

...
  
  

 

 

 

Recomendo fortemente a leitura:

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

É a minha postagem no fórum e eu não conheço muito bem o sistema, me desculpe realmente.

Acrescentei tudo o que você pediu e apareceu o seguinte:

 

Citar

De um print_r/var_dump logo após o seu _POST, veja se está chegando algo...

 

array(3) { ["email"]=> string(27) "meu@mail.com" ["password"]=> string(9) "minhasenha" ["btn-login"]=> string(11) "Fazer Login" }

E quando fui fazer a postagem apareceu os seguintes erros:

 


Notice: Undefined variable: login_cookie in /var/www/Nicken/home.php on line 15

Warning: mysqli_query() expects at least 2 parameters, 1 given in /var/www/Nicken/home.php on line 16

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver uma parte do problema de conexão, era apenas mostrar duas variáveis para mysqli_query e conectar a página de login a página de postagens, fazendo o login_cookie funcionar, mas infelizmente agora quando tento postar o problema é outro:

Não aparece erro nenhum mas também não manda para o banco de dados, apenas para a pasta de upload.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem problemas @Nicken não leva pro pessoal não, só reforço as regras do forum para uma organização, fora q a leitura daquele post é realmente muito rica em detalhes..

 

 

Voltando ao post...

Notice: Undefined variable: login_cookie in /var/www/Nicken/home.php on line 15

 

 

... Ops pera ai...

Então eu tava digitando hehe. 
Tenta avaliar oq estava sendo enviado então pro banco...

Ex:
 

$query = "INSERT INTO pubs (texto,imagem,data) VALUES ('$texto','$img','$hoje')";
echo $query;die();
...

Pega a consulta e insere manualmente.
Veja se da algum erro.

(Isso em ambas Query de inserts (obviamente 1 de cada vez)



 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Citar


Pega a consulta e insere manualmente.
Veja se da algum erro.

(Isso em ambas Query de inserts (obviamente 1 de cada vez)
 


Coloquei em ambas e os resultados foram os seguintes:


UPLOAD:

 $query = "INSERT INTO pubs (texto,imagem,data) VALUES ('$texto','$img','$hoje')";
        echo $query;die();

 INSERT INTO pubs (texto,imagem,data) VALUES ('[Texto de Teste]','imagem.jpg','2017-03-21')

 

TEXTO NORMAL:
 

$query = "INSERT INTO pubs (user,texto,data) VALUES ('$login_cookie','$texto','$hoje')"; 
echo $query;die();

INSERT INTO pubs (user,texto,data) VALUES ('Usuário','[Texto de Teste]','2017-03-21')

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Insere os mesmo no Banco manualmente agora,

vai la abre o PhpMyAdmin, adminer.php ... enfim o cliente q tu tiver e veja se da algum erro ao executar essas querys

 


Falando em SQL..

Como está está a estrutura dessa sua tabela?

pubs 

 

da um DESC nela, veja se todos os tipos estão de acordo com oq você vai inserir.

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@gabrieldarezzo Muito obrigado mesmo pela ajuda, você me deu uma ótima base para procurar os meus erros através dos sites e dos códigos, sem dúvida uma grande ajuda.

Consegui resolver o erro de postagem de imagens, ali faltava $login_cookie então não identificava o usuário para a seguinte postagem.

 

Apenas um erro agora:

Não reconhece no sql o mesmo código sem imagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom, a ideia do forum é exatamente essa, ajudar você a trilhar o caminho e não percorrer o mesmo por você.

 

Recomendo fortemente que você estude a respeito de prepare/bind_param, eles diminuem e deixam o código mais claro evitando o uso desses carinhas aqui:

real_escape_string

 

Exemplo de um Select utilizando bind_param protegido de SQL INJECTION:

<?php

$db = new mysqli("localhost", "root", "", "imasters");
if ($db->connect_errno) {
    echo "Failed to connect to MySQL: (" . $db->connect_errno . ") " . $db->connect_error;
}

$nome = 'Gabriel Sousa Darezzo';

$stmt = $db->prepare("SELECT * FROM usuario where nome_completo = ?");

if($stmt === false) {
  trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->errno . ' ' . $conn->error, E_USER_ERROR);
}

//Bind parameters. Types: s = string, i = integer, d = double,  b = blob 
$stmt->bind_param('s', $nome);

if(!$stmt->execute()){
	die('ocorreu um erro');	
}
$res = $stmt->get_result();
$usuarios = $res->fetch_all(MYSQLI_ASSOC);

//Caso seja apenas uma linha, Por exemplo WHERE id = 3, pode usar o fetch_array() que evita um retorno de array de arrays()
//$usuarios = $res->fetch_array(MYSQLI_ASSOC);

var_dump($usuarios);

Outro exemplo que talvez possa te ajudar é de insert de arquivo:

https://github.com/gabrieldarezzo/comum/blob/master/upload_file.php

 

Bons estudos :smile:

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>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

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