Ir para conteúdo

POWERED BY:

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 violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
×

Informação importante

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