<? include "config_mysql.php";
if($_POST['enviar']){
$nome = $_POST['nome'];
$dep = $_POST['dep'];
$outro = $_POST['outro'];
$email = $_POST['email'];
$login = $_POST['login'];
$assunto = $_POST['assunto'];
$msg = $_POST['msg'];
$img = $_FILES['imagem']['name'];
if(empty($email)){
echo '<script> history.go(-1); alert("O campo email é obrigatório.");</script>'; }
elseif(strlen($email) < 10 || !strstr($email, '@') || !strstr($email, '.')){
echo '<script>alert("Utilize um e-mail válido.");history.go(-1)</script>'; }
elseif(empty($assunto)){
echo '<script> history.go(-1); alert("O campo assunto é obrigatório.");</script>';
}
elseif(empty($msg)){
echo '<script> history.go(-1); alert("O campo mensagem é obrigatório.");</script>';
}
elseif(empty($nome)){
echo '<script> history.go(-1); alert("O campo nome é obrigatório.");</script>';
}
// Prepara a variável do arquivo
//if(isset($_FILES["imagem"]) ? $_FILES["imagem"]: FALSE){ ;
if($img > 0)
{
// Tamanho máximo do arquivo (em bytes)
$config["tamanho"] = 204800;
// Formulário postado... executa as ações
if($arquivo)
{
// Verifica se o mime-type do arquivo é de imagem
if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"]))
{
echo '<script> history.go(-1); alert("Por favor, somente arquivos nas extensões .jpg, .jpeg, .png, .gif e .bmp. Verifique se seu arquivo está numa dessas extensões.");</script>'; die();
}
else
{
// Verifica tamanho do arquivo
if($arquivo["size"] > $config["tamanho"])
{
echo '<script> history.go(-1); alert("O ser arquivo tem que ser no máximo 200KB.");</script>'; die();
}
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);
// Gera um nome único para a imagem
$imagem_nome = $_FILES['imagem']['name'];
// Caminho de onde a imagem ficará
$imagem_dir = "img_contato/" . $imagem_nome;
// Faz o upload da imagem
move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
}
}
} // $img > 0
if(empty($login)){
echo '<script> history.go(-1); alert("O campo login é obrigatório.");</script>';
} else {
$cadastra_comprovante = mysql_query("INSERT INTO contato (`id_contato`, `nome`, `departamento`, `outro`, `email`, `login`, `assunto`, `mensagem`, `imagem`) VALUES ('', '$nome', '$dep', '$outro', '$email', '$login', '$assunto', '$msg', '$img')");
echo '<script> alert("Sua mensagem foi enviada com sucesso, em breve estaremos respondendo.");</script>';
echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=index.php?stein=contato'>";
}}
?>
Deixar Campo $_Files Nao Obrigatorio
Started By cezarluiz, 15/12/2009, 22:46
4 replies to this topic
#1
Posted 15/12/2009, 22:46
Pois bem, estou a 2 dias tentando deixar um formulario com um campo de upload de imagem nao obrigatorio. Eu nao gostaria da solução mastigada, meu intuito em postar isso aqui, é pra solucionar meu problema e ao mesmo tempo aprender, gostaria que vocês me dissessem aonde está o erro e se possivel explicando qual a melhor solução, e explicando essa solução, pois nao sou tao bom quanto vocês em PHP e começei a aprender a nao muito tempo. Pois bem, a script:
#2
Posted 16/12/2009, 07:32
Amigo, bom dia.
Tudo bom?
O problema é que você está dando o insert na imagem sempre! Mas quando não tem nada, ele da um insert em vazio e pode ou não achar a variável ou não permitir NULL no banco.
Uma solução é escrever dois inserts diferentes....
Se não vier imagem:
E se vier:
Vale lembrar que o código pode estar errado. É só a ideia!
E vale lembrar que para isso, o campo imagem deve permitir NULL no MySQL.
Se não der certo, volte ai.
Abraços
Mateus
Tudo bom?
O problema é que você está dando o insert na imagem sempre! Mas quando não tem nada, ele da um insert em vazio e pode ou não achar a variável ou não permitir NULL no banco.
Uma solução é escrever dois inserts diferentes....
Se não vier imagem:
$cadastra_comprovante = mysql_query("INSERT INTO contato (`id_contato`, `nome`, `departamento`, `outro`, `email`, `login`, `assunto`, `mensagem`) VALUES ('', '$nome', '$dep', '$outro', '$email', '$login', '$assunto', '$msg')");
E se vier:
$cadastra_comprovante = mysql_query("INSERT INTO contato (`id_contato`, `nome`, `departamento`, `outro`, `email`, `login`, `assunto`, `mensagem`, `imagem`) VALUES ('', '$nome', '$dep', '$outro', '$email', '$login', '$assunto', '$msg', '$img')");
Vale lembrar que o código pode estar errado. É só a ideia!
E vale lembrar que para isso, o campo imagem deve permitir NULL no MySQL.
Se não der certo, volte ai.
Abraços
Mateus
- cezarluiz likes this
#3
Posted 16/12/2009, 09:32
Opa, tudo bem sim 
Entendi.. é esse método nao ajudou... mas consegui ja arrumar
o erro estava aqui...
Retirar isso
e colocar
e depois deixar isso
assim:
Com isso ele verficaria se o arquivo estivesse diferente de "NADA", ou seja, se tivesse nullo o campo ele nao fará nada. Foi uma cosia que passou despercebida...
Valeu pela resposta, caso os moderadores queiram fechar o tópico, solução resolvida
Entendi.. é esse método nao ajudou... mas consegui ja arrumar
Retirar isso
if($img > 0)
{e colocar
if(isset($_FILES["imagem"]) ? $_FILES["imagem"]: FALSE){ ;e depois deixar isso
if($arquivo)
{assim:
if($arquivo['tmp_name'] != "")
{Com isso ele verficaria se o arquivo estivesse diferente de "NADA", ou seja, se tivesse nullo o campo ele nao fará nada. Foi uma cosia que passou despercebida...
Valeu pela resposta, caso os moderadores queiram fechar o tópico, solução resolvida
#4
Posted 16/12/2009, 11:48
Não não, você tem que verificar o código do erro com $_FILES['arquivo']['error'].
Explicação dos valores:
Valor: 0; não houve erro, o upload foi bem sucedido.
Valor: 1; O arquivo no upload é maior do que o limite definido em upload_max_filesize no php.ini.
Valor: 2; O arquivo ultrapassa o limite de tamanho em MAX_FILE_SIZE que foi especificado no formulário HTML.
Valor: 3; o upload do arquivo foi feito parcialmente.
Valor: 4; Não foi feito o upload do arquivo.
Explicação dos valores:
Valor: 0; não houve erro, o upload foi bem sucedido.
Valor: 1; O arquivo no upload é maior do que o limite definido em upload_max_filesize no php.ini.
Valor: 2; O arquivo ultrapassa o limite de tamanho em MAX_FILE_SIZE que foi especificado no formulário HTML.
Valor: 3; o upload do arquivo foi feito parcialmente.
Valor: 4; Não foi feito o upload do arquivo.
if ($_FILES['arquivo']['error'] == 0) {
echo 'upload com sucesso';
}
else {
echo 'Ocorreu um erro. Código: '.$_FILES['arquivo']['error'];
}
att,
Muller Dias
ex-administrador Fórum WMO
Muller Dias
ex-administrador Fórum WMO
#5
Posted 16/12/2009, 20:34
Ola! meu script é esse!
mas cadastrar no BD.
<?php
include "config.php";
if($_GET['acao']=="cadastra")
{
$nome = trim($_POST['nome']);
$sobrenome = trim($_POST['sobrenome']);
$email = trim($_POST['email']);
$usuario = trim($_POST['usuario']);
$info = trim($_POST['info']);
$foto = trim($_FILES['arquivo']['name']);
/* Vamos checar algum erro nos campos */
if(empty($nome)){
echo '<script> history.go(-1); alert("O campo Nome é obrigatório.");</script>'; }
elseif(empty($sobrenome)){
echo '<script> history.go(-1); alert("O campo Sobrenome é obrigatório.");</script>';
}
elseif(empty($email)){
echo '<script> history.go(-1); alert("O campo E-mail é obrigatório.");</script>';
}
elseif(strlen($email) < 10 || !strstr($email, '@') || !strstr($email, '.')){
echo '<script>alert("Utilize um e-mail válido.");history.go(-1)</script>'; }
elseif(empty($info)){
echo '<script> history.go(-1); alert("O campo Info é obrigatório.");</script>';
}
if(isset($_FILES["imagem"]) ? $_FILES["imagem"]: FALSE){ ;
// Tamanho máximo do arquivo (em bytes)
$config["tamanho"] = 204800;
// Formulário postado... executa as ações
if($arquivo['tmp_name'] != "")
{
// Verifica se o mime-type do arquivo é de imagem
if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"]))
{
echo '<script> history.go(-1); alert("Por favor, somente arquivos nas extensões .jpg, .jpeg, .png, .gif e .bmp. Verifique se seu arquivo está numa dessas extensões.");</script>'; die();
}
else
{
// Verifica tamanho do arquivo
if($arquivo["size"] > $config["tamanho"])
{
echo '<script> history.go(-1); alert("O ser arquivo tem que ser no máximo 200KB.");</script>'; die();
}
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);
// Gera um nome único para a imagem
$imagem_nome = $_FILES['arquivo']['name'];
// Caminho de onde a imagem ficará
$imagem_dir = "foto/" . $imagem_nome;
// Faz o upload da imagem
move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
}
}
} // $foto > 0
if(empty($usuario)){
echo '<script> history.go(-1); alert("O campo Usuario é obrigatório.");</script>';
} else {
/* Vamos checar se o nome de Usuário escolhido e/ou Email já existem no banco de dados */
$sql_email_check = mysql_query(
"SELECT COUNT(usuario_id) FROM usuarios WHERE email='{$email}'"
);
$sql_usuario_check = mysql_query(
"SELECT COUNT(usuario_id) FROM usuarios WHERE usuario='{$usuario}'"
);
$eReg = mysql_fetch_array($sql_email_check);
$uReg = mysql_fetch_array($sql_usuario_check);
$email_check = $eReg[0];
$usuario_check = $uReg[0];
if (($email_check > 0) || ($usuario_check > 0)){
echo "<strong>ERRO </strong>- Por favor corrija os seguintes erros abaixo: <br /> <br />";
if($email_check > 0){
echo "Este email ( <strong>".$email."</strong> ) já está sendo utilizado.<br />Por favor utilize outra conta de email! <br />";
unset($email);
}
if($usuario_check > 0){
echo "Este nome de usuário ( <strong>".$usuario."</strong> ) já está sendo utilizado.<br />Por favor utilize outro nome de usuário!<br />";
unset($usuario);
}
include "formulario_cadastro.php";
}else{
/* Se passarmos por esta verificação ilesos é hora de
finalmente cadastrar os dados. Vamos utilizar uma função para gerar a senha de
forma randômica*/
function makeRandomPassword(){
$salt = "abchefghjkmnpqrstuvwxyz0123456789";
srand((double)microtime()*1000000);
$i = 0;
while ($i <= 7){
$num = rand() % 33;
$tmp = substr($salt, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
$senha_randomica = makeRandomPassword();
$senha = md5($senha_randomica);
// Inserindo os dados no banco de dados
$info = htmlspecialchars($info);
$sql = mysql_query("INSERT INTO usuarios (nome, sobrenome, email, usuario, foto, senha, info, data_cadastro)
VALUES('{$nome}', '{$sobrenome}', '{$email}', '{$usuario}', '{$foto}', '{$senha}', '{$info}', now())")
or die( mysql_error());
if (!$sql){
echo "Ocorreu um erro ao criar sua conta, entre em contato.";
}else{
$usuario_id = mysql_insert_id();
// Enviar um email ao usuário para confirmação e ativar o cadastro!
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
$headers .= "From: Paulo Ricardo - Webmaster<eu@pauloricardo.org>";
$subject = "Confirmação de cadastro - PauloRicardo.org";
$mensagem = "Prezado {$nome} {$sobrenome},<br />
Obrigado pelo seu cadastro em nosso site, <a href='http://pauloricardo.org/'>
http://www.teusite.com.br</a>!<br /> <br />
Para confirmar seu cadastro e ativar sua conta em nosso site, podendo acessar à
áreas exclusivas, por favor clique no link abaixo ou copie e cole na barra de
endereço do seu navegador.<br /> <br />
<a href='http://pauloricardo.org/user/ativar.php?id={$usuario_id}&code={$senha}'>
http://pauloricardo.org/user/ativar.php?id={$usuario_id}&code={$senha}
</a>
<br /> <br />
Após a ativação de sua conta, você poderá ter acesso ao conteúdo exclusivo
efetuado o login com os seguintes dados abaixo:<br > <br />
<strong>Usuario</strong>: {$usuario}<br />
<strong>Senha</strong>: {$senha_randomica}<br /> <br />
Obrigado!<br /> <br />
Webmaster<br /> <br /> <br />
Esta é uma mensagem automática, por favor não responda!";
mail($email, $subject, $mensagem, $headers);
echo "Foi enviado para seu email - ( ".$email." ) um pedido de
confirmação de cadastro, por favor verifique e sigas as
instruçõs!";
}
}
}
}
?>por quê ele não esta fazendo o upload?mas cadastrar no BD.
Paulo Ricardo
Skype: sh1n0.styl3
Castanheiras, RO
Skype: sh1n0.styl3
Castanheiras, RO
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)










