Jump to content
Fórum Script Brasil

Search the Community

Showing results for tags 'pdo'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Programação & Desenvolvimento
    • ASP
    • PHP
    • .NET
    • Java
    • C, C++
    • Delphi, Kylix
    • Lógica de Programação
    • Mobile
    • Visual Basic
    • Outras Linguagens de Programação
  • WEB
    • HTML, XHTML, CSS
    • Ajax, JavaScript, XML, DOM
    • Editores
  • Arte & Design
    • Corel Draw
    • Fireworks
    • Flash & ActionScript
    • Photoshop
    • Outros Programas de Arte e Design
  • Sistemas Operacionais
    • Microsoft Windows
    • GNU/Linux
    • Outros Sistemas Operacionais
  • Softwares, Hardwares e Redes
    • Microsoft Office
    • Softwares Livres
    • Outros Softwares
    • Hardware
    • Redes
  • Banco de Dados
    • Access
    • MySQL
    • PostgreSQL
    • SQL Server
    • Demais Bancos
  • Segurança e Malwares
    • Segurança
    • Remoção De Malwares
  • Empregos
    • Vagas Efetivas
    • Vagas para Estágios
    • Oportunidades para Freelances
  • Negócios & Oportunidades
    • Classificados & Serviços
    • Eventos
  • Geral
    • Avaliações de Trabalhos
    • Links
    • Outros Assuntos
    • Entretenimento
  • Script Brasil
    • Novidades e Anúncios Script Brasil
    • Mercado Livre / Mercado Sócios
    • Sugestões e Críticas
    • Apresentações

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

Found 43 results

  1. Venho a baixo depois de muitas pesquisas nos foruns, etc. juntando um script aqui outro ali, e fui montando o sistema que esta funcionando 100%, mas gostaria da ajuda dos senhores mais experientes com a melhoria do mesmo sendo assim decidi postar ele completo pra voces. para ver funcionando e testar.. USANDO PHP 7 e PDO e mysqli... obs. tem um sistema de login tb. pra proteger um pouco de curiosos.. Ola.. baixei a versao online limpei o banco de dados, e modifiquei os arquivos de conexao pra conexao local. usando o Xamp crie o banco de dados polo, carregue o arquivo polo.sql que ele vai criar as tabelas login: [email protected] senha: 123 qualquer alteração que fizer por favor poste aqui pra galera ok. novo link de download.. https://drive.google.com/drive/folders/1b4eWmDi1bw5YxUuQnEvIZqqOsj9Zbmvp?usp=sharing
  2. Olá, estou com uma dúvida já faz alguns dias e não conseguir resolver. Tenho Minhas URLamigável, e uma delas é para exibir o perfil dos usuário, mesmo que não esteja logado, outras pessoas conseguem acessar seu perfil igual o forum aqui! Exemplo Apenas quem está logado consegue acessar o /perfil/ www.meu-site.com.br/perfil/ Mesmo que não esteja logado consegue acessar o link abaixo e quem está logado também consiga acessar! www.meu-site.com.br/perfil/NickDoUsuario index.php <?php $url = (isset($_GET['url'])) ? $_GET['url'] : 'home'; $explode = array_filter(explode("/", $url)); $pags = 'pags/'; $verific_user = $pdo->prepare("SELECT * FROM users WHERE nickname_user = :nickname"); $verific_user->bindValue('nickname', $explode[0]); $verific_user->execute(); $perfil = false; if($verific_user->rowCount() == 1){ $perfil = true; $dados_perfil = $verific_user->fetchObject(); include_once "pags/perfil.php"; }elseif(file_exists($pags.$explode[0].'.php') && $explode[0] != 'perfil'){ include ($pags.$explode[0].'.php'); }else{ echo "<h2>Página Não encontrado!<h2>"; } ?> Na pasta 'pags' tenho o arquivo perfil.php, que vai exibi os dados do perfil que está logado! A forma (index.php) acima ela consegue fazer isso www.meu-site.com.br/NickDoUsuario Porém como faço para poder Exibi os resultados como mostrado acima? perfil.php <div class="perfil-container"> <div class="profile-perfil"> <div class="profile-user" style="background-image: url('https://images2.alphacoders.com/707/thumb-1920-707145.png') ;background-size: cover;"> <div class="perfil-content"> <div class="perfil-background"> <div class="perfil-photo"> <img src="images/profile-images/profile.jpg"> </div> <div class="profile-details"> <div class="profile-nickname"><span><!-- Nome do úsuario Aqui --></span></div> <div class="profile-descrition"><p><!-- Descrição aqui --></p></div> </div> </div> </div> </div> </div> </div> <div class="container"> <div class="container-perfil-content"> <div class="sidebar-profile"> <div class="profile-item"><a href="">Artigos Favoritos</a></div> <div class="profile-item"><a href="">Nóticia Favoritos</a></div> <div class="profile-item"><a href="">Recomendação</a></div> </div> <div class="main-profile"> <div class="favorite-profile"> <div class="favorite-content"> <a href=""> <div class="favorite-content-img"> <img src="images/ciencia.jpg"> <div class="rating-favorite"><span>14</span></div> <div class="favorite-details"> <div class="favorite-title-details"><span>ARTIGO 1</span></div> <div class="favorite-genero-details"><p>Gênero: Cientifico!</p></div> </div> </div> </a> </div> </div> </div> </div> </div>
  3. Olá! Gostaria de saber como passar essa parte que fiz em MySQLi para PDO, pois eu tenho pouco conhecimento sobre a temática. function selectAllPessoa(){ $banco = abrirBanco(); $sql = "SELECT * FROM tb_questoes WHERE disciplina_quest='$disciplina' AND etapa_quest='$etapa' AND capitulo_quest='$cap' ORDER BY RAND() LIMIT 20"; $resultado = $banco->query($sql); $banco->close(); while ($row = mysqli_fetch_array($resultado)) { $grupo[] = $row; } if (empty($grupo)) { echo ""; }else{ return $grupo; } }
  4. Tenho um sistema de gerenciamento de conteúdo que utilizo no meu site de loja de carros, tem 3 tabelas que são dependentes, Loja, Carros e Carrosfotos. Quando cadastro uma Loja, adiciono um Carro e várias fotos desse carro, tudo em suas tabelas correspondentes, porém notei que o sistema não estava excluindo os registros em cascata, estavam ficando muito arquivos órfãos, ou seja, quando excluísse a loja, era pra excluir todos os carros daquela loja e todas as fotos dos carros, sendo assim fiquei com muito espaço perdido no servidor, então preciso excluir essas fotos. Pesquisei em alguns fóruns e não achei nada completo, somente fragmentos do que queria, então fui juntando as coisas e gostaria da opinião de vocês onde posso melhorar ou se estou fazendo de forma errada, segue o código: try{ //Caminho para pasta $path = "upload/imagens/carros/"; $diretorio = dir($path); //Faço uma leitura em toda pasta e adiciono cada arquivo no array $arquivos = array(); while ($file = $diretorio->read()) { if ($file != "." && $file != "..") { array_push($arquivos, $file); } } //Conexão com BD $conn = new PDO('mysql:host=localhost;dbname=minhaloja', 'user', 'senha'); //Seleciono todos os registros $stmt = $conn->prepare('SELECT `imagem` FROM `carrosfotos`'); $stmt->execute(array()); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); //Percorro o array e comparo com o BD se o arquivo encontrado está cadastrado foreach ($arquivos as $foto){ if (in_array($foto, array_column($result, 'imagem'))) { echo '<pre>'; echo 'A imagem'.$foto.' está cadastrada.'; echo '</pre>'; } else { unlink($path . $foto); } } } catch (PDOException $e) { echo 'ERRO: ' . $e->getMessage(); $diretorio->close(); }
  5. Olá a todos, estou tendo um problema com os datatables aninhados, as child rows(detalhes), estão mostrando todos os dados, mas eu quero que cada informação permaneça em sua linha, alguém pode me ajudar? meu código abaixo e uma imagem pra ilustrar melhor ... link dos dois jsons que pego os dados jsonData.php: https://codebeautify.org/jsonvalidator/cb5bc515 jsonNota.php: https://codebeautify.org/jsonvalidator/cbd08a36 function format(table_id) { return '<hr/>' + '<table cellpadding="5" id="detalhes' + table_id + '" class="display" cellspacing="0" border="0" width="50%" style="padding-left:80px;">' + '<thead><tr><th>Cód. Nota:</th><th>Cód. Produto:</th><th>Descrição:</th><th>Quantidade:</th><th>R$ Unid.:</th><th>% IPI:</th><th>R$ IPI:</th><th>% Desc.:</th><th>R$ Desc.:</th><th>Desc. Unit.:</th><th>R$ Total:</th></tr></thead>' + '</table>' + '<hr/>'; } var iTableCounter = 1; var oInnerTable; $(document).ready(function() { TableHtml = $('#example').html(); var table = $('#example').DataTable({ "bProcessing": true, //"paging": false, //"searching": false, //"info": false, "rowId": 'NOTA', "ajax": { "url": 'forms/customer-details/jsonData.php', "type": 'POST', "data": { "idCustomer": <?php echo $idCustomer; ?> } }, "scrollX": true, "language": { "sUrl": "../plugins/datatables/Portuguese-Brasil.json" }, "aLengthMenu": [[10, 20, 30, 50, -1], [10, 20, 30, 50, "Todos"]], "aoColumns": [ { "class": 'details-control', "orderable": false, "data": null, "defaultContent": '' }, {"mData": "NOTA"}, {"mData": "NRO_NOTA"}, {"mData": "EMISSAO", render: function(data, type, row) { var dateSplit = data.split('-'); return type === "display" || type === "filter" ? dateSplit[1] + '/' + dateSplit[2] + '/' + dateSplit[0] : data; } }, {"mData": "QUANTIDADE1", render: $.fn.dataTable.render.number()}, {"mData": "BRUTO", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "VALOR_DESCONTO1", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "TOTAL1", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "VALOR_IPI1", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "VALOR_SUBST", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "TOTAL_NF", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "PRECO_MEDIO", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "REPRES_NOME"}, {"mData": "VENDEDOR_NOME"}, {"mData": "OP_NOME"}, {"mData": "FRANQUEADO_NOME"}, {"mData": "CARTEIRA"}, {"mData": "TRANSP_NOME"}, {"mData": "RASTREAMENTO_CORREIO"}, {"mData": "CONHECIMENTO"}, {"mData": "VALOR_FRETE", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "PERCENTUAL", render: $.fn.dataTable.render.number('.', ',', 2, '% ')}, {"mData": "DESCRICAO"}, {"mData": "DATA_OCORRENCIA"} ], "order": [[1, "desc"]] }); $('#example tbody').on('click', 'td.details-control', function() { var tr = $(this).closest('tr'); var row = table.row(tr); if (row.child.isShown()) { row.child.hide(); tr.removeClass('shown'); } else { row.child(format(iTableCounter)).show(); tr.addClass('shown'); oInnerTable = $('#detalhes' + iTableCounter).DataTable({ "bProcessing": true, "ajax": { "url": 'forms/customer-details/jsonNota.php', "type": 'POST', "data": { "idCustomer": <?php echo $idCustomer; ?> } }, "autoWidth": true, //"deferRender": true, "info": false, //"lengthChange": false, //"ordering": false, //"paging": false, //"scrollX": false, //scrollY": false, "searching": false, "language": { "sUrl": "../plugins/datatables/Portuguese-Brasil.json" }, "aLengthMenu": [[10, 20, 30, 50, -1], [10, 20, 30, 50, "Todos"]], "aoColumns": [ {"mData": "NOTA"}, {"mData": "COD_PRODUTO"}, {"mData": "DESC_PROD"}, {"mData": "QUANTIDADE", render: $.fn.dataTable.render.number()}, {"mData": "UNITARIO", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "PCT_IPI", render: $.fn.dataTable.render.number('.', ',', 2, '% ')}, {"mData": "VALOR_IPI", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "DESCONTO", render: $.fn.dataTable.render.number('.', ',', 2, '% ')}, {"mData": "VALOR_DESCONTO", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "DESC_UNITARIO", render: $.fn.dataTable.render.number('.', ',', 2)}, {"mData": "TOTAL", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')} ], "order": [[0, "desc"], [1, "asc"]] }); iTableCounter = iTableCounter + 1; } }); });
  6. Olá a todos, estou tendo um problema com os datatables aninhados, as child rows(detalhes), estão mostrando todos os dados, mas eu quero que cada informação permaneça em sua linha, alguém pode me ajudar? meu código abaixo e uma imagem pra ilustrar melhor ... link dos dois jsons que pego os dados jsonData.php: https://codebeautify.org/jsonvalidator/cb5bc515 function format(table_id) { return '<hr/>' + '<table cellpadding="5" id="detalhes' + table_id + '" class="display" cellspacing="0" border="0" width="50%" style="padding-left:80px;">' + '<thead><tr><th>Cód. Nota:</th><th>Cód. Produto:</th><th>Descrição:</th><th>Quantidade:</th><th>R$ Unid.:</th><th>% IPI:</th><th>R$ IPI:</th><th>% Desc.:</th><th>R$ Desc.:</th><th>Desc. Unit.:</th><th>R$ Total:</th></tr></thead>' + '</table>' + '<hr/>'; } var iTableCounter = 1; var oInnerTable; $(document).ready(function() { TableHtml = $('#example').html(); var table = $('#example').DataTable({ "bProcessing": true, //"paging": false, //"searching": false, //"info": false, "rowId": 'NOTA', "ajax": { "url": 'forms/customer-details/jsonData.php', "type": 'POST', "data": { "idCustomer": <?php echo $idCustomer; ?> } }, "scrollX": true, "language": { "sUrl": "../plugins/datatables/Portuguese-Brasil.json" }, "aLengthMenu": [[10, 20, 30, 50, -1], [10, 20, 30, 50, "Todos"]], "aoColumns": [ { "class": 'details-control', "orderable": false, "data": null, "defaultContent": '' }, {"mData": "NOTA"}, {"mData": "NRO_NOTA"}, {"mData": "EMISSAO", render: function(data, type, row) { var dateSplit = data.split('-'); return type === "display" || type === "filter" ? dateSplit[1] + '/' + dateSplit[2] + '/' + dateSplit[0] : data; } }, {"mData": "QUANTIDADE1", render: $.fn.dataTable.render.number()}, {"mData": "BRUTO", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "VALOR_DESCONTO1", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "TOTAL1", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "VALOR_IPI1", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "VALOR_SUBST", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "TOTAL_NF", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "PRECO_MEDIO", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "REPRES_NOME"}, {"mData": "VENDEDOR_NOME"}, {"mData": "OP_NOME"}, {"mData": "FRANQUEADO_NOME"}, {"mData": "CARTEIRA"}, {"mData": "TRANSP_NOME"}, {"mData": "RASTREAMENTO_CORREIO"}, {"mData": "CONHECIMENTO"}, {"mData": "VALOR_FRETE", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "PERCENTUAL", render: $.fn.dataTable.render.number('.', ',', 2, '% ')}, {"mData": "DESCRICAO"}, {"mData": "DATA_OCORRENCIA"} ], "order": [[1, "desc"]] }); $('#example tbody').on('click', 'td.details-control', function() { var tr = $(this).closest('tr'); var row = table.row(tr); if (row.child.isShown()) { row.child.hide(); tr.removeClass('shown'); } else { row.child(format(iTableCounter)).show(); tr.addClass('shown'); oInnerTable = $('#detalhes' + iTableCounter).DataTable({ "bProcessing": true, "ajax": { "url": 'forms/customer-details/jsonNota.php', "type": 'POST', "data": { "idCustomer": <?php echo $idCustomer; ?> } }, "autoWidth": true, //"deferRender": true, "info": false, //"lengthChange": false, //"ordering": false, //"paging": false, //"scrollX": false, //scrollY": false, "searching": false, "language": { "sUrl": "../plugins/datatables/Portuguese-Brasil.json" }, "aLengthMenu": [[10, 20, 30, 50, -1], [10, 20, 30, 50, "Todos"]], "aoColumns": [ {"mData": "NOTA"}, {"mData": "COD_PRODUTO"}, {"mData": "DESC_PROD"}, {"mData": "QUANTIDADE", render: $.fn.dataTable.render.number()}, {"mData": "UNITARIO", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "PCT_IPI", render: $.fn.dataTable.render.number('.', ',', 2, '% ')}, {"mData": "VALOR_IPI", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "DESCONTO", render: $.fn.dataTable.render.number('.', ',', 2, '% ')}, {"mData": "VALOR_DESCONTO", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')}, {"mData": "DESC_UNITARIO", render: $.fn.dataTable.render.number('.', ',', 2)}, {"mData": "TOTAL", render: $.fn.dataTable.render.number('.', ',', 2, 'R$ ')} ], "order": [[0, "desc"], [1, "asc"]] }); iTableCounter = iTableCounter + 1; } }); }); jsonNota.php: https://codebeautify.org/jsonvalidator/cbd08a36
  7. CODIGO PHP: <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <title>ICM Social</title> <link href="https://fonts.googleapis.com/css?family=Titillium+Web:300,400,700" rel="stylesheet"> <link rel="stylesheet" href="_css/normalize.css"> <link rel="stylesheet" href="_css/style-signup.css"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> </head> <body> <div class="login-area"> <section> <span class="logo-image"> <center> <img src="_img/icm-logo.png" alt="ICM Social Logo" class="logo-img"> </center> </span> <form action="#" method="post"> <center> <id class="login"> <span class="entrar"> Entrar </span> <br> <input type="text" placeholder="Nome" name="nome" id="nome"> <br> <input type="email" placeholder="Email" name="email" id="email"> <br> <?php if(isset($_POST['criar'])){ if($emailCount == 0){ echo "<span style='color: white;'>Insira um email válido</span><br>"; } } ?> <input type="date" name="data" id="data" min="8"> <br> <input type="password" placeholder="Senha" id="senha" name="senha"> <br> <input type="password" placeholder="Repita a senha" id="senha" name="repitaSenha"> <br> <?php if(isset($_POST['criar'])){ if($senha != $repitaSenha){ echo "<br><span style='color: white;'>As senhas não estão iguais</span><br>"; $igual = false; } } ?> <input type="submit" name="criar" value="Criar" id="entrar"> </id> <br> <br> Já possui uma conta? <br> <span class="crie"><a href="">Logue-se agora</a></span> </center> </form> </section> </div> </body> </html> PHP(CONEXÃO): <?php try{ $pdo = new PDO("mysql:dbname=icmsocial;host=localhost", "root", ""); }catch(PDOException $e){ echo "Erro: " . $e -> getMessage(); } ?> PHP(PDO): <?php include 'mysql/connect.php'; if(isset($_POST['criar'])){ $nome = addslashes($_POST['nome']); $email = addslashes($_POST['email']); $data = addslashes($_POST['data']); $senha = addslashes($_POST['senha']); $repitaSenha = addslashes($_POST['repitaSenha']); $igual = false; if(isset($_POST['criar'])){ if($senha == $repitaSenha){ $pdo -> query("INSERT INTO usuarios VALUES nome='$nome', email='$email', data='$data', senha='$senha'"); echo "Cadastrado"; } } } ?>
  8. Preciso de Ajuda. Tenho nos meus projetos a conexão desta forma: $conexao = new PDO('mysql:host=localhost;dbname=meubanco','meuuser','minhasenha'); Funciona Normal. Porem peguei um projeto que usa a conexão dentro de uma classe da seguinte forma: Classe: dbconn.php <?php class dbconn { public $dblocal; public function __construct() { } public function initDBO() { $this->dblocal = new PDO("mysql:host=localhost;dbname=meubanco;charset=latin1","meuuser","minhasenha",array(PDO::ATTR_PERSISTENT => true)); $this->dblocal->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); } } ?> Também funciona. Mas a tenho uma de minhas páginas que fazia acesso ao select fazendo referencia à conexão com o banco usando a variável $conexaõ da seguinte forma: <?php if(isset($_POST['logar'])) { $usuario=trim(strip_tags($_POST['usuario'])); $senha=trim(strip_tags($_POST['senha'])); $select = "SELECT * from tab_usuarios WHERE email=:usuario AND senha=:senha"; try { $result = $conexao->prepare($select); //$conexão vem do arquivo conexao.php ---Aqui gera o erro. Qual erro? A variavel $conexão não existe. Claro. Já era de se esperar... $result->bindParam(':usuario',$usuario, PDO::PARAM_STR); $result->bindParam(':senha',$senha, PDO::PARAM_STR); $result->execute(); ... //continua ?> Meu problema: No arquivo de Conexao com o banco agora está dentro de uma classe e não usa mais a variável $conexão. Em seu lugar está a psedo-variável $this. Sei que não basta apenas trocar a variável $conexao pela $this... O que fazer? devo mexer só nesta linha? tem mais coisa, tipo instanciar .... Não sei o que devo alterar ra isso continuar funcionando. Estou estudando aqui PDO | POO, lendo muito, vendo videos ..., mas preciso de ajuda com isso... $result = $conexao->prepare($select); Grata.
  9. Criei um formulário para inserir dados no banco porem quando rodo o mesmo ele não insere os dados e também não mostra nenhum erro... estou tentando resolver esse problema a 3 dias se puder me ajudar ficarei muito grato. obs: estou tentando criar um organizador de arquivos para meu pc. Segue abaixo os codigos: conexao.php <?php $servidor = "localhost"; $usuario = "lvmoreira99"; $senha = "lvmoreira99"; $baseDados= "inventario"; try{ $pdo = new PDO("mysql:host=".$servidor.";dbname=".$baseDados,$usuario,$senha); }catch(PDOException $e){ echo $e->getMessage(); } return $pdo; if($pdo ->connect_error){ die("falha ao conectar khfdue::".$pdo ->connect_error); } echo "conexao realizada jeijfe"; ?> validar.php <?php require 'conexao.php'; $acao=$_GET['acao']; if($acao=="enviar"){ $titulo = $_POST['ti']; $ano = $_POST['an']; $genero = $_POST['ge']; $duracao = $_POST['du']; $tamanho = $_POST['ta']; $formato = $_POST['fo']; $codec_audio = $_POST['co']; $sinopse = $_POST['si']; //envia dados para banco de dados $enviarb = "INSERT INTO filmes (titulo,ano,genero,duracao,tamanho_GB,formato,codec_audio,sinopse) VALUES('','$titulo', '$ano', '$genero', '$duracao', '$tamanho', '$formato', '$codec_audio', '$sinopse')"; } if($pdo->query($enviarb)){ echo "dados gravados efwf"; }else { echo "Falha ao gravar hejhfe"; } ?> formulario.php <!doctype html> <html> <head> <meta charset="utf-8"> <title> Conection</title> </head> <body> <form action="validar.php?acao=enviar" method="POST"> <table border="0" align="center"> <tr> <td>Titulo</td><td><input type="text" name="ti" required autofocus/></td> </tr> <tr> <td>Ano</td><td><input type="text" name="an" required /></td> </tr> <tr> <td>Visto</td> <td> <input value="S"type="radio" name="vi" required />SIM <input value="N" type="radio" name="vi" required />NÃO </td> </tr> <tr> <td>Genero</td><td><input type="text" name="ge"/></td> </tr> <tr> <td>Duração</td><td><input type="text" name="du"/></td> </tr> <tr> <td>Tamanho em GB</td><td><input type="text" name="ta"/></td> </tr> <tr> <td>Formato</td><td><input type="text" name="fo"/></td> </tr> <tr> <td>Codec de Audio</td><td><input type="text" name="co"/></td> </tr> <tr> <td>Sinopse</td><td><input type="text" name="si"/></td> </tr> <td><input type="submit" value="Enviar"/></td> </table> </form> </body> </html>
  10. Criei um formulário para inserir dados no banco porem quando rodo o mesmo ele não insere os dados e também não mostra nenhum erro... estou tentando resolver esse problema a 3 dias se puder me ajudar ficarei muito grato. obs: estou tentando criar um organizador de arquivos para meu pc. Segue abaixo os codigos: conexao.php <?php $servidor = "localhost"; $usuario = "lvmoreira99"; $senha = "lvmoreira99"; $baseDados= "inventario"; try{ $pdo = new PDO("mysql:host=".$servidor.";dbname=".$baseDados,$usuario,$senha); }catch(PDOException $e){ echo $e->getMessage(); } return $pdo; if($pdo ->connect_error){ die("falha ao conectar khfdue::".$pdo ->connect_error); } echo "conexao realizada jeijfe"; ?> validar.php <?php require 'conexao.php'; $acao=$_GET['acao']; if($acao=="enviar"){ $titulo = $_POST['ti']; $ano = $_POST['an']; $genero = $_POST['ge']; $duracao = $_POST['du']; $tamanho = $_POST['ta']; $formato = $_POST['fo']; $codec_audio = $_POST['co']; $sinopse = $_POST['si']; //envia dados para banco de dados $enviarb = "INSERT INTO filmes (titulo,ano,genero,duracao,tamanho_GB,formato,codec_audio,sinopse) VALUES('','$titulo', '$ano', '$genero', '$duracao', '$tamanho', '$formato', '$codec_audio', '$sinopse')"; } if($pdo->query($enviarb)){ echo "dados gravados efwf"; }else { echo "Falha ao gravar hejhfe"; } ?> formulario.php <!doctype html> <html> <head> <meta charset="utf-8"> <title> Conection</title> </head> <body> <form action="validar.php?acao=enviar" method="POST"> <table border="0" align="center"> <tr> <td>Titulo</td><td><input type="text" name="ti" required autofocus/></td> </tr> <tr> <td>Ano</td><td><input type="text" name="an" required /></td> </tr> <tr> <td>Visto</td> <td> <input value="S"type="radio" name="vi" required />SIM <input value="N" type="radio" name="vi" required />NÃO </td> </tr> <tr> <td>Genero</td><td><input type="text" name="ge"/></td> </tr> <tr> <td>Duração</td><td><input type="text" name="du"/></td> </tr> <tr> <td>Tamanho em GB</td><td><input type="text" name="ta"/></td> </tr> <tr> <td>Formato</td><td><input type="text" name="fo"/></td> </tr> <tr> <td>Codec de Audio</td><td><input type="text" name="co"/></td> </tr> <tr> <td>Sinopse</td><td><input type="text" name="si"/></td> </tr> <td><input type="submit" value="Enviar"/></td> </table> </form> </body> </html>
  11. Boa noite, eu tenho um sistema de agendamento, porem eu conecto tudo certinho, está funcionando quase tudo certo, eu tenho dois botão, um +1 e um -1 que altera o valor de uma coluna no mysql, só que ela está em mysqli e eu gostaria de fazer em PDO, só que não estou conseguindo, alguém poderia me ajudar ? o codigo do botão +1 em mysqli <?php //inicia uma coneção com o banco de dados include"db2.php"; // pega o valor da variavel de identificação $id = $_GET['id']; $sql = "SELECT * FROM usuarios WHERE id='$id'"; $resultado = @mysql_query($sql) or die ("Não foi possível realizar a consulta ao banco de dados"); while ($line=mysql_fetch_array($resultado)) { $v1 = $line["v1"]; } //função de soma simples. $novoValor = $v1 + 1; //grava novo valor no banco. $gravar = mysql_query("UPDATE usuarios SET v1='$novoValor' WHERE id='$id'"); //retorna a pagina teste echo '<script type="text/javascript"> window.location="agen-pen.php"; </script>'; exit(); ?>
  12. Olá Pessoal Boa tarde! Estou com um erro que não consigo identificar de jeito nenhum. Preciso realizar mais de uma consulta em classes diferentes em uma tela. O Meu problema está acontecendo quando a segunda consulta é executada, pois o e o Php retorna, Call to a member function prepare() on null por que o parâmetro de conexão que está em __construct está retornando null na segunda classe (peguei isso através de um var_dump) por isso que o "prepare" e consequentemente a consulta não funcionam. Queria saber o que estou fazendo de errado para não consegui consultar mais de uma classe na mesma tela. Estou usando PDO e banco mysql. Essa é a minha classe de conexão <?php // Classe que realiza a conexão com o banco de dados Class Conexao { private static $con; // Impede que a classe seja instanciada private function __construct() { } // Impede que a classe seja clonada private function __clone() { } //Impede a utilização do Unserialize (que a variavel retorne o array original) private function __wakeup() { } public static function getConexao() { if (!isset(self::$con)) { try{ // parametros de conexão $tipo = 'mysql:host=localhost;dbname=teste'; $user = 'root'; $senha = ''; self::$con = new PDO( $tipo, $user, $senha, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", PDO::ATTR_PERSISTENT => TRUE)); self::$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); self::$con->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_EMPTY_STRING); } catch ( PDOException $erro ){ echo $erro; // Encerrando a aplicação exit(); } return self::$con; } } // finalizando o getConexao protected function closeConexao() { if($this->con != null) $this->con = null; } public function __destruct() { $this->closeConexao(); } } // finalizando a classe conexão ?> Essa é a classe na qual realizo a 1º consulta <?php // ARQUIVO DE CLASSE SLIDE_CRUD - UTILIZADA PARA ADICIONAR AS IMAGENS E CONSULTAS ATRAVÉS DO LOGIN NO PAINEL-ADMIN // chamando o arquivo de conexão class Slide_crud extends Slide{ public static $conexaoPDO; // Instanciando a conexao e a classe public function __construct(){ $this->conexaopdo = conexao::getConexao(); } //******************************************************************************************************// //*********************************************CONSULTA GERAL******************************************// //****************************************************************************************************// public function consultaslide(){ try{ // realizando o SQL $sql = ('SELECT * FROM tbl_slide'); // Realizando a conexão $prepare_sql = $this->conexaopdo->prepare($sql); $prepare_sql->execute(); return $prepare_sql->fetchAll(PDO::FETCH_OBJ); } catch(exception $e){ echo" $e erro ao realizar a consulta, se o problema persistir contate o administrador do sistema"; } } } Essa é a classe na qual realizo a 2º consulta. <?php // Criando a Classe Seo_Crud - Classe responsável pelas interações com o banco de DADOS Class Seo_crud extends Seo{ // parametro na qual será responsável por iniciar a conexão com o banco de dados static $conexaoPDO; // função responsável por instanciar a classe em questão public function __construct(){ // instanciando o parametro de conexão; $this->conexaopdo = Conexao::getConexao(); } //******************************************************************************************************// //********************************************CONSULTA GERAL*******************************************// //****************************************************************************************************// public function consultaseo(){ try{ // consulta SQL $sql = ('SELECT * FROM tbl_seo'); // repassando a consulta para a conexão $prepare_sql = $this->conexaopdo->prepare($sql); // executando a instrução $prepare_sql->execute(); // retorno da função return $prepare_sql->fetchAll(PDO::FETCH_OBJ); }catch(PDOexception $e){ print_r($e); echo"$e Atenção! Ocorreu um Erro ao realizar essa consulta de dados, tente novamente, se o problema persisitir contate o Administrador do Sistema"; } } // fim function consulta } ?> aqui está os trechos na qual estou instanciando as classes no arquivo index.php para obter os dados através de um foreach. <?php // instanciando a classe responsável pelo Crud e pelas Consultas $slide_crud = new Slide_crud(); // repassando os parâmetros para a consulta e armazenando na variavel $result $result = $slide_crud->consultaslide(); // percorrendo o array através de um laço para exibir as imagens foreach($result as $dados){ ?> <div class="cycle-anterior" <a href="#" id="anterior"></a></div> <div class="cycle-proximo" <a href="#" id="proximo"></a></div> <img src="<?=$dados->caminho ?>" class="img-thumbnail" height="260" width="960" data-cycle-desc= <?=$dados->descricao?>> <?php } <?php // instanciando a classe responsável pela consulta; $seo_crud = new Seo_crud(); // realizando a consulta e armazenando os dados em uma variavel $result_seo = $seo_crud->consultaseo(); if(!Empty($result_seo)){ foreach($result_seo as $dados){ echo "$dados->rodape_centro"; } } ?>
  13. Olá pessoal, bom estou estudando php pelo manual ,como falei em um tópico anterior , estou aprendendo o básico ainda, estou passando um pequeno script para PDO e estou com o seguinte erro Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '-5, 5' at line 1' in C:\xamppp\htdocs\modcp.php:296 Stack trace: #0 C:\xamppp\htdocs\modcp.php(296): PDOStatement->execute() #1 {main} thrown in C:\xamppp\htdocs\modcp.php on line 296 este é meu código $num_items = $noi[0]; //changable $items_per_page= 5; $num_pages = ceil($num_items/$items_per_page); if($page>$num_pages)$page= $num_pages; $limit_start = ($page-1)*$items_per_page; $sql = "SELECT id, name, text, authorid, crdate FROM fun_topics WHERE reported='1' ORDER BY crdate DESC LIMIT $limit_start, $items_per_page"; $items = $tonn->prepare($sql); $items->execute(); Se alguém puder me da uma dica do que pode ser, ficarei grato!
  14. tonzinho

    PHP PDO

    Olá pessoal sou novo no forum, e começei a estudar php pelo manual,pois nao tenho condiçoes de pagar um curso. Bom estou passando um script pequeno que tenho aqui,para PDO e estou com problemas Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key Meu código (funcionava perfeitamente com mysql): $res = $tonn->prepare("INSERT INTO fun_online SET userid = :userid, actvtime = :actvtime, place = :place, placedet = :placedet"); $res->bindParam(':userid', $uid, PDO::PARAM_STR); $res->bindParam(':actvtime', $ttime, PDO::PARAM_STR); $res->bindParam(':place', $place, PDO::PARAM_STR); $res->bindParam(':placedet', $plclink, PDO::PARAM_STR); $res->execute(); if(!$res) { $res = $tonn->prepare("UPDATE fun_online SET actvtime = :actvtime, place = :place , placedet = :placedet WHERE userid = :userid"); $res->bindValue(':actvtime', $ttime, PDO::PARAM_STR); $res->bindValue(':place', $place, PDO::PARAM_STR); $res->bindValue(':placedet', $plclink, PDO::PARAM_STR); $res->bindValue(':userid', $uid, PDO::PARAM_STR); $res->execute(); }
  15. Olá a todos, Apesar do cadastro recente gostaria de contribuir com esta comunidade, pois sempre que tenho dúvidas, percorro estes fóruns e, graças a vocês, até agora consegui solucionar todas elas. Pesquisei aqui se existia algo parecido e o único tópico que se refere a CRUD não tem o código fonte e o link esta quebrado. Este fim de semana tive que gerar várias páginas para inserção, edição, exclusão e consulta de dados de várias tabelas, então resolvi criar um gerador CRUD para facilitar minha vida e gostaria de compartilhar com vocês, não tenho muita experiência com identação e boas práticas de programação, qualquer critica para melhorar minha maneira de desenvolver e/ou sugestões para o script são bem vindas. gerador_crud.php <?php /** * Gerador CRUD (Create, Read, Update & Delete) * * Gera as 4 funções básicas de operações de dados em um único arquivo. * Serve para aumentar a produtividade na geração de formulários. * * Possui verificação de campos tipo Auto_increment para prevenir erros. * Tratamento para remover o prefixo das tabelas na exibição das labels * dos formulários Ex. produtos_codigo fica Codigo. * O CRUD gerado já utiliza a classe PDO * * Modo de usar: * Preencha as variáveis no inicio do arquivo e execute-o. * Serão exibidos dois scripts em formato de texto, copie e crie * os arquivos de conexão com o DB e o CRUD respectivamente. * Após gerados os scripts a parte estrutural estará pronta para você * começar a estilizar sua página. * * * @author SERGIO PEREIRA <[email protected]> */ //Dados para conexão com o seu servidor. $server = "localhost"; $banco = "XYZ"; $user = "root"; $senha = ""; //Parametros para gerar o seu CRUD. $tabela = ""; //Nome da tabela para gerar o CRUD. $prefixo = "_"; //Opcional, mas se os campos de sua tabela tiverem "_" remova-o. $ident = "clientes_id"; //Campo identificador para manipular dados do registro. $caminho = "conexao.php"; //Url + nome do arquivo de conexao a ser criado para o CRUD. $conn = mysqli_connect($server, $user, $senha, $banco); //Usamos <pre> para que as variaveis não sejam interpretadas no output. echo '<pre>'; echo htmlspecialchars($caminho . ' <?php $con = new PDO("mysql:host=localhost;dbname=erp", "root", "",array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES \'utf8\'")); ?> ' . $tabela . '.php <?php include "' . $caminho . '"; if(isset($_GET["id"])){ $id = (int) $_GET["id"]; } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>CRUD '.$tabela.'</title> </head> <?php if((!isset($_GET["novo"]))&&(!isset($_GET["altera"]))&&(!isset($_GET["apaga"]))){ ?> <table border="1"> <tr>'); $campos = consulta($conn); foreach ($campos as $item) { echo htmlspecialchars(' <td><b>' . ucfirst(after('_', $item["COLUMN_NAME"])) . '</b></td>'); } echo htmlspecialchars(' </tr> <?php $rs = $con->prepare("SELECT * FROM ' . $tabela . '"); if($rs->execute()){ if($rs->rowCount() > 0){ while($row = $rs->fetch(PDO::FETCH_ASSOC)){ ?> <tr>'); $campos = consulta($conn); foreach ($campos as $item) { echo htmlspecialchars(' <td valign="top"><?php echo $row["' . $item["COLUMN_NAME"] . '"];?></td>'); } echo htmlspecialchars(' <td valign="top"><a href="' . $tabela . '.php?id=<?php echo $row["' . $ident . '"];?>&altera">Edita</a></td> <td><a href="' . $tabela . '.php?id=<?php echo $row["' . $ident . '"];?>&apaga">Apaga</a></td> </tr> <?php } ?> <?php } } ?> </table> <a href="' . $tabela . '.php?novo">Novo</a> <?php } if(isset($_GET["novo"])){ if (isset($_POST["submitted"])) { foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); } $rs = $con->prepare("INSERT INTO ' . $tabela . ' ('); $campos = consulta($conn); $i = 0; $len = count($campos); foreach ($campos as $item) { echo htmlspecialchars($item["COLUMN_NAME"]); if ($i == $len - 1) { echo htmlspecialchars(''); } else { echo htmlspecialchars(', '); } $i++; } echo htmlspecialchars(') VALUES('); $campos = consulta($conn); $i = 0; $len = count($campos); foreach ($campos as $item) { echo htmlspecialchars(':' . $item["COLUMN_NAME"]); if ($i == $len - 1) { echo htmlspecialchars(''); } else { echo htmlspecialchars(', '); } $i++; } echo htmlspecialchars(')");'); $campos = consulta($conn); foreach ($campos as $item) { echo htmlspecialchars(' $rs->bindParam(":' . $item["COLUMN_NAME"] . '", $_POST["' . $item["COLUMN_NAME"] . '"], PDO::PARAM_STR);'); } echo htmlspecialchars(' $rs->execute(); echo \'<script>location.href="' . $tabela . '.php";</script>\'; } ?> <form action="" method="POST">'); $campos = consulta($conn); foreach ($campos as $item) { echo htmlspecialchars(' <p><b>' . ucfirst(after('_', $item["COLUMN_NAME"])) . ':</b><br /><input type="text" name="' . $item["COLUMN_NAME"] . '"/>'); } echo htmlspecialchars(' <p><input type="submit" value="Incluir" /><input type="hidden" value="1" name="submitted" /> </form> <?php } ?> <?php if(isset($_GET["altera"])){ if (isset($_POST["submitted"])) { foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); } $rs = $con->prepare("UPDATE ' . $tabela . ' SET '); $campos = consulta($conn); $i = 0; $len = count($campos); foreach ($campos as $item) { echo htmlspecialchars($item["COLUMN_NAME"] . '=:' . $item["COLUMN_NAME"]); if ($i == $len - 1) { echo htmlspecialchars(''); } else { echo htmlspecialchars(', '); } $i++; } echo htmlspecialchars(' WHERE ' . $ident . ' = $id");'); $campos = consulta($conn); foreach ($campos as $item) { echo htmlspecialchars(' $rs->bindParam(":' . $item["COLUMN_NAME"] . '", $_POST["' . $item["COLUMN_NAME"] . '"], PDO::PARAM_STR);'); } echo htmlspecialchars(' $rs->execute(); echo \'<script>location.href="' . $tabela . '.php";</script>\'; } ?> <form action="" method="POST"> <?php $rs = $con->prepare("SELECT * FROM ' . $tabela . ' WHERE ' . $ident . ' = $id"); if($rs->execute()){ if($rs->rowCount() > 0){ while($row = $rs->fetch(PDO::FETCH_ASSOC)){ ?>'); $campos = consulta($conn); foreach ($campos as $item) { echo htmlspecialchars(' <p><b>' . ucfirst(after('_', $item["COLUMN_NAME"])) . ':</b><br /><input type="text" name="' . $item["COLUMN_NAME"] . '" value="<?= stripslashes($row["' . $item["COLUMN_NAME"] . '"]) ?>" />'); } echo htmlspecialchars(' <p><input type="submit" value="Alterar" /><input type="hidden" value="1" name="submitted" /> <?php } } } ?> </form> <?php } if(isset($_GET["apaga"])){ $id = (int) $_GET["id"]; $rs = $con->prepare("DELETE FROM ' . $tabela . ' WHERE ' . $ident . ' = :id"); $rs->bindParam(":id", $id, PDO::PARAM_INT); $rs->execute(); echo \'<script>location.href="' . $tabela . '.php";</script>\'; } ?> </body> </html> '); echo '</pre>'; function after($this, $inthat) { if (!is_bool(strpos($inthat, $this))) { return substr($inthat, strpos($inthat, $this) + strlen($this)); } else { return $inthat; } } function consulta($conn) { global $banco; global $tabela; $cons = mysqli_query($conn, "SELECT COLUMN_NAME, EXTRA FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '$banco' AND TABLE_NAME = '$tabela';") or die(mysqli_error()); $result = array(); while ($row = mysqli_fetch_assoc($cons)) { if ($row["EXTRA"] != "auto_increment") { $campos[] = $row; } } return $campos; } ?>
  16. Estou com dificuldades em encontrar a solução esse enigma... pois as variais chegam até o echo mas não são executadas para inserção no banco . A resposta ao tentar é : Erro ao inserir os dados ini_set('display_errors', true); error_reporting(E_ALL); echo"email = ".$email. "<br>" ; echo "ddd = ".$ddd ."<br>"; echo "telefone = ".$telefone . "<br>"; echo "cpf = ".$cpf . "<br>"; echo "produto = ".$produto . "<br>" ; echo "status = ".$status . "<br>" ; echo "total = ".$total . "<br>" ; echo "data = ".$data . "<br>"; echo "ref = ".$ref. "<br>"; //Até aqui o ECHO recebe as informações try{ $inseri= $pdo -> prepare (" INSERT INTO rico_vendas (email, ddd, telefone, cpf, produto, status, valor, data_cadastro, ref) VALUES (:email, :ddd, :tel, :cpf, :produto, :status, :valor, :data, :ref)"); $inseri -> bindValue(':email',$email); $inseri -> bindValue(':ddd',$ddd); $inseri -> bindValue(':tel',$telefone); $inseri -> bindValue(':cpf',$cpf); $inseri -> bindValue(':produto',$produto); $inseri -> bindValue(':status',$status); $inseri -> bindValue(':valor',$total); $inseri -> bindValue(':data',$data); $inseri -> bindValue(':ref',$ref); $executa = $inseri -> execute(); if($executa){ echo 'Dados inseridos com sucesso'; } else{ echo 'Erro ao inserir os dados'; } } catch(PDOException $e){ echo $e->getMessage(); }
  17. Estou montando um sistema de login. Mas não consigo fazer a validação da senha digitada. Quando tento desta forma ele acusa login/senha errado. Mas já me certifiquei, o login e senha estao corretos: <?php require_once 'init.php'; // resgata dados digitados no formulario $email = isset($_POST['email']) ? $_POST['email']: ''; $senha = isset($_POST['senha']) ? $_POST['senha']: ''; // Verifica se os campos do form não estao vazios if(empty($email) || empty($senha)){ echo "<script language='javascript' type='text/javascript'>alert('Infome Email e senha.');window.location.href='../login.php';</script>"; exit; } // Comando no banco de dados $pdo = db_connect(); // Abre conexão com o banco $sql = "SELECT id, nome FROM usuarios WHERE email = :email AND senha = :senha"; // Cria query $stmt = $pdo->prepare($sql); // Prepare da query $stmt->bindValue(':email', $email); $stmt->bindValue(':senha', $senha); // Atribui valor do campo email no valor email da query $stmt->execute(); // Execute na query $arr = $stmt->fetchAll(PDO::FETCH_ASSOC); // Cria array associativo if(count($arr) <= 0) { // Verifica se a busca trouxe retorno echo "<script language='javascript' type='text/javascript'>alert('Login e/ou senha inválido!');window.location.href='../login.php';</script>"; exit; } // Pega o primeiro usuario $user = $arr[0]; // Inicia a sessão session_start(); // Definir os dados persistindo entre paginas $_SESSION['logged_in'] = true; $_SESSION['user_id'] = $user['id']; $_SESSION['user_name'] = $user['nome']; header('Location: ../index.php'); Quando dou var_dump($arr); ele me retorna um array vazio, por isso ele não faz o login. Alguém poderia me auxiliar? Grato!
  18. Olá. Estou criando um sistema de login para fins de estudo. Identifiquei no me arquivo que não esta populando o array com as informações do banco de dados... e sim, já me certifiquei que o email e senha informados já existe na base de dados. Segue arquivo de login.php: <?php require_once 'init.php'; // resgata dados digitados no formulario $email = isset($_POST['email']) ? $_POST['email']: ''; $senha = isset($_POST['senha']) ? $_POST['senha']: ''; // Cria o hash da senha $seg_senha = password_hash($senha, PASSWORD_DEFAULT); // Verifica se os campos do form não estao vazios if(empty($email) || empty($senha)){ echo 'Informe Email e Senha'; exit; } // Comando no banco de dados $pdo = db_connect(); // Abre conexão com o banco $sql = "SELECT id, nome FROM usuarios WHERE email = :email AND senha = :senha"; // Cria query $stmt = $pdo->prepare($sql); // Prepare da query $stmt->bindParam(':email', $email); // Atribui valor do campo email no valor email da query $stmt->bindParam(':senha', $seg_senha); // Atribui valor do campo senha no valor senha da query $stmt->execute(); // Execute na query $arr = $stmt->fetchAll(PDO::FETCH_ASSOC); // Cria array associativo if(count($arr) <= 0){ // Verifica se existe elemento no array echo "<script language='javascript' type='text/javascript'>alert('Login e/ou senha incorretos');window.location.href='../login.php';</script>"; exit; } // Pega o primeiro usuario $user = $arr[0]; // Inicia a sessão session_start(); $_SESSION['logged_in'] = true; $_SESSION['user_id'] = $user['id']; $_SESSION['user_name'] = $user['nome']; header('Location: ../index1.php'); Se eu comento da linha if(count($arr) <= 0){ para baixo, e coloco um var_dump($arr); abaixo de $arr = $stmt->fetchAll(PDO::FETCH_ASSOC); me retorna um array vazio C:\wamp64\www\ProjetoALPHA\core\login.php:33: array (size=0) empty Alguém poderia me ajudar? Grato!
  19. Gabrielvt14

    Ajuda com PDO

    Olá pessoal, Estou com problemas para conectar o banco de dados utilizando PDO, uso o MySQL. quando executo a conexao com o banco aparecem as seguintes mensagens de erro: ( ! ) Fatal error: Uncaught exception 'PDOException' with message ' in C:\wamp64\www\phpCRUD\config\Conecta.php on line 11 ( ! ) PDOException: in C:\wamp64\www\phpCRUD\config\Conecta.php on line 11 Call Stack # Time Memory Function Location 1 0.0003 235888 {main}( ) ...\login.php:0 2 0.0006 240904 include_once( 'C:\wamp64\www\phpCRUD\core\Login.php' ) ...\login.php:3 3 0.0013 253496 Conecta->__construct( ) ...\Login.php:5 4 0.0013 253984 __construct ( ) ...\Conecta.php:11 Não sei onde estou errando, alguém poderia me ajudar? Segue o código da configuração do banco: http://pastebin.com/24qAiFTr E abaixo arquivo conf.php: http://pastebin.com/986P4hiD
  20. Olá pessoal, estou tendo problemas para usar o PDO do MySQL no PHP. Quando tento fazer a conexão por código com o MySQL ele apresenta o seguinte erro: could not find driver Creio que o driver PDO do MySQL não esteja instalado. Não tenho muito conhecimento em configuração de Apache, php e tudo mais... Quando vou em phpinfo() ele apresenta as seguintes informações no campo Configure Command: cscript /nologo configure.js "--enable-snapshot-build" "--disable-isapi" "--enable-debug-pack" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci=c:\php-sdk\oracle\x64\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x64\instantclient_12_1\sdk,shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--without-analyzer" "--with-pgo" Não sei se ta haver, como disse, não tenho muito conhecimento nessas configurações. Alguém poderia me ajudar? Uso Windows 10 e o programa Wamp64. Agradeço desde já!
  21. Olá, No último mês estive desenvolvendo um painel de gerenciamento PHP Orientado a Objetos. Desenvolvido em bootstrap, ele é uma mistura simples que une o prático ao agradável. Estou disponibilizando-o para download, assim qualquer ser interessado em testá-lo e aprimorá-lo é bem-vindo! Peço apenas que mantenham os créditos. Download: https://mega.nz/#!ZcQwXBqI!qhQraQMGFw-c3_ABn5rMR_7CYlqSiynaWt_nclWwrVc Obs: O arquivo de SQL do painel não está incluso por questões de avaliações. Quem for baixar o painel envie um email para: [email protected] e receberá o arquivo de mysql + senha para descompactação do sistema. Abraços, Dúvidas - twitter: @Azielsilas
  22. Olá, Estou desenvolvendo uma aplicação para controle residencial, porém estou tendo algumas dificuldades para comunicação via PDO com o Cloud9. Não sou desenvolvedor web ou linguagens convencionais, mas estou aprendendo. Favor deixar o usuário do c9 que eu compartilho o app. <?php /* MySql Daten */ define('DB_HOST', 'igorronchi-homecontrol-1179525'); define('DB_USER', 'igorronchi'); define('DB_PASS', ''); define('DB_PORT', '3306'); define('DB_NAME', 'DAI_DB'); define('DB_CHARSET', 'utf8'); define('PREFIX', 'pi_'); define('LANGUAGE', 'en'); /*define('BASE', 'http://'.$_SERVER['HTTP_HOST'].'/');*/ /*define('SERVER_PATH', '/home/www/');*/ define('BASE', ''); define('SERVER_PATH', ''); function name($name) { $n = explode(" ", $name); if(count($n)==0) { $r = $name[0].$name[1]; }else{ $r = $n[0][0].$n[1][0]; } return strtoupper($r); } <?php class Database { private $_con; public function __construct() { return $this->con(); } function con() { $this->_con = new PDO('mysql:host='.DB_HOST.'; port='.DB_PORT. '; dbname='.DB_NAME, DB_USER, DB_PASS); $this->_con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $this->_con->exec("SET CHARACTER SET ".DB_CHARSET); // return all sql requests as UTF-8 return $this->_con; } }
  23. Fiz o insert usando type: text e varchar no banco... quero alterar no banco para date, mais não tenho muita ideia como fazer essa alteração no código para que para o Usuário fique o formato brasileiro, no banco converta para o americano para aceitar o date,e quando for fazer o select do fomulário para o usuário visualizar os dados recupere no formato brasileiro tb. abaixo o código como está hoje. segue o código! <script type="text/javascript"> jQuery(function($){ $("#date").mask("99/99/9999",{placeholder:"dd/mm/yyyy"}); }); </script> <?php if(isset($_POST['cadastrar'])){ $data = trim(strip_tags($_POST['data'])); $titulo = trim(strip_tags($_POST['titulo'])); $exibir = trim(strip_tags($_POST['exibir'])); $descricao = $_POST['descricao']; $alterado = trim(strip_tags($_POST['alterado'])); $logado = trim(strip_tags($_POST['logado'])); //INFO IMAGEM $file = $_FILES['img']; $numFile = count(array_filter($file['name'])); //PASTA $folder = '../upload/agenda/'; //REQUISITOS $permite = array('image/jpeg', 'image/png'); $maxSize = 1024 * 1024 * 5; //MENSAGENS $msg = array(); $errorMsg = array( 1 => 'O arquivo no upload é maior do que o limite definido em upload_max_filesize no php.ini.', 2 => 'O arquivo ultrapassa o limite de tamanho em MAX_FILE_SIZE que foi especificado no formulário HTML', 3 => 'o upload do arquivo foi feito parcialmente', 4 => 'Não foi feito o upload do arquivo' ); if($numFile <= 0){ echo '<div class="alert alert-danger"> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> Selecione uma Imagem e tente novamente! </div>'; } else if($numFile >=2){ echo '<div class="alert alert-danger"> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> Você ultrapassou o limite de upload. Selecione apenas uma foto e tente novamente! </div>'; }else{ for($i = 0; $i < $numFile; $i++){ $name = $file['name'][$i]; $type = $file['type'][$i]; $size = $file['size'][$i]; $error = $file['error'][$i]; $tmp = $file['tmp_name'][$i]; $extensao = @end(explode('.', $name)); $novoNome = rand().".$extensao"; if($error != 0) $msg[] = "<b>$name :</b> ".$errorMsg[$error]; else if(!in_array($type, $permite)) $msg[] = "<b>$name :</b> Erro imagem não suportada!"; else if($size > $maxSize) $msg[] = "<b>$name :</b> Erro imagem ultrapassa o limite de 5MB"; else{ if(move_uploaded_file($tmp, $folder.'/'.$novoNome)){ //$msg[] = "<b>$name :</b> Upload Realizado com Sucesso!"; $insert = "INSERT into agenda (imagem_agenda, data_agenda, titulo_agenda, exibir_agenda, descricao_agenda, alterado, logado) VALUES (:imagem, :data, :titulo, :exibir, :descricao, :alterado, :logado)"; try{ $result = $conexao->prepare($insert); $result->bindParam(':imagem', $novoNome, PDO::PARAM_STR); $result->bindParam(':data', $data, PDO::PARAM_STR); $result->bindParam(':titulo', $titulo, PDO::PARAM_STR); $result->bindParam(':exibir', $exibir, PDO::PARAM_STR); $result->bindParam(':descricao', $descricao, PDO::PARAM_STR); $result->bindParam(':alterado', $alterado, PDO::PARAM_STR); $result->bindParam(':logado', $logado, PDO::PARAM_STR); $result->execute(); $contar = $result->rowCount(); if($contar>0){ /******Forme date*********/ <input type="text" class="span2" id="date" name="data" value="" required >
  24. blx32

    Sistema de login com erro.

    Fui vendo na internet os tutoriais e tudo mais e resolvi juntar e mais pra frente incrementar meu sisteminha. Arquivo functions.php <?php /** * Created by PhpStorm. * User: blx32 * Date: 7/10/16 * Time: 1:58 PM */ include_once ('global-config.php'); /* * É importante não colocar apenas "session_start()"; no topo de todas as páginas nas quais você desejar utilizar sessões php, se você realmente estiver preocupado com a segurança, é desta forma que você deverá fazer. Você criará uma função chamada "sec_session_start", a qual irá iniciar uma sessão php de forma segura. Você deveria chamar esta função no topo de cada página a partir da qual você deseje acessar uma variável de sessão php. Função de Início de Sessão Segura: */ function sec_session_start() { $session_name = 'sec_session_id'; // Set a custom session name $secure = true; // This stops JavaScript being able to access the session id. $httponly = true; // Forces sessions to only use cookies. if (ini_set('session.use_only_cookies', 1) === FALSE) { header("Location: ../error.php?err=Could not initiate a safe session (ini_set)"); exit(); } // Gets current cookies params. $cookieParams = session_get_cookie_params(); session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly); // Sets the session name to the one set above. session_name($session_name); session_start(); // Start the PHP session session_regenerate_id(true); // regenerated the session, delete the old one. }; /* * Crie uma função de login. Esta função irá checar o email e a senha na base de dados e retornará um valor "true" (verdadeiro) caso ambos estejam corretos e combinando. Função de Login Seguro: */ function login($email, $password, $mysqli) { // Using prepared statements means that SQL injection is not possible. if ($stmt = $mysqli->prepare("SELECT id, username, password FROM members WHERE email = ? LIMIT 1")) { $stmt->bind_param('s', $email); // Bind "$email" to parameter. $stmt->execute(); // Execute the prepared query. $stmt->store_result(); // get variables from result. $stmt->bind_result($user_id, $username, $db_password); $stmt->fetch(); if ($stmt->num_rows == 1) { // If the user exists we check if the account is locked // from too many login attempts if (checkbrute($user_id, $mysqli) == true) { // Account is locked // Send an email to user saying their account is locked return false; } else { // Check if the password in the database matches // the password the user submitted. We are using // the password_verify function to avoid timing attacks. if (password_verify($password, $db_password)) { // Password is correct! // Get the user-agent string of the user. $user_browser = $_SERVER['HTTP_USER_AGENT']; // XSS protection as we might print this value $user_id = preg_replace("/[^0-9]+/", "", $user_id); $_SESSION['user_id'] = $user_id; // XSS protection as we might print this value $username = preg_replace("/[^a-zA-Z0-9_\-]+/", "", $username); $_SESSION['username'] = $username; $_SESSION['login_string'] = hash('sha512', $db_password . $user_browser); // Login successful. return true; } else { // Password is not correct // We record this attempt in the database $now = time(); $mysqli->query("INSERT INTO login_attempts(user_id, time) VALUES ('$user_id', '$now')"); return false; } } } else { // No user exists. return false; } } }; /* * Função Brute Force. Ataques de brute force ou força bruta acontecem quando hackers tentam milhares de diferentes senhas em uma conta, seja de forma randômica através de senhas aleatórias ou através de um dicionário de palavras. Em nosso script, se um usuário falhar em sua tentativa de login por mais de 5 vezes, sua conta será bloqueada. Crie a função login_check: */ function checkbrute($user_id, $mysqli) { // Get timestamp of current time $now = time(); // All login attempts are counted from the past 2 hours. $valid_attempts = $now - (2 * 60 * 60); if ($stmt = $mysqli->prepare("SELECT time FROM login_attempts WHERE user_id = ? AND time >'$valid_attempts'")) { $stmt->bind_param('i', $user_id); // Execute the prepared query. $stmt->execute(); $stmt->store_result(); // If there have been more than 5 failed logins if ($stmt->num_rows > 5) { return true; } else { return false; } } } /*Cheque o status de login. Isto é feito checando-se as variáveis de sessão "user_id" e "login_string". A variável de sessão "login_string" possui as informações de endereço IP e navegador em forma de hash juntamente com a senha. Utilizamos o endereço IP e a informação do navegador pois é muito improvável que o usuário altere o endereço IP ou o navegador durante sua sessão. Fazendo isto, você impede um ataque de hijack na sessão (sequestro de sessão, literalmente). Crie a função login_check: */ function login_check($mysqli) { // Check if all session variables are set if (isset($_SESSION['user_id'], $_SESSION['username'], $_SESSION['login_string'])) { $user_id = $_SESSION['user_id']; $login_string = $_SESSION['login_string']; $username = $_SESSION['username']; // Get the user-agent string of the user. $user_browser = $_SERVER['HTTP_USER_AGENT']; if ($stmt = $mysqli->prepare("SELECT password FROM members WHERE id = ? LIMIT 1")) { // Bind "$user_id" to parameter. $stmt->bind_param('i', $user_id); $stmt->execute(); // Execute the prepared query. $stmt->store_result(); if ($stmt->num_rows == 1) { // If the user exists get variables from result. $stmt->bind_result($password); $stmt->fetch(); $login_check = hash('sha512', $password . $user_browser); if (hash_equals($login_check, $login_string) ){ // Logged In!!!! return true; } else { // Not logged in return false; } } else { // Not logged in return false; } } else { // Not logged in return false; } } else { // Not logged in return false; } } function esc_url($url) { if ('' == $url) { return $url; } $url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url); $strip = array('%0d', '%0a', '%0D', '%0A'); $url = (string)$url; $count = 1; while ($count) { $url = str_replace($strip, '', $url, $count); } $url = str_replace(';//', '://', $url); $url = htmlentities($url); $url = str_replace('&', '&', $url); $url = str_replace("'", ''', $url); if ($url[0] !== '/') { // We're only interested in relative links from $_SERVER['PHP_SELF'] return ''; } else { return $url; } } ?> autentica_usuario.php <?php /** * Created by PhpStorm. * User: blx32 * Date: 7/10/16 * Time: 1:35 PM */ include_once 'inc/db_connect.php'; include_once 'inc/functions.php'; sec_session_start(); // Our custom secure way of starting a PHP session. if (isset($_POST['email'], $_POST['p'])) { $email = $_POST['email']; $password = $_POST['p']; // The hashed password. if (login($email, $password, $mysqli) == true) { // Login success header('Location: protected_page.php'); } else { // Login failed header('Location: index.php?error=1'); } } else { // The correct POST variables were not sent to this page. echo 'Invalid Request'; } db_connect.php <?php /** * Created by PhpStorm. * User: blx32 * Date: 7/10/16 * Time: 3:29 PM */ include_once 'global-config.php'; // As functions.php is not included $mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE); ?> E global-config.php é onde estão o define do host,user,pdw e database. register.php <?php /** * Created by PhpStorm. * User: blx32 * Date: 7/10/16 * Time: 2:20 PM */ /* * Certifique-se de que o valor de $_POST['p'] já esteja em hash a partir do javascript. Caso não esteja utilizando este método por desejar validar a senha no lado do servidor, certifique-se de utilizar hash. */ include_once 'db_connect.php'; include_once 'inc/global-config.php'; $error_msg = ""; if (isset($_POST['username'], $_POST['email'], $_POST['p'])) { // Sanitize and validate the data passed in $username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING); $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL); $email = filter_var($email, FILTER_VALIDATE_EMAIL); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { // Not a valid email $error_msg .= '<p class="error">The email address you entered is not valid</p>'; } $password = filter_input(INPUT_POST, 'p', FILTER_SANITIZE_STRING); if (strlen($password) != 128) { // The hashed pwd should be 128 characters long. // If it's not, something really odd has happened $error_msg .= '<p class="error">Invalid password configuration.</p>'; } // Username validity and password validity have been checked client side. // This should should be adequate as nobody gains any advantage from // breaking these rules. // $prep_stmt = "SELECT id FROM members WHERE email = ? LIMIT 1"; $stmt = $mysqli->prepare($prep_stmt); // check existing email if ($stmt) { $stmt->bind_param('s', $email); $stmt->execute(); $stmt->store_result(); if ($stmt->num_rows == 1) { // A user with this email address already exists $error_msg .= '<p class="error">A user with this email address already exists.</p>'; $stmt->close(); } } else { $error_msg .= '<p class="error">Database error Line 39</p>'; $stmt->close(); } // check existing username $prep_stmt = "SELECT id FROM members WHERE username = ? LIMIT 1"; $stmt = $mysqli->prepare($prep_stmt); if ($stmt) { $stmt->bind_param('s', $username); $stmt->execute(); $stmt->store_result(); if ($stmt->num_rows == 1) { // A user with this username already exists $error_msg .= '<p class="error">A user with this username already exists</p>'; $stmt->close(); } } else { $error_msg .= '<p class="error">Database error line 55</p>'; $stmt->close(); } // TODO: // We'll also have to account for the situation where the user doesn't have // rights to do registration, by checking what type of user is attempting to // perform the operation. if (empty($error_msg)) { // Create hashed password using the password_hash function. // This function salts it with a random salt and can be verified with // the password_verify function. $password = password_hash($password, PASSWORD_BCRYPT); // Insert the new user into the database if ($insert_stmt = $mysqli->prepare("INSERT INTO members (username, email, password) VALUES (?, ?, ?)")) { $insert_stmt->bind_param('sss', $username, $email, $password); // Execute the prepared query. if (! $insert_stmt->execute()) { header('Location: ../error.php?err=Registration failure: INSERT'); } } header('Location: ./register_success.php'); } } ?> A pagina login.php <?php include_once 'inc/db_connect.php'; include_once 'inc/functions.php'; sec_session_start(); if (login_check($mysqli) == true) { $logged = 'in'; } else { $logged = 'out'; } ?> <!DOCTYPE html> <html> <head> <title>Secure Login: Log In</title> <link rel="stylesheet" href="styles/main.css"/> <script type="text/JavaScript" src="sha512.js"></script> <script type="text/JavaScript" src="main.js"></script> </head> <body> <?php echo "Username: test_user Email: [email protected] Password: 6ZaxN2Vzm9NUJT2y"; if (isset($_GET['error'])) { echo '<p class="error">Error Logging In!</p>'; } ?> <form action="autentica_usuario.php" method="post" name="login_form"> Email: <input type="text" name="email"/> Password: <input type="password" name="password" id="password"/> <input type="button" value="Login" onclick="formhash(this.form, this.form.password);"/> </form> <?php if (login_check($mysqli) == true) { echo '<p>Currently logged ' . $logged . ' as ' . htmlentities($_SESSION['username']) . '.</p>'; echo '<p>Do you want to change user? <a href="inc/logoff.php">Log out</a>.</p>'; } else { echo '<p>Currently logged ' . $logged . '.</p>'; echo "<p>If you don't have a login, please <a href='register.php'>register</a></p>"; } ?> </body> </html> logoff.php (está escrito errado mas não me preocupei em mudar). <?php /** * Created by PhpStorm. * User: blx32 * Date: 7/10/16 * Time: 2:14 PM */ include_once ('functions.php'); sec_session_start(); // Unset all session values $_SESSION = array(); // get session parameters $params = session_get_cookie_params(); // Delete the actual cookie. setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"]); // Destroy session session_destroy(); header('Location: ../index.php'); protegido.php (pagina que quero proteger). <?php /** * Created by PhpStorm. * User: blx32 * Date: 7/10/16 * Time: 2:32 PM */ include_once 'inc/db_connect.php'; include_once 'inc/functions.php'; sec_session_start(); ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Secure Login: Protected Page</title> <link rel="stylesheet" href="styles/main.css"/> </head> <body> <?php if (login_check($mysqli) == true) : ?> <p>Welcome <?php echo htmlentities($_SESSION['username']); ?>!</p> <p> This is an example protected page. To access this page, users must be logged in. At some stage, we'll also check the role of the user, so pages will be able to determine the type of user authorised to access the page. </p> <p>Return to <a href="index.php">login page</a></p> <?php else : ?> <p> <span class="error">You are not authorized to access this page.</span> Please <a href="login.php">login</a>. </p> <?php endif; ?> </body> </html> sha512.js var hexcase=0;var b64pad="";function hex_sha512(a){return rstr2hex(rstr_sha512(str2rstr_utf8(a)))}function b64_sha512(a){return rstr2b64(rstr_sha512(str2rstr_utf8(a)))}function any_sha512(a,b){return rstr2any(rstr_sha512(str2rstr_utf8(a)),b)}function hex_hmac_sha512(a,b){return rstr2hex(rstr_hmac_sha512(str2rstr_utf8(a),str2rstr_utf8(b)))}function b64_hmac_sha512(a,b){return rstr2b64(rstr_hmac_sha512(str2rstr_utf8(a),str2rstr_utf8(b)))}function any_hmac_sha512(a,c,b){return rstr2any(rstr_hmac_sha512(str2rstr_utf8(a),str2rstr_utf8(c)),b)}function sha512_vm_test(){return hex_sha512("abc").toLowerCase()=="ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f"}function rstr_sha512(a){return binb2rstr(binb_sha512(rstr2binb(a),a.length*8))}function rstr_hmac_sha512(c,f){var e=rstr2binb(c);if(e.length>32){e=binb_sha512(e,c.length*8)}var a=Array(32),d=Array(32);for(var b=0;b<32;b++){a[b]=e[b]^909522486;d[b]=e[b]^1549556828}var g=binb_sha512(a.concat(rstr2binb(f)),1024+f.length*8);return binb2rstr(binb_sha512(d.concat(g),1024+512))}function rstr2hex(c){try{hexcase}catch(g){hexcase=0}var f=hexcase?"0123456789ABCDEF":"0123456789abcdef";var b="";var a;for(var d=0;d<c.length;d++){a=c.charCodeAt(d);b+=f.charAt((a>>>4)&15)+f.charAt(a&15)}return b}function rstr2b64(c){try{b64pad}catch(h){b64pad=""}var g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var b="";var a=c.length;for(var f=0;f<a;f+=3){var k=(c.charCodeAt(f)<<16)|(f+1<a?c.charCodeAt(f+1)<<8:0)|(f+2<a?c.charCodeAt(f+2):0);for(var d=0;d<4;d++){if(f*8+d*6>c.length*8){b+=b64pad}else{b+=g.charAt((k>>>6*(3-d))&63)}}}return b}function rstr2any(m,c){var b=c.length;var l,f,a,n,e;var k=Array(Math.ceil(m.length/2));for(l=0;l<k.length;l++){k[l]=(m.charCodeAt(l*2)<<8)|m.charCodeAt(l*2+1)}var h=Math.ceil(m.length*8/(Math.log(c.length)/Math.log(2)));var g=Array(h);for(f=0;f<h;f++){e=Array();n=0;for(l=0;l<k.length;l++){n=(n<<16)+k[l];a=Math.floor(n/b);n-=a*b;if(e.length>0||a>0){e[e.length]=a}}g[f]=n;k=e}var d="";for(l=g.length-1;l>=0;l--){d+=c.charAt(g[l])}return d}function str2rstr_utf8(c){var b="";var d=-1;var a,e;while(++d<c.length){a=c.charCodeAt(d);e=d+1<c.length?c.charCodeAt(d+1):0;if(55296<=a&&a<=56319&&56320<=e&&e<=57343){a=65536+((a&1023)<<10)+(e&1023);d++}if(a<=127){b+=String.fromCharCode(a)}else{if(a<=2047){b+=String.fromCharCode(192|((a>>>6)&31),128|(a&63))}else{if(a<=65535){b+=String.fromCharCode(224|((a>>>12)&15),128|((a>>>6)&63),128|(a&63))}else{if(a<=2097151){b+=String.fromCharCode(240|((a>>>18)&7),128|((a>>>12)&63),128|((a>>>6)&63),128|(a&63))}}}}}return b}function str2rstr_utf16le(b){var a="";for(var c=0;c<b.length;c++){a+=String.fromCharCode(b.charCodeAt(c)&255,(b.charCodeAt(c)>>>8)&255)}return a}function str2rstr_utf16be(b){var a="";for(var c=0;c<b.length;c++){a+=String.fromCharCode((b.charCodeAt(c)>>>8)&255,b.charCodeAt(c)&255)}return a}function rstr2binb(b){var a=Array(b.length>>2);for(var c=0;c<a.length;c++){a[c]=0}for(var c=0;c<b.length*8;c+=8){a[c>>5]|=(b.charCodeAt(c/8)&255)<<(24-c%32)}return a}function binb2rstr(b){var a="";for(var c=0;c<b.length*32;c+=8){a+=String.fromCharCode((b[c>>5]>>>(24-c%32))&255)}return a}var sha512_k;function binb_sha512(p,A){if(sha512_k==undefined){sha512_k=new Array(new int64(1116352408,-685199838),new int64(1899447441,602891725),new int64(-1245643825,-330482897),new int64(-373957723,-2121671748),new int64(961987163,-213338824),new int64(1508970993,-1241133031),new int64(-1841331548,-1357295717),new int64(-1424204075,-630357736),new int64(-670586216,-1560083902),new int64(310598401,1164996542),new int64(607225278,1323610764),new int64(1426881987,-704662302),new int64(1925078388,-226784913),new int64(-2132889090,991336113),new int64(-1680079193,633803317),new int64(-1046744716,-815192428),new int64(-459576895,-1628353838),new int64(-272742522,944711139),new int64(264347078,-1953704523),new int64(604807628,2007800933),new int64(770255983,1495990901),new int64(1249150122,1856431235),new int64(1555081692,-1119749164),new int64(1996064986,-2096016459),new int64(-1740746414,-295247957),new int64(-1473132947,766784016),new int64(-1341970488,-1728372417),new int64(-1084653625,-1091629340),new int64(-958395405,1034457026),new int64(-710438585,-1828018395),new int64(113926993,-536640913),new int64(338241895,168717936),new int64(666307205,1188179964),new int64(773529912,1546045734),new int64(1294757372,1522805485),new int64(1396182291,-1651133473),new int64(1695183700,-1951439906),new int64(1986661051,1014477480),new int64(-2117940946,1206759142),new int64(-1838011259,344077627),new int64(-1564481375,1290863460),new int64(-1474664885,-1136513023),new int64(-1035236496,-789014639),new int64(-949202525,106217008),new int64(-778901479,-688958952),new int64(-694614492,1432725776),new int64(-200395387,1467031594),new int64(275423344,851169720),new int64(430227734,-1194143544),new int64(506948616,1363258195),new int64(659060556,-544281703),new int64(883997877,-509917016),new int64(958139571,-976659869),new int64(1322822218,-482243893),new int64(1537002063,2003034995),new int64(1747873779,-692930397),new int64(1955562222,1575990012),new int64(2024104815,1125592928),new int64(-2067236844,-1578062990),new int64(-1933114872,442776044),new int64(-1866530822,593698344),new int64(-1538233109,-561857047),new int64(-1090935817,-1295615723),new int64(-965641998,-479046869),new int64(-903397682,-366583396),new int64(-779700025,566280711),new int64(-354779690,-840897762),new int64(-176337025,-294727304),new int64(116418474,1914138554),new int64(174292421,-1563912026),new int64(289380356,-1090974290),new int64(460393269,320620315),new int64(685471733,587496836),new int64(852142971,1086792851),new int64(1017036298,365543100),new int64(1126000580,-1676669620),new int64(1288033470,-885112138),new int64(1501505948,-60457430),new int64(1607167915,987167468),new int64(1816402316,1246189591))}var q=new Array(new int64(1779033703,-205731576),new int64(-1150833019,-2067093701),new int64(1013904242,-23791573),new int64(-1521486534,1595750129),new int64(1359893119,-1377402159),new int64(-1694144372,725511199),new int64(528734635,-79577749),new int64(1541459225,327033209));var s=new int64(0,0),r=new int64(0,0),J=new int64(0,0),I=new int64(0,0),G=new int64(0,0),F=new int64(0,0),E=new int64(0,0),D=new int64(0,0),C=new int64(0,0),B=new int64(0,0),m=new int64(0,0),l=new int64(0,0),t=new int64(0,0),o=new int64(0,0),z=new int64(0,0),w=new int64(0,0),u=new int64(0,0);var v,y;var n=new Array(80);for(y=0;y<80;y++){n[y]=new int64(0,0)}p[A>>5]|=128<<(24-(A&31));p[((A+128>>10)<<5)+31]=A;for(y=0;y<p.length;y+=32){int64copy(J,q[0]);int64copy(I,q[1]);int64copy(G,q[2]);int64copy(F,q[3]);int64copy(E,q[4]);int64copy(D,q[5]);int64copy(C,q[6]);int64copy(B,q[7]);for(v=0;v<16;v++){n[v].h=p[y+2*v];n[v].l=p[y+2*v+1]}for(v=16;v<80;v++){int64rrot(z,n[v-2],19);int64revrrot(w,n[v-2],29);int64shr(u,n[v-2],6);l.l=z.l^w.l^u.l;l.h=z.h^w.h^u.h;int64rrot(z,n[v-15],1);int64rrot(w,n[v-15],8);int64shr(u,n[v-15],7);m.l=z.l^w.l^u.l;m.h=z.h^w.h^u.h;int64add4(n[v],l,n[v-7],m,n[v-16])}for(v=0;v<80;v++){t.l=(E.l&D.l)^(~E.l&C.l);t.h=(E.h&D.h)^(~E.h&C.h);int64rrot(z,E,14);int64rrot(w,E,18);int64revrrot(u,E,9);l.l=z.l^w.l^u.l;l.h=z.h^w.h^u.h;int64rrot(z,J,28);int64revrrot(w,J,2);int64revrrot(u,J,7);m.l=z.l^w.l^u.l;m.h=z.h^w.h^u.h;o.l=(J.l&I.l)^(J.l&G.l)^(I.l&G.l);o.h=(J.h&I.h)^(J.h&G.h)^(I.h&G.h);int64add5(s,B,l,t,sha512_k[v],n[v]);int64add(r,m,o);int64copy(B,C);int64copy(C,D);int64copy(D,E);int64add(E,F,s);int64copy(F,G);int64copy(G,I);int64copy(I,J);int64add(J,s,r)}int64add(q[0],q[0],J);int64add(q[1],q[1],I);int64add(q[2],q[2],G);int64add(q[3],q[3],F);int64add(q[4],q[4],E);int64add(q[5],q[5],D);int64add(q[6],q[6],C);int64add(q[7],q[7],B)}var k=new Array(16);for(y=0;y<8;y++){k[2*y]=q[y].h;k[2*y+1]=q[y].l}return k}function int64(b,a){this.h=b;this.l=a}function int64copy(b,a){b.h=a.h;b.l=a.l}function int64rrot(c,a,b){c.l=(a.l>>>b)|(a.h<<(32-b));c.h=(a.h>>>b)|(a.l<<(32-b))}function int64revrrot(c,a,b){c.l=(a.h>>>b)|(a.l<<(32-b));c.h=(a.l>>>b)|(a.h<<(32-b))}function int64shr(c,a,b){c.l=(a.l>>>b)|(a.h<<(32-b));c.h=(a.h>>>b)}function int64add(g,b,f){var d=(b.l&65535)+(f.l&65535);var c=(b.l>>>16)+(f.l>>>16)+(d>>>16);var a=(b.h&65535)+(f.h&65535)+(c>>>16);var e=(b.h>>>16)+(f.h>>>16)+(a>>>16);g.l=(d&65535)|(c<<16);g.h=(a&65535)|(e<<16)}function int64add4(j,m,l,k,i){var h=(m.l&65535)+(l.l&65535)+(k.l&65535)+(i.l&65535);var g=(m.l>>>16)+(l.l>>>16)+(k.l>>>16)+(i.l>>>16)+(h>>>16);var f=(m.h&65535)+(l.h&65535)+(k.h&65535)+(i.h&65535)+(g>>>16);var e=(m.h>>>16)+(l.h>>>16)+(k.h>>>16)+(i.h>>>16)+(f>>>16);j.l=(h&65535)|(g<<16);j.h=(f&65535)|(e<<16)}function int64add5(l,o,n,m,k,j){var i=(o.l&65535)+(n.l&65535)+(m.l&65535)+(k.l&65535)+(j.l&65535);var h=(o.l>>>16)+(n.l>>>16)+(m.l>>>16)+(k.l>>>16)+(j.l>>>16)+(i>>>16);var g=(o.h&65535)+(n.h&65535)+(m.h&65535)+(k.h&65535)+(j.h&65535)+(h>>>16);var f=(o.h>>>16)+(n.h>>>16)+(m.h>>>16)+(k.h>>>16)+(j.h>>>16)+(g>>>16);l.l=(i&65535)|(h<<16);l.h=(g&65535)|(f<<16)}; main.js /** * Created by blx32 on 7/10/16. */ function formhash(b,a){var c=document.createElement("input");b.appendChild(c);c.name="p";c.type="hidden";c.value=hex_sha512(a.value);a.value="";b.submit()}function regformhash(f,d,c,b,a){if(d.value==""||c.value==""||b.value==""||a.value==""){alert("You must provide all the requested details. Please try again");return false}e=/^\w+$/;if(!e.test(f.username.value)){alert("Username must contain only letters, numbers and underscores. Please try again");f.username.focus();return false}if(b.value.length<6){alert("Passwords must be at least 6 characters long. Please try again");f.password.focus();return false}var e=/(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}/;if(!e.test(b.value)){alert("Passwords must contain at least one number, one lowercase and one uppercase letter. Please try again");return false}if(b.value!=a.value){alert("Your password and confirmation do not match. Please try again");f.password.focus();return false}var g=document.createElement("input");f.appendChild(g);g.name="p";g.type="hidden";g.value=hex_sha512(b.value);b.value="";a.value="";f.submit();return true}; o BD CREATE DATABASE `secure_login`; CREATE USER 'sec_user'@'localhost' IDENTIFIED BY 'eKcGZr59zAa2BEWU'; GRANT SELECT, INSERT, UPDATE ON `secure_login`.* TO 'sec_user'@'localhost'; CREATE TABLE `secure_login`.`members` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `username` VARCHAR(30) NOT NULL, `email` VARCHAR(50) NOT NULL, `password` CHAR(128) NOT NULL ) ENGINE = InnoDB; CREATE TABLE `secure_login`.`login_attempts` ( `user_id` INT(11) NOT NULL, `time` VARCHAR(30) NOT NULL ) ENGINE=InnoDB /* Username: test_user Email: [email protected] Password: 6ZaxN2Vzm9NUJT2y */ INSERT INTO `secure_login`.`members` VALUES(1, 'test_user', '[email protected]', '$2y$10$IrzYJi10j3Jy/K6jzSLQtOLif1wEZqTRQoK3DcS3jdnFEhL4fWM4G'); A minha duvida é, o que posso fazer para que ele funcione completamente? Ele loga, e redireciona más na pagina que quero proteger o check_login não funciona muito bem. Ou como posso adicionar mais a informação "classe" na sessão? Desde já agradeço a todos.
  25. Oi! Eu tive que aprender a usar php muito rápido para desenvolver um projeto numa cadeira e cheguei a um ponto que travei total :(((( Como precisei aprender rápido para adaptar, acredito que estou realizando um erro até que bem idiota, mas como não tive tempo de aprender todo o básico para começar a desenvolver preciso saber: como imprimir um relacionamento NxN numa tabela? Na minha aplicação, na hora de cadastrar um produto, os surfactantes são pegos numa multi seleção e salvos numa tabelo "produto_surfactante" colocando apenas codProd e codSurf. *Ver imagem anexada* Na imagem eu deixei o nome de marca aparecendo só para não ficar vazio, contudo o objetivo é aparecer todos os nomes (nomeSurf) dos surfactantes que foram salvos, porém eu tentei diversas sugestões e nenhuma delas consegui implementar direito, e por isto preciso de ajuda :x **tentei usar um produtosurfview para ter todos os nomes fáceis de pegar, mas se tiver uma alternativa melhor sou 10000000000000000000% a favor! *Código da função que mostra os valores na tabela* public function dataviewProd($query) { $stmt = $this->conn->prepare($query); $stmt->execute(); if($stmt->rowCount()>0) { while($row=$stmt->fetch(PDO::FETCH_ASSOC)) { //takes the name of "Marca" $codM = $row['codMarca']; $stmtM = $this->conn->prepare("SELECT nomeMarca FROM marca WHERE codMarca = :codM;"); $stmtM->execute(array(":codM"=>$codM)); $nomeMarca = $stmtM->fetch(PDO::FETCH_ASSOC)['nomeMarca']; ////takes the name of "Tipo de produto" $codTP = $row['codTipoProd']; $stmtTP = $this->conn->prepare("SELECT nomeTipoProd FROM tipodeproduto WHERE codTipoProd = :codTP;"); $stmtTP->execute(array(":codTP"=>$codTP)); $nomeTipoProd = $stmtTP->fetch(PDO::FETCH_ASSOC)['nomeTipoProd']; //this one should take the names of all "surfactantes" separated by "," $nomeProd = $row['nomeProd']; //$stmtPSV = $this->conn->prepare("SELECT s.nomeSurf //FROM produtosurfview psv // INNER JOIN surfactante s // ON psv.Surfactante = s.codSurf //WHERE psv.NomeProduto = {$nomeProd};"); //$stmtPSV->execute(array(":nomeProd"=>$nomeProd)); //$stmtPSV->setFetchMode(PDO::FETCH_ASSOC); //$prodsurf = $stmtPSV->fetch(PDO::FETCH_ASSOC); ?> <tr> <td><?php print($row['codProd']); ?></td> <td><?php print($row['nomeProd']); ?></td> <td><?php print($row['tipoCab']); ?></td> <td><?php print($nomeMarca); ?></td> <td><?php print($nomeTipoProd); ?></td> <td><?php print($nomeMarca); ?></td> <td align="center"> <a class='btn btn-warning btn-sm' href="alterarProduto.php?edit_id=<?php print($row['codProd']); ?>" role='button'> <span class='glyphicon glyphicon-pencil' aria-hidden='true'></a> </td> <td align="center"> <a class='btn btn-danger btn-sm' href="deletarProduto.php?delete_id=<?php print($row['codProd']); ?>" role='button'> <span class='glyphicon glyphicon-trash' aria-hidden='true'></span></a> </td> </tr> <?php } } else { ?> <tr> <td>Nada ainda cadastrado...</td> </tr> <?php } } O que ficou como comentário foi um último teste que tentei realizar e acabei deixando parte dele aí.
×
×
  • Create New...