Hunrrum ok André vlw ajudou basto obgOpa... me perdoe.
Realmente eu não tinha notado os prepared statements no código.
Realmente eles ajudam a previnir SQLInjection... mas mesmo assim não é bom confiar somente neles.
Faça a 'limpeza' dos dados no envio dos formulários com javascript e a 'limpeza' na página PHP que vc utiliza para receber os dados... e segurança é a base de um sistema bom, então se previnir nunca é demais.
Sobre o Singleton existem diversas formas de se usar e aplicar ... você pode aplicar em um método ... ou em uma instância da classe que seria o objeto.
Neste caso você está usando em um objeto que ficará com a conexão ... agora você evita o excesso de conexões desnecessárias e usará somente uma o que irá te dar uma performance maior.
![]()
![]()
Espero ter ajudado.
- Fórum WMO
- → Viewing Profile: Posts: flavianog
Community Stats
- Group Usuários
- Active Posts 5
- Profile Views 285
- Member Title Novato no fórum
- Age Age Unknown
- Birthday Birthday Unknown
-
Sexo
Male
-
Localidade
mossoro
User Tools
Friends
flavianog hasn't added any friends yet.
Posts I've Made
In Topic: Class.Conexaopdo.Php
06/07/2010, 15:32
In Topic: Class.Conexaopdo.Php
05/07/2010, 22:17
[quote name='André Manoel' date='05/07/2010, 10:55' timestamp='1278338141' post='1001044']
Bem ...
Em relação a desempenho ela influencia na seguinte questão...
Ela não tem um tratamento para a criação de vários objetos.
Ou seja, se você chamar a função conexao diversas vezes... ele criará diversas conexões diferentes com o banco.
Existe um padrão de projeto chamado Singleton que trata esse problema.
E em questão de SQLInjection esta classe não realiza nenhum tratamento.
Então se alguém tentar realizar a invasão utilizando essa técnica ele pode conseguir acesso a todos os dados do banco... e isso não é legal...
Então você pode fazer o seguinte... tratar as entradas de SQL Injection quando você recebe os dados dos formulários ou criar a função para tratamento dentro desta classe...
[/quote]
André modifiquei a classe para usar Singleton ela esta funcionando ta cadastrando no banco o que eu gostaria de saber é se usei o singleton corretamente se realmente so vai haver uma conexão msm eu chamando diversa vezes esta função e a respeito do SQL injection estou conectando no banco através do pdo usando prepared statment isso num já evita o usao de SQL injection? Mas em todo casado coloque um addslashes no recebimento dos dados
class.conexao.php
<?php
define("HOST","localhost");
define("DBNAME","testar");
define("USER","user");
define("PASS","123456");
class Conexao{
private static $PDOinstance;
static public function singleton(){
if(!isset(self::$instance)){
try {
self::$PDOinstance = new PDO('mysql:host='.HOST.';dbname='.DBNAME,USER,PASS);
self::$PDOinstance->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}catch (PDOException $e) {
print "Houve um erro com a conexão ao banco de dados <br/> ".$e->getMessage();
}
}
}
public function inserir($tabela = "",$array =""){
$ax = 0;
foreach($array as $auxCampoBd => $vlr){
if($ax == 0){
$campoBd .= $auxCampoBd;
$campoBd2 .= "?";
$ax = 1;
}
else{
$campoBd .= ",".$auxCampoBd;
$campoBd2 .= ",?";
}
}
if($tabela[1] == 1)//se for uma inserçao atravez de um procedure entra aqui
$sql = 'call '.$tabela[0].'('.$campoBd2.')';
else if($tabela[1] == 2)//Se for uma inserção direto na tabela entra aqui
$sql = ' INSERT INTO '.$tabela[0].'('.$campoBd.') VALUES ('.$campoBd2.') ';
try {
$i = 1;
$query = self::$PDOinstance->prepare($sql);
foreach($array as $auxcampo => $auxValor){
foreach($auxValor as $auxValor2 => $tipo){
$query->bindValue($i++,$auxValor2,$tipo);
}
}
$query->execute();
}catch (PDOException $e) {
echo $e->getMessage();
}
}
}
?>
acesso.php
<?php include_once 'class.conexao.php'; $tabela[0] = "usuario"; $tabela[1] = 2; $dados = array(); // Conluna tipo do vaalor // na qual o valor valor que será inserido que será inserido // será inserido $dados['nome'][trim((!get_magic_quotes_gpc()) ? addslashes($_POST['nome']) : $_POST['nome'])] = PDO::PARAM_STR; $dados["sobrenome"][trim((!get_magic_quotes_gpc()) ? addslashes($_POST['sobrenome']) : $_POST['sobrenome'])] = PDO::PARAM_STR; $dados["email"][trim((!get_magic_quotes_gpc()) ? addslashes($_POST['email']) : $_POST['email'])] = PDO::PARAM_STR; Conexao::singleton();//abrindo conexao; $conexao = new Conexao(); $conexao->inserir($tabela,$dados);[/quote]
In Topic: [Resultado] Problema Com Resultado Do Script Php
05/07/2010, 02:02
Olá,
Sou novato e estou tendo dificuldade em utilzar um script simples em PHP. Estou tentando enviar o formulário do meu site por e-mail, mas está dando erro.
Alguém pode apontar onde estou errando?
Coloquei abaixo os códigos que usei para análise. Cheguei a enviar para o servidor para testar mas aparece a seguinte mensagem de erro quando envio:
Parse error: syntax error, unexpected '<' in /home/vicservicos/www/enviar.php on line 10
O código que criei com a ajuda de um tutorial foi o seguinte:
<form action="enviar.php" method="post" name="form_contato" id="form_contato">
<table width="80%" border="0" align="center">
<tr bgcolor="#D8E9B4">
<td width="25%"><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><strong>Nome:</strong></font></td>
<td width="75%">
<input name="nome" type="text" id="nome" size="60" maxlength="80"></td>
</tr>
<tr bgcolor="#D8E9B4">
<td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><strong>E-mail:</strong></font></td>
<td>
<input name="email" type="text" id="email" size="60" maxlength="80"></td>
</tr>
<tr bgcolor="#D8E9B4">
<td><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><strong>Assunto:</strong></font></td>
<td>
<input name="assunto" type="text" id="assunto" size="60" maxlength="100"></td>
</tr>
<tr bgcolor="#D8E9B4">
<td valign="top"><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><strong>Mensagem:</strong></font></td>
<td>
<textarea name="mensagem" cols="60" rows="5" id="mensagem"></textarea></td>
</tr>
<tr bgcolor="#D8E9B4">
<td> </td>
<td>
<input name="Enviar" type="submit" id="Enviar" value="Enviar">
<input name="limpar" type="reset" id="limpar" value="Limpar"></td>
</tr>
</table>
</form>
Meu arquivo enviar.php ficou assim:
<?php
<?php $msg="Nome do usuário:\t$nome\n";?>
<?php $msg="E-maul do usuário:\t$email\n";?>
<?php $msg="Assunto:\t$assunto\n";?>
<?php $msg="Mensagem:\t$mensagem\n";?>
<?php $msg="Enviar:\t$enviar\n";?>
$cabecalho = "Para: DWMX \n";
$cabecalho = "Cc: $email \n\n;"
mail("contato@vicservicos.com" , "Cntato" , $msg , $cabecalho") ;
echo"<h1 align=center>Mensagem enviada com sucesso!, $nome</h1>";
echo"<p align=center>Em breve entraremos em contato.</p>";
?>
Desde já agradeço quem puder me ajudar.
tente assim
<?php
$msg="Nome do usuário:\t$nome\n";
$msg="E-maul do usuário:\t$email\n";
$msg="Assunto:\t$assunto\n";
$msg="Mensagem:\t$mensagem\n";
$msg="Enviar:\t$enviar\n";
$cabecalho = "Para: DWMX \n";
$cabecalho = "Cc: $email \n\n;"
mail("contato@vicservicos.com" , "Cntato" , $msg , $cabecalho") ;
echo"<h1 align=center>Mensagem enviada com sucesso!, $nome</h1>";
echo"<p> align=center>Em breve entraremos em contato.</p>";
?>
- Fórum WMO
- → Viewing Profile: Posts: flavianog
- Privacy Policy
- Regras ·



Postagens