Ir para conteúdo

Arquivado

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

WBS DIGITAL

Não cadastra no Banco de dados (PDO)

Recommended Posts

Estou tentando fazer o formulario de cadastro cadastrar o banco de dados, mas está dando erro:

 

Index.php

<?php
session_start();
require_once "classes/conexao.php";
require_once "classes/login.php";
if(isset($_POST['ok'])):
$login = filter_input(INPUT_POST, "login", FILTER_SANITIZE_MAGIC_QUOTES);
$senha = filter_input(INPUT_POST, "senha", FILTER_SANITIZE_MAGIC_QUOTES);

$l = new login;
$l->setLogin($login);
$l->setSenha($senha);

if($l->logar()):
header("Location: plataforma.php");

else:   
$erro = "<script type='text/javascript'> alert('Erro ao logar, tente novamente.');</script>";
endif;
endif;
?>
<!DOCTYPE html>
<html lang="pt-br">
    <head>
        <title>Pro IG - Sistema de gerenciamento e controle de Indio Gigante</title>
        <meta charset="UTF-8">
        <link rel="stylesheet" type="text/css" href="css/estilo.css"/>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">

    </head>

    <body>


        <div id="wrapper">
            <div id="acesso">
                <div id="login">
                    <div id="logoInicial"><img src="img/logo.png"/></div>
                    <h1 class="tituloTxt">Acessar Plataforma</h1>

                    
                    <form action="" method="POST" enctype="multipart/form-data" id="form_login">
                        <input type="text" name="login" id="input_login" class="inputInicial"/>
                        <input type="password" name="senha" id="input_senha" class="inputInicial2"/>
                        <input type="submit" value="Entrar" class="btnInicial"/>
                        <input type="hidden" name="ok" id="bt_logar" value="logar" />
                    </form>
                <?php
echo isset($erro) ? $erro: '';
?>     
                </div>

                <div id="formulario">
                    <div id="topoCadastro">
                        <h2>CADASTRE SUA EMPRESA!</h2>
                        <h3>Não vendemos anuncios, oferecemos soluções!</h3>
                    </div>
                    <form action="classes/usuario.php" method="post" enctype="multipart/form-data">
                        <input type="text" name="nome" id="nome" class="inputFormulario" placeholder="Seu nome"/>
                        <input type="text" name="empresa" id="empresa" class="inputFormulario2" placeholder="Sua empresa"/>
                        <input type="text" name="email" id="email" class="inputFormulario3" placeholder="email"/>
                        <input type="text" name="usuario" id="usuario" class="inputFormulario3" placeholder="login"/>  
                        <input type="text" name="senha" id="senha" class="inputFormulario3" placeholder="senha"/> 
                        <input type="submit" value="cadastrar" name="cadastrar" class="btnFormulario"/>
                    </form>
                    <div id="termo">
                        Ao clicar em cadastrar você está ciente de todos os <a href="#">termos</a> do site.
                    </div>
                </div>
            </div>
        </div>

        <div id="rodape">
            MidiaCloud © 2016 
        </div>

    </body>
</html>

classe conexao.php

<?php
abstract class conexao{
	const USER = "midiacloud";
	const PASS = "padrao2016@";

	private static $instance = null;
	private static function conectar(){

try{
	if (self::$instance == null):
		$dsn = "mysql:host=localhost;dbname=midiacloud";
self::$instance = new PDO($dsn, self::USER, self::PASS);
self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
endif;
}catch (PDOException $e){
	echo "Erro: " . $e->getMessage();
}
return self::$instance;
}
protected static function getDB(){
return self::conectar();
}
}

classe usuario.php

<?php
include("../classes/conexao.php");
 
$nome = $_POST['nome'];
$empresa = $_POST['empresa'];
$email = $_POST['email'];
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
 
$cadastro = $dsn->prepare('INSERT INTO usuarios(nome,empresa,email,usuario,senha) VALUES(:nome,:empresa,:email,:usuario,:senha)');
$cadastro->bindParam(':nome',$nome);
$cadastro->bindParam(':empresa',$empresa);
$cadastro->bindParam(':email',$email);
$cadastro->bindParam(':usuario',$usuario);
$cadastro->bindParam(':senha',$senha);
$result = $cadastro->execute();
 
if ( ! $result )
{
    var_dump( $cadastro->errorInfo() );
    exit;
}
else {echo "Cadastrado com sucesso";}
 
 
?>

erro que ta retornando:

Notice: Undefined variable: dsn in C:\wamp\www\midiacloud\classes\usuario.php on line 10



Fatal error: Call to a member function prepare() on a non-object in C:\wamp\www\midiacloud\classes\usuario.php on line 10

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes do "$cadastro = $dsn->prepare('INSERT INTO usuarios(nome,empresa,email,usuario,senha) VALUES(:nome,:empresa,:email,:usuario,:senha)');", coloque:

$dsn = conexao::getDB();

Compartilhar este post


Link para o post
Compartilhar em outros sites

se for chamar... getDB ela não pode ser protected

protected static function getDB(){

e sim public

public static function getDB(){

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com a ajuda suas deu certo, muito obrigado amigos!!!

 

 

Só uma observação: o fato de ser public não torna meu sistema mais vulnerável?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só uma observação: o fato de ser public não torna meu sistema mais vulnerável?

 

Não, significa que a função pode ser acessada por qualquer outra classe do seu sistema. Apenas isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Não, significa que a função pode ser acessada por qualquer outra classe do seu sistema. Apenas isso.

Muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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