Hoje vamos aprender a fazer um Filtro de palavras inapropriadas com substiuição de palavras. Poderá ser implementado no seu sistema de mural de recados, comentários de artigos ou fotos, enfim vamos ao que interessa.

Nessa parte vamos criar uma tabela no banco de dados para armazenar as palavras que queremos filtrar.


CREATE TABLE IF NOT EXISTS `filtro_palavras` (
  `Codigo` int(4) NOT NULL AUTO_INCREMENT,
  `MsgErrada` varchar(200) DEFAULT NULL,
  `MsgCorreta` varchar(200) DEFAULT '--',
  PRIMARY KEY (`Codigo`),
  UNIQUE KEY `MsgErrada` (`MsgErrada`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='armazena filtros de palavras' AUTO_INCREMENT=1 ;

Agora vamos criar a função que vai fazer todo o trabalho.
Crie um arquivo chamado filtro.php e coloque o codigo abaixo.


//conexão com o banco de dados
$conexao = mysql_connect('servidor', 'usuario', 'senha') or die(mysql_error());
//seleciona banco de dados
$db = mysql_select_db('banco', $conexao) or die(mysql_error());

// função para Filtrar palavras inapropriadas
function filtro($mensagem)
{
    if ($mensagem) {
        $resultado = mysql_query("SELECT * FROM filtro_palavras");
        while ($mostra = mysql_fetch_array($resultado)) {
            $mensagem= str_replace($mostra['MsgErrada'], $mostra['MsgCorreta'],  $mensagem);
        }
    }
    return $mensagem;
}
?

Para chamar a função dentro do seu código siga o exemplo abaixo:

//inclue a função
include('filtro.php');

//chama a função
filtro("frase mural recado")

Se tiver alguma duvida, é so postar.

Um pacotão completo e gratuito que inclui Apache, PHP5, MySQL database, PHPmyadmin e SQLitemanager!

O WAMP5 (que significa Windows, Apache, MySQL, PHP5) é um pacote de programas que instala automaticamente o Apache 1.331, PHP5, MySQL database, PHPmyadmin e SQLitemanager. Disponibiliza também suporte ao uso de scripts PHP e comporta vários add-ons encontrados no site oficial.

Com esse pacote você poderá fazer sua página na Internet com muito mais vantagens e vai incrementar ele com muitos mais recursos. Também tornará o site mais dinâmico e rápido conforme a sua habilidade e conforme o servidor de onde você vai hospedar.

Também é possível criar um servidor que possa hospedar e armazenar dados ou páginas da Internet em um banco de dados.

Baixar
Para baixar clique aqui

O que é?

Apache:

É um dos maiores servidores de web livre e foi criado em cima de códigos já prontos.O servidor é compatível com o protocolo HTTP. Para saber mais sobre as funcionalidades visite o site oficial do Apache (em inglês).

PHP5:

PHP ao pé da letra significa Hypertext Preprocessor. De maneira geral, o PHP é uma linguagem livre orientada a objetos que cria scripts simples. Scripts são partes de um código que executam alguma função. O PHP5 veio com algumas mudanças para tornar a linguagem um pouco mais forte: é possível refazer construtores e os destruir, com maior visibilidade no acesso, abstração de objetos e, por fim, a interface de objetos.

Para mais informações sobre o programa, visite o site oficial do PHP (em inglês).

MySQL database:

MySQL é um sistema gerenciador de banco de dados (SGDB) que funciona de forma estruturada. Possui um excelente desempenho e é um software livre. Compatível com muitos drivers e também módulos de interfaces para muitas linguagens de programação. Suporta vários tipos de tabelas.

Para mais informações sobre o MySQL database, visite o site oficial do MySQL (em inglês).

PHPmyadmin:

Programa desenvolvido para a parte administrativa do PHP. É possível criar e deletar bases de dados ou tabelas. É possível que você faça alterações nas suas tabelas, campos, enfim, tudo o que você precisar alterar na sua base de dados.

SQLitemanager:

É o sistema gerenciador do SQL. Você pode aplicar o SQLitemanager na hora que estiver montando o seu banco de dados com o MySQL database, que também é incluso no pacote do WAMP5.

Quando você instalar o WAMP5, todos os arquivos são copiados no diretório que você escolher. Se você preferir baixar os programas inclusos no WAMP5 separadamente, confira alguns deles que o Baixaki já disponibilizou para você: PHP5, Apache e o phpMyAdmin.

Fonte: Baixaki

Continuando a primeira aula, vamos gerar a exibição da enquete.

Assista a video aula para entender cada arquivo, estou explicando detalhadamente.

Começando crie um arquivo chamado conexao.php

//este arquivo é responsavel pela conexao do banco de dados
$host = "localhost";
$database = "enquete";
$login_db = "root";
$senha_db = "pass123";

$conexao = mysql_connect ($host, $login_db, $senha_db) or die ("Erro: ".mysql_error());
$db = mysql_select_db($database);

Agora vamos criar o arquvo enquete.php para mostrar nossa enquete.
A imagem abaixo mostra como será o resultado no final.

Enquete

////////////////arquivo enquete_comentar.php


/*
desenvolvido por Fabiano Bento
http://www.fabianobento.com.br
*/
//arquivo CSS de estilos


//java script para validar formulário




//verifica se existe a variavel ACT no GET if(isset($_GET['act'])){ $act = $_GET['act']; switch ($act) { case "escrever": echo "Escreva seu comentário!"; //cria o formulário e envia para o mesmo arquivo e seta avariavel act
Nome:
E-mail:
Cidade:
Estado:
Comentário:

 
//termina o switct break; //verifica se o valor de ACT é igual a inc case "inc": //chama o arquivo de conexao com o banco require_once('inc/conexao.php'); $codigo_enquete = $_POST['codigo_enquete']; $ip = getenv('REMOTE_ADDR'); $provedor = gethostbyaddr($_SERVER['REMOTE_ADDR']); $datahora = date(" Y-m-d H:i:s"); $form_nome = $_POST['nome']; $form_email = $_POST['email']; $form_cidade = $_POST['cidade']; $form_uf = $_POST['uf']; $form_comentario = $_POST['comentario']; $form_btn_comentar = $_POST['btn_comentar']; $enqcStatus = "A"; //grava os dados dentro da tabela enquetes comentarios $sql = " INSERT INTO enquetes_comentarios (`enqcCodigo` ,`enqcCodEnquete` ,`enqcIpEnvio` ,`enqcProvedorEnvio` ,`enqcDtHrEnvio` ,`enqcNome` ,`enqcEmail` ,`enqcCidade` ,`enqcUF` ,`enqcComentario` ,`enqcStatus`)VALUES (' ', '$codigo_enquete', '$ip', '$provedor', '$datahora', '$form_nome', '$form_email', '$form_cidade', '$form_uf', '$form_comentario', '$enqcStatus')"; mysql_query("$sql"); echo ""; echo ""; break; } } ?>

Tela do formulário do arquivo enquete_comentar.php
Tela formulário comentário

Explicando o conteudo e funcionamento de cada arquivo.
*Lembrando que o texto antes da barra é o nome da pasta.

enquete/inc/conexao.php - função que conecta no banco de dados
enquete/enquete.php - este arquivo mostra a enquete com as opções para votar e links para comentar e resultado
enquete/enquete_resultado.php - aqui mostra o resultado da enquete e comentários
enquete/enquete_comentar.php - este é o formulário para envio dos comentarios
enquete/enquete_votar.php - este arquivo recebe os dados do arquivo enquete.php e grava a opções escolhida no banco de dados

Nesta aula, vou ensinar com desenvolver um sistema de enquetes para ilimitadas enquetes.
Primeiro nos vamos criar o banco de dados e as tabelas para armazenar as enquetes, os votos, comentarios, e log de registros os votos.

Assista ao video para entender sobre cada coluna das tabelas

O SQL das tabelas;

//tabela enquetes

CREATE TABLE IF NOT EXISTS `enquetes` (
  `enqCodigo` int(10) NOT NULL AUTO_INCREMENT COMMENT 'codigo da enquete',
  `enqDtCadastro` date NOT NULL COMMENT 'data do cadastro',
  `enqNmEnquete` varchar(200) NOT NULL COMMENT 'pergunta da enquete',
  `enqOpcao1` varchar(150) NOT NULL COMMENT 'resposta 1',
  `enqOpcao2` varchar(150) NOT NULL COMMENT 'resposta 2',
  `enqOpcao3` varchar(150) NOT NULL COMMENT 'resposta 3',
  `enqOpcao4` varchar(150) NOT NULL COMMENT 'resposta 4',
  `enqOpcao5` varchar(150) NOT NULL COMMENT 'resposta 5',
  `enqOpcao6` varchar(150) NOT NULL COMMENT 'resposta 6',
  `enqOpcao7` varchar(150) NOT NULL COMMENT 'resposta 7',
  `enqOpcao8` varchar(150) NOT NULL COMMENT 'resposta 8',
  `enqOpcao9` varchar(150) NOT NULL COMMENT 'resposta 9',
  `enqOpcao10` varchar(150) NOT NULL COMMENT 'resposta 10',
  `enqVotos1` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 1',
  `enqVotos2` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 2',
  `enqVotos3` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 3',
  `enqVotos4` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 4',
  `enqVotos5` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 5',
  `enqVotos6` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 6',
  `enqVotos7` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 7',
  `enqVotos8` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 8',
  `enqVotos9` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 9',
  `enqVotos10` int(10) NOT NULL DEFAULT '0' COMMENT 'htis 10',
  `enqDtInicioExibicao` date NOT NULL COMMENT 'data inicio da exiicao',
  `enqDtFinalExibicao` date NOT NULL COMMENT 'data final da exibicao',
  `enqStatus` enum('A','I') NOT NULL DEFAULT 'A' COMMENT 'ativo ou inativo',
  PRIMARY KEY (`enqCodigo`,`enqNmEnquete`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='Entidade para os dados das enquetes' AUTO_INCREMENT=1 ;


//tabela enquetes_comentarios

CREATE TABLE IF NOT EXISTS `enquetes_comentarios` (
  `enqcCodigo` int(20) NOT NULL AUTO_INCREMENT COMMENT 'codigo do comentario',
  `enqcCodEnquete` int(10) NOT NULL,
  `enqcIpEnvio` varchar(30) NOT NULL COMMENT 'ip do usuario',
  `enqcProvedorEnvio` varchar(150) NOT NULL COMMENT 'provedor do ip',
  `enqcDtHrEnvio` datetime NOT NULL COMMENT 'data e hora do envio',
  `enqcNome` varchar(40) NOT NULL COMMENT 'nome que quem enviou',
  `enqcEmail` varchar(60) NOT NULL COMMENT 'email de quem envu',
  `enqcCidade` varchar(150) NOT NULL,
  `enqcUF` char(2) NOT NULL,
  `enqcComentario` mediumtext NOT NULL COMMENT 'comentáro',
  `enqcStatus` enum('A','I') NOT NULL,
  PRIMARY KEY (`enqcCodigo`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='Entidade para os comentários das enquetes' AUTO_INCREMENT=1 ;


//tabela enquete_log

CREATE TABLE IF NOT EXISTS `enquetes_log` (
  `enqlCodigo` int(30) NOT NULL AUTO_INCREMENT COMMENT 'codigo do envio',
  `enqlCodEnquete` int(10) NOT NULL COMMENT 'codigo da enquete',
  `enqlIpEnvio` varchar(30) NOT NULL COMMENT 'ip que enviou',
  `enqlDtHrEnvio` datetime NOT NULL COMMENT 'data e hora do envio',
  `enqlOpcao` varchar(5) NOT NULL,
  PRIMARY KEY (`enqlCodigo`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='Entidade para os dados de log dos votos' AUTO_INCREMENT=2 ;

Para começar a escrever sua primeira página em PHP, crie um arquivo chamado teste1.php no diretório root do servidor web.
Coloque dentro do arquivo teste1.php o seguinte codigo

1
2
3
<?php
echo "Minha primeira página em PHP";
?>

Abra o navegador e acesse o endereço do servidor web http://localhost/teste1.php
Se ocorrer tudo certo vai apacer na pagina “Minha primeira página em PHP”.

Em breve estarei mostrando como instalar um servidor web em seu computador para começar a desenvolver paginas em php.

PHP

PHP (um acrónimo recursivo para “PHP: Hypertext Preprocessor”) é uma linguagem de programação de computadores interpretada, livre e muito utilizada para gerar conteúdo dinâmico na World Wide Web.

Principais características

A linguagem PHP é uma linguagem de programação de domínio específico, ou seja, seu escopo se estende a um campo de atuação que é o desenvolvimento web, embora tenha variantes como o PHP-GTK. Seu propósito principal é de implementar soluções web velozes, simples e eficientes.

Características:

* Velocidade e robustez
* Estruturado e orientação a objeto
* Portabilidade – independência de plataforma – escreva uma vez, rode em qualquer lugar;
* Tipagem fraca
* Sintaxe similar a Linguagem C/C++ e o PERL

Praticamente em todos os servidores de hospedagem de sites suporta PHP.

O PHP tem suporte a vários protocolos e banco de dados como MySQL, Oracle, Firebird, interbase, Mssql sybase, PostgreSQL entre outros. Alem de oferecer OO (orientação a objeto) a partir da versão 5 que foi lançada em 2004.

Fonte: partes do texto foram tirados do site Wikipédia

Olá pessoal, neste artigo vou mostrar como armazenar arquivos em modo binário no MySQL usando o PHP, e como recuperar estes arquivos para usá-los depois.

No banco de dados(MySQL) usaremos o campo do tipo BLOB é utilizado para armazenar arquivos binários e são dividivo em 4 tipos; TINYBLOB, BLOB, MEDIUMBLOB e LONGBLOB, a diferença é a capacidade de armazenar os dados.
Lembrando que podemos usar colunas do tipo TEXT para armazenar informações binarias também, abaixo a comparação.

-TINYBLOB, TINYTEXT – tamanho máximo de 255 – 256 Bytes

-BLOB, TEXT – tamanho máximo de 65535 – 64KB

-MEDIUMBLOB, MEDIUMTEXT – tamanho máximo de 16777215 – 16 MB

-LONGBLOB, LONGTEXT – tamanho máximo de 4294967295 – 4 GB

Observação:
-Na maioria dos servidores de hospedagem compartilhada o tipo LONGBLOB é configurada para suportar entre 50MB a 200 MB para manter o bom funcionamento do servidor.
-E que você deve analisar a real necessidade de armazenar o arquivo dentro do banco, pois isto faria sua base ficar gigante, e na maioria dos casos é gravado somente a URL(caminho do arquivo) no banco.

você poderá ler mais sobre especificaçõe de colunas do MySQL no link:
http://dev.mysql.com/doc/refman/4.1/pt/column-types.html

1° – Passo

O primeiro passo é criarmos o banco de dados e a tabela para armazenar nossos arquivos;
no exemplo o banco será chamado binario

CREATE DATABASE binario;

Agora crie uma tabela com o nome arquivos seguindo a estrutura abaixo;

CREATE TABLE `binario`.`arquivos` (
`Codigo` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Codigo',
`NmArquivo` VARCHAR( 150 ) NOT NULL COMMENT 'nome original',
`Descricao` VARCHAR( 200 ) NULL COMMENT 'descrição do arquivo',
`Arquivo` MEDIUMBLOB NOT NULL COMMENT 'dados do arquivo',
`Tipo` VARCHAR( 15 ) NOT NULL COMMENT 'Tipo do arquivo, jpeg, doc, mp3, etc..',
`Tamanho` INT NOT NULL COMMENT 'Tamanho em bytes',
`DtHrEnvio` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Data e Hora de envio'
) ENGINE = MYISAM ;
 
/*
Claro que você deve implementar a tabela conforme a necessidade do seu projeto.
*/

2° – Passo

O proximo passo é criar um formulário HTML, para fazermos UPLOAD do arquivo que será gravado.
Não vou entrar em detalhes dos comandos HTML.

<pre escaped=”true” lang=”html” line=”1″>
form id=”upload” action=”upload_binario.php” enctype=”multipart/form-data” method=”post”

<label>
<input id=”file” name=”file” type=”file” />
</label>

<input id=”enviar” name=”enviar” type=”submit” value=”Enviar arquivo…” />
/form

</pre>

3° – Passo

Este é o ultimo passo para envio do arquivo para o banco de dados.
Antes de prosseguir crie um arquivo para conexao com o banco de dados.

//conexao.inc.php
$conexao = mysql_connect("localhost","root","password");
 mysql_select_db("binario");

Crie um arquivo chamado upload_binario.php

require_once('conexao.inc.php');
 
//recupera os dados enviados atraves do formulário
//NOME TEMPORÁRIO
$file_tmp = $_FILES["file"]["tmp_name"];
 //NOME DO ARQUIVO NO COMPUTADOR
$file_name = $_FILES["file"]["name"];
//TAMANHO DO ARQUIVO
$file_size = $_FILES["file"]["size"];
//MIME DO ARQUIVO
$file_type = $_FILES["file"]["type"];
 
//antes de ler o conteudo do arquivo você pode fazer upload para compactar em .ZIP ou .RAR, no caso de imagem você poderá redimensionar o tamanho antes de gravar no banco. Claro que depende da sua necessidade.
 
//Para fazer UPLOAD poderá usar COPY ou MOVE_UPLOADED_FILE
//copy($file_tmp, "caminho/pasta/$file_name");
//move_uploaded_file($file_tmp,"caminho/pasta/$file_name");
 
//lemos o  conteudo do arquivo usando afunção do PHP  file_get_contents
$binario = file_get_contents($file_tmp);
// evitamos erro de sintaxe do MySQL
$binario = mysql_real_escape_string($binario);
 
//montamos o SQL para envio dos dados
$sql = "INSERT INTO `binario`.`arquivos` (`Codigo` ,`NmArquivo` ,`Descricao` , `Arquivo` ,`Tipo` ,`Tamanho` ,`DtHrEnvio`)
VALUES ('NULL', 'foto.jpg', '$file_name', '$binario', '$file_type', '$file_size', CURRENT_TIMESTAMP)";
//executamos a instução SQL
mysql_query("$sql") or die (mysql_error());
?

Exibindo ou baixando o arquivo do banco de dados.
Vamos criar um arquivo chamado listar.php para mostrar todos arquivos gravados em nossa tabela arquivos e o link para visualizar o arquivo.

require_once('conexao.inc.php');
 
$consulta = "SELECT `Codigo`,`NmArquivo`,`Descricao`,`Tipo`,`Tamanho` 	FROM `arquivos`";
$resultado = mysql_query($consulta);
 
while($dados = mysql_fetch_array($resultado)){
$Codigo = $dados['Codigo'];
echo " | Arquivo: " . $dados['NmArquivo'];
echo " | Descriçao:" . $dados['Descricao'];
echo " | Tipo:" . $dados['Tipo'];
echo " | Tamanho:" . $dados['Tamanho']; // você pode fazer divisão por 1024 para mostrar em MB
echo " &gt;&gt; <a href="ver_arquivo.php?codigo=$Codigo" target="_blank" rel="noopener">Ver arquivo</a>";
}
 
?

Agora criaremos o arquivo ver_arquivo.php que será responsável por mostrar o arquivo do banco de dados, selecionado

require_once('conexao.inc.php');
 
//recuperar o codigo do arquivo atraves do metodo GET
$codigo= $_GET['codigo'];
 
$consulta = "SELECT `Arquivo`,`Tipo` FROM `arquivos` WHERE Codigo= ' ".$codigo." ' ";
$resultado = mysql_query($consulta);
 
$dados = mysql_fetch_array($resultado);
$tipo = $dados['Tipo'];
$Arquivo = $dados['Arquivo'];
 
   //EXIBE ARQUIVO  - se o navegador não oferecer suporte para a extensão sera solicita dowload do arquivo
   header("Content-type: ".$tipo."");
   echo $Arquivo;
 
?

file_get_contents — Lê todo o conteúdo de um arquivo para uma string
mysql_real_escape_string — Escapa os caracteres especiais numa string para usar em um comando SQL, levando em conta o
copy — Copia arquivo
move_uploaded_file — Move um arquivo enviado para uma nova localização

Download – banco
binario.sql

Pessoal basicamente é isto, um script que poderá ser usado de várias maneiras e melhorado por você conforme sua necessidade.