Código PHP funciona no FF 3 mas não no IE7
Tenho um formulário onde o usuário insere uma notícia:
<html>
<head>
<title>Criar Notícia</title>
<link rel="stylesheet" type="text/css" href="estilos.css" media="all">
</head>
<body>
<h1>Criar Notícia</h1>
<?php
function __autoload($classe) {
require_once $classe . ".class.php";
}
$site = new Site();
$site->verificar_permissao("index.php", 8);
?>
<form method="post" action="inserir_noticia.php" enctype="multipart/form-data">
<label for="titulo">Título</label>
<input type="text" name="titulo" />
<label for="noticia">Notícia</label>
<textarea name="noticia"></textarea>
<label for="foto">Foto</label>
<input type="file" name="foto" />
<input type="submit" value="Enviar" class="enviar" />
</form>
</body>
</html>A classe notícia:<?php
require_once "phpmailer/class.phpmailer.php";
class Noticia {
protected $titulo;
protected $noticia;
protected $foto;
public function __construct($titulo, $noticia, $foto) {
$this->titulo = $titulo;
$this->noticia = $noticia;
$this->foto = new Imagem($foto);
}
public function inserir() {
if($this->foto->verificar_tipo_mime()) {
if($this->foto->verificar_tamanho()) {
move_uploaded_file($this->foto->nome_arquivo_temporario, "fotos/" . $this->foto->nome_arquivo);
$banco = new Banco();
$sql = "INSERT INTO noticias (titulo, noticia, foto) VALUES ('" . addslashes($this->titulo) . "', '" . addslashes($this->noticia) . "', '{$this->foto->path_arquivo}');";
$banco->query($sql);
$email = new PHPMailer();
$email->Host = "smtp.mail.yahoo.com.br";
$email->IsSMTP();
$email->Port = 587;
$email->SMTPAuth = true;
$email->Username = "php_mailer@yahoo.com.br";
$email->Password = "senha";
$email->IsHTML(true);
$email->From = "php_mailer@yahoo.com.br";
$email->FromName = "Newsletter!";
$email->Subject = $this->titulo;
$sql = "SELECT email FROM emails;";
$consulta = $banco->query($sql);
for($i = 0; $i < $banco->numero_resultados($consulta); $i++) {
$resultado = $banco->array_resultados($consulta, $i, PGSQL_ASSOC);
$email->AddAddress($resultado['email']);
}
$email->Body = $this->noticia;
$email->Send();
}
else {
echo "Esta imagem é muito grande. Por favor, envie uma imagem com menos de 150 pixels de largura e altura.";
exit();
}
}
else {
echo "Tipo de arquivo inválido. Por favor, envie um tipo de imagem válida (jpeg, gif, bmp ou png).";
exit();
}
}
public function editar($codigo) {
$banco = new Banco();
$sql = "SELECT foto FROM noticias WHERE codigo = $codigo";
$resultado = $banco->array_resultados($banco->query($sql), 0, PGSQL_ASSOC);
unlink($resultado['foto']);
if($this->foto->verificar_tamanho()) {
move_uploaded_file($this->foto->nome_arquivo_temporario, "fotos/" . $this->foto->nome_arquivo);
$sql = "UPDATE noticias SET titulo = '{$this->titulo}', noticia = '{$this->noticia}', foto = '{$this->foto->path_arquivo}' WHERE codigo = $codigo;";
$banco->query($sql);
}
else
echo "Esta imagem é muito grande. Por favor, envie uma imagem com menos de 150 pixels de largura e altura.";
}
public function excluir($codigo) {
$banco = new Banco();
$sql = "SELECT foto FROM noticias WHERE codigo = $codigo";
$resultado = $banco->array_resultados($banco->query($sql), 0, PGSQL_ASSOC);
unlink($resultado['foto']);
$sql = "DELETE FROM noticias WHERE codigo = $codigo";
$banco->query($sql);
}
}
?>E a página que envia a notícia:<?php
function __autoload($classe) {
require_once $classe . ".class.php";
}
$site = new Site();
$site->verificar_permissao("index.php", 8);
$noticia = new Noticia($_POST['titulo'], nl2br($_POST['noticia']), $_FILES['foto']);
$noticia->inserir();
$site->redirecionar("index.php", 0);
?>Quando envio a notícia pelo Firefox 3 tudo funciona numa boa. Agora, quando tento enviar pelo Internet Explorer 7, aparece um erro dizendo que o formato da imagem não é válido (este, que eu criei, comparando o mime type da imagem que o usuário selecionou no campo do tipo file...). Alguma idéia do que pode ser? Muito obrigado.
Discussão (12)
Carregando comentários...