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 landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
×

Informação importante

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