<? 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)