manoaj 12 Denunciar post Postado Novembro 3, 2012 Warning: preg_match() [<a href='function.preg-match'>function.preg-match</a>]: No ending delimiter '!' found in C:\wamp\www\admin\paginas\add_slide.php on line 24 pessoal ta dando esse erro nessas função ai alguem sabe o pq if(!preg_match("/^image/(pjpeg|jpeg|png|gif|bmp)$/", $upload_img["type"])){ $error[1] = "Isso não é uma imagem."; } Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Novembro 3, 2012 testei aqui deu outro erro Unknown modifier '(' funcinou quando alterei a ER para: if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", 'lol.lol')){ $error[1] = "Isso não é uma imagem."; } pelo jeito você estava fechando a ER, adicionei um escape na '/'. /^image/(pjpeg|jpeg|png|gif|bmp)$/ Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Novembro 3, 2012 é parou de da o erro vou testar aqui :D obrigado @shini kkk parou de da um erro mas não faz o upload kkk ta tenso esse codigo tava dando erro naquela função mas agora o codigo retorna o erro da largura da imagem ous eja ele ta retornando o primeiro erro que vem sendo que to tentando upar um arquivo bem inferior de 302kb so sera que tem alguma coisa haver com a função preg_match ou eu errei em outro lugar <?php // Se o usuário clicou no botão cadastrar efetua as ações if(isset($_POST['inserir']) && $_POST['inserir'] == 'inserir'){ // Recupera os dados dos campos $titulo_img = strip_tags(trim($_POST['titulo_img'])); $alt_img = strip_tags(trim($_POST['alt_img'])); $link_img = strip_tags(trim($_POST['link_img'])); $upload_img = $_FILES['upload_img']; // Se a foto estiver sido selecionada if (!empty($upload_img["name"])) { // Largura máxima em pixels $largura = 960; // Altura máxima em pixels $altura = 300; // Tamanho máximo do arquivo em bytes $tamanho = 5000; // Verifica se o arquivo é uma imagem if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $upload_img["type"])){ $error[1] = "Isso não é uma imagem."; } // Pega as dimensões da imagem $dimensoes = getimagesize($upload_img["tmp_name"]); // Verifica se a largura da imagem é maior que a largura permitida if($dimensoes[0] > $largura) { $error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels"; } // Verifica se a altura da imagem é maior que a altura permitida if($dimensoes[1] > $altura) { $error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels"; } // Verifica se o tamanho da imagem é maior que o tamanho permitido if($upload_img["size"] > $tamanho) { $error[4] = "A imagem deve ter no máximo ".$tamanho." bytes"; } // Se não houver nenhum erro if (count($error) == 0) { // Pega extensão da imagem preg_match("/.(gif|bmp|png|jpg|jpeg){1}$/i", $upload_img["name"], $ext); // Gera um nome único para a imagem $nome_imagem = md5(uniqid(time())) . "." . $ext[1]; // Caminho de onde ficará a imagem $caminho_imagem = "../uploads/slide/" . $nome_imagem; // Faz o upload da imagem para seu respectivo caminho move_uploaded_file($upload_img["tmp_name"], $caminho_imagem); // Insere os dados no banco $sql = mysql_query("INSERT INTO slide (link_img, alt_img, title_img) VALUES ('$link_img', '$alt_img', '$titulo_img', '$nome_imagem')"); // Se os dados forem inseridos com sucesso if ($sql){ echo "Novo imagem de slide inserida com sucesso!."; } } // Se houver mensagens de erro, exibe-as if (count($error) != 0) { foreach ($error as $erro) { echo $erro . " "; } } } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Novembro 3, 2012 testei aqui com uma imagem pequena e so retornou undefined $error nas linhas 44: if (count($error) == 0) { linha 65 if (count($error) > 0) { uma sugestão é você trasnformar essas variaveis em constantes pois elas n mudam e tornam o codigo mais organizado. $largura = 960; $altura = 300; $tamanho = 3000; $caminho_imagem = "../uploads/slide/" . Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Novembro 3, 2012 bom mas então se eu trasnformar essas variaveis em constantes e como faser isto os erros iriam parar ou o probelma é outro ? bom mas então se eu trasnformar essas variaveis em constantes os erros iriam parar ou o probelma é outro ? pq meu problema é exatamente esse quando não são os dois erros nas linhas if (count($error) == 0) { é a exibição indevida da mensagem de erro não to entendo o pq desses erros! Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Novembro 4, 2012 as constantes são boas praticas rs n vão resolver o problema. Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Novembro 4, 2012 as constantes são boas praticas rs n vão resolver o problema. kkkkkkkkkkkkkkkkkkkkkk então você pode ma ajudar a descobrir qual seria o problema do codigo? Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Novembro 4, 2012 to tentando. sera q essa conversão ai n esta errada? da uma olhada no link. http://mon-ip.awardspace.com/bytes_conversor.php Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Novembro 4, 2012 é parece que estava kk mas eu usei agora um valor de 41943040bytes equivalente sa 5mbs então o erro agora esta somente nas linhas if (count($error) == 0) { if (count($error) != 0) { aparentemente são os dois erros agora:/ Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Novembro 4, 2012 esse ai é facil é so declarar $error antes do if. $error = 0; if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $upload_img["type"])){ $error[1] = "Isso não é uma imagem."; } Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Novembro 4, 2012 esse ai é facil é so declarar $error antes do if. $error = 0; if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $upload_img["type"])){ $error[1] = "Isso não é uma imagem."; } Warning: Invalid argument supplied for foreach() deu erro nesta linha foreach ($error as $erro) { logo depois do if (count($error) != 0) { codigo atualmente <div class="info"> <img class="imgtitle" src="images/icons/upp_image.png" width="64" height="64" />Adicione novas imagens ao slide</div> <?php // Se o usuário clicou no botão cadastrar efetua as ações if(isset($_POST['inserir']) && $_POST['inserir'] == 'inserir'){ // Recupera os dados dos campos $titulo_img = strip_tags(trim($_POST['titulo_img'])); $alt_img = strip_tags(trim($_POST['alt_img'])); $link_img = strip_tags(trim($_POST['link_img'])); $upload_img = $_FILES['upload_img']; // Se a foto estiver sido selecionada if (!empty($upload_img["name"])) { // Largura máxima em pixels $largura = 960; // Altura máxima em pixels $altura = 300; // Tamanho máximo do arquivo em bytes $tamanho = 41943040; $error = 0; // Verifica se o arquivo é uma imagem if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $upload_img["type"])){ $error[1] = "Isso não é uma imagem."; } // Pega as dimensões da imagem $dimensoes = getimagesize($upload_img["tmp_name"]); // Verifica se a largura da imagem é maior que a largura permitida if($dimensoes[0] > $largura) { $error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels"; } // Verifica se a altura da imagem é maior que a altura permitida if($dimensoes[1] > $altura) { $error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels"; } // Verifica se o tamanho da imagem é maior que o tamanho permitido if($upload_img["size"] > $tamanho) { $error[4] = "A imagem deve ter no máximo ".$tamanho." Bytes"; } // Se não houver nenhum erro if (count($error) == 0) { // Pega extensão da imagem preg_match("/.(gif|bmp|png|jpg|jpeg){1}$/i", $upload_img["name"], $ext); // Gera um nome único para a imagem $nome_imagem = md5(uniqid(time())) . "." . $ext[1]; // Caminho de onde ficará a imagem $caminho_imagem = "../uploads/slide/" . $nome_imagem; // Faz o upload da imagem para seu respectivo caminho move_uploaded_file($upload_img["tmp_name"], $caminho_imagem); // Insere os dados no banco $sql = mysql_query("INSERT INTO slide (link_img, alt_img, title_img) VALUES ('$link_img', '$alt_img', '$titulo_img', '$nome_imagem')"); // Se os dados forem inseridos com sucesso if ($sql){ echo "Novo imagem de slide inserida com sucesso!."; } } // Se houver mensagens de erro, exibe-as if (count($error) != 0) { foreach ($error as $erro) { echo "<div class=\"alert_warning \">$erro.</div>"; } } } } ?> <form action="" method="post" id="admin_form" name="upload_img" enctype="multipart/form-data"> <table cellspacing="0" cellpadding="0" class="formtable"> <tr> <td>Imagem:<img src="images/required.png" alt="Required Field" class="tooltip poshytip" title="Campo obrigatório"></td> <td> <input name="upload_img" type="file" id="upload_img" size="54" /></td> </tr> <tr> <td width="200"> </td> <td> </td> </tr> <tr> <td>Titulo:<img src="images/required.png" alt="Required Field" class="tooltip poshytip" title="Campo obrigatório"></td> <td><input name="titulo_img" type="text" class="inputbox" value="" size="55"/></td> </tr> <tr> <td colspan="2"> </td> </tr> <tr> <td>Texto alternativo:<img src="images/required.png" alt="Required Field" class="tooltip poshytip" title="Campo obrigatório" /></td> <td><input name="alt_img" type="text" class="inputbox" value="" size="55"/> <img class="poshytip" title="Caso a imagem não apareça por algum motivo um erro este texto ira subistituila!" src="images/icons/info2.png" width="16" height="16" /></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td>Link:</td> <td><input name="link_img" type="text" class="inputbox" value="" size="55"/> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td colspan="2"><input type="submit" name="inserir" class="button" value="Adicionar ao Slide" /></td> </tr> </table> <input name="inserir" type="hidden" value="inserir" /> </form> Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Novembro 4, 2012 muda a declaração de $error: $error = array(); Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Novembro 4, 2012 muda a declaração de $error: $error = array(); como assim explica melhor e pq não entendo muito ainda (Iniciante). :blush: quer que eu mude o $error = 0; para $error = array(); Compartilhar este post Link para o post Compartilhar em outros sites
shini 318 Denunciar post Postado Novembro 4, 2012 é para evitar esse erro: Cannot use a scalar value as an array Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Novembro 4, 2012 é para evitar esse erro: Cannot use a scalar value as an array Mano os erros pararam o problema agora é só que não ta inserindo mesmo eu clico em inserir e não inseri o registro no banco :/ codigo atual <div class="info"> <img class="imgtitle" src="images/icons/upp_image.png" width="64" height="64" />Adicione novas imagens ao slide</div> <?php // Se o usuário clicou no botão cadastrar efetua as ações if(isset($_POST['inserir']) && $_POST['inserir'] == 'inserir'){ // Recupera os dados dos campos $titulo_img = strip_tags(trim($_POST['titulo_img'])); $alt_img = strip_tags(trim($_POST['alt_img'])); $link_img = strip_tags(trim($_POST['link_img'])); $upload_img = $_FILES['upload_img']; // Se a foto estiver sido selecionada if (!empty($upload_img["name"])) { // Largura máxima em pixels $largura = 960; // Altura máxima em pixels $altura = 300; // Tamanho máximo do arquivo em bytes $tamanho = 41943040; $error = array(); // Verifica se o arquivo é uma imagem if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $upload_img["type"])){ $error[1] = "Isso não é uma imagem."; } // Pega as dimensões da imagem $dimensoes = getimagesize($upload_img["tmp_name"]); // Verifica se a largura da imagem é maior que a largura permitida if($dimensoes[0] > $largura) { $error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels"; } // Verifica se a altura da imagem é maior que a altura permitida if($dimensoes[1] > $altura) { $error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels"; } // Verifica se o tamanho da imagem é maior que o tamanho permitido if($upload_img["size"] > $tamanho) { $error[4] = "A imagem deve ter no máximo ".$tamanho." Bytes"; } // Se não houver nenhum erro if (count($error) == 0) { // Pega extensão da imagem preg_match("/.(gif|bmp|png|jpg|jpeg){1}$/i", $upload_img["name"], $ext); // Gera um nome único para a imagem $nome_imagem = md5(uniqid(time())) . "." . $ext[1]; // Caminho de onde ficará a imagem $caminho_imagem = "../uploads/slide/" . $nome_imagem; // Faz o upload da imagem para seu respectivo caminho move_uploaded_file($upload_img["tmp_name"], $caminho_imagem); // Insere os dados no banco $sql = mysql_query("INSERT INTO slide (link_img, alt_img, title_img) VALUES ('$link_img', '$alt_img', '$titulo_img', '$nome_imagem')"); // Se os dados forem inseridos com sucesso if ($sql){ echo "Novo imagem de slide inserida com sucesso!."; } } // Se houver mensagens de erro, exibe-as if (count($error) != 0) { foreach ($error as $erro) { echo "<div class=\"alert_warning \">$erro.</div>"; } } } } ?> <form action="" method="post" id="admin_form" name="upload_img" enctype="multipart/form-data"> <table cellspacing="0" cellpadding="0" class="formtable"> <tr> <td>Imagem:<img src="images/required.png" alt="Required Field" class="tooltip poshytip" title="Campo obrigatório"></td> <td> <input name="upload_img" type="file" id="upload_img" size="54" /></td> </tr> <tr> <td width="200"> </td> <td> </td> </tr> <tr> <td>Titulo:<img src="images/required.png" alt="Required Field" class="tooltip poshytip" title="Campo obrigatório"></td> <td><input name="titulo_img" type="text" class="inputbox" value="" size="55"/></td> </tr> <tr> <td colspan="2"> </td> </tr> <tr> <td>Texto alternativo:<img src="images/required.png" alt="Required Field" class="tooltip poshytip" title="Campo obrigatório" /></td> <td><input name="alt_img" type="text" class="inputbox" value="" size="55"/> <img class="poshytip" title="Caso a imagem não apareça por algum motivo um erro este texto ira subistituila!" src="images/icons/info2.png" width="16" height="16" /></td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td>Link:</td> <td><input name="link_img" type="text" class="inputbox" value="" size="55"/> </td> </tr> <tr> <td> </td> <td> </td> </tr> <tr> <td colspan="2"><input type="submit" name="inserir" class="button" value="Adicionar ao Slide" /></td> </tr> </table> <input name="inserir" type="hidden" value="inserir" /> </form> Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Novembro 4, 2012 Essa forma de validar um tipo de arquivo está errada (não é segura), o correto é validar o mime type do arquivo. :seta: Como descobrir o mime type de um dado arquivo A mesma coisa só que com verificação de tipos simplificada. :seta: Como definir os mime types válidos de um tipo de arquivo Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Novembro 4, 2012 gostei :D vou passar usar esta forma :clap: mas ainda tenho que descobrir meu problema na inserção :upset: tem alguma ideia sobre? Pessoal eu fui ver aqui ele faz o upload das fotos mas não inseri o registro no banco de dados :/ oque ta acontecendo sera? Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Novembro 4, 2012 pessoal refiz o codigo dessa vez funcionou mas tive um erro que não interfreriu no funcionamento do codigo mas eu queria saber o pq dele olhem <?php if (isset($_POST['inserir']) && $_POST['inserir'] == 'gravar') { $title_img = strip_tags(trim($_POST['title_img'])); $alt_img = strip_tags(trim($_POST['alt_img'])); $link_img = strip_tags(trim($_POST['link_img'])); if (empty($title_img)) { $retorno = '<span>Digite o titulo da imagem!</span>'; }elseif (empty($alt_img )){ $retorno = '<span>Digite um texto alternativo</span>'; }if (empty($retorno)) { $_UP['pasta'] = '../uploads/slide/'; $_UP['tamanho'] = 960 * 300 * 2; $_UP['extensoes'] = array ('jpg', 'jpeg', 'png', 'gif'); $_UP['renomeia'] = true; $_UP['errors'][0] = 'Não tivemos errors'; $_UP['errors'][1] = 'A Pasta não foi encontrada'; $_UP['errors'][2] = 'O tamanho da imagem e maior que o permitido'; $_UP['errors'][3] = 'As extensões permitidas para o envio do arquivo são: jpg, png e gif'; $_UP['errors'][4] = 'Não foi feito o upload de sua imagem, já existia outra com o mesmo nome'; $retorno = ''; if ($_FILES['arquivo']['errors'] != 0) { die("Não foi possivel enviar sua imagem o erro foi:" . $_UP['errors'][$_FILES['arquivo']['errors']]); exit; } $extensao = strtolower(end(explode('.', $_FILES['arquivo']['name']))); if (array_search($extensao, $_UP['extensoes']) === false) { echo "Formato da imagem não e válido, envie com as extensões: jpg, gif ou png!"; } else if ($_UP['tamanho'] < $_FILES['arquivo']['size']) { echo "O arquivo não pode ter mais de 2mb"; } else { if ($_UP['renomeia'] == true) { $nome_final = md5(time()).'.jpeg'; }else{ $nome_final = $_FILES['arquivo']['name']; } $tam_name = getimagesize($_FILES['arquivo']['tmp_name']); if ($tam_name[0] >= '961') { echo "A imagem deve ter a largura menor ou igual a 960px"; } if ($tam_name[1] >= '301') { echo "A imagem deve ter a altura menor ou igual a 300px"; }else if (move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta'] . $nome_final)) { $cadastro = mysql_query("INSERT INTO slide (link_img, alt_img, title_img, images) VALUES ('$link_img', '$alt_img', '$title_img', '$nome_final')"); if ($cadastro == 1){ echo '<span>Seu cadastro foi realizado com suscesso, Obrigado por fazer parte de nosso site!</span>'; }else { echo '<span>Erro ao cadastrar, tente novamente</span>'; } } } } if ($retorno == 0){ echo "$retorno"; }else{ } } ?> Notice: Undefined index: errors in o erro é nessa linha aqui if ($_FILES['arquivo']['errors'] != 0) { Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Novembro 4, 2012 De acordo com o manual, não é errors, é error, no singular. E prefira usar as constantes do PHP. Hoje essa comparação é feita com zero, amanhã pode ser xyz851redeculturasãopaulo, então faça: if ($_FILES['arquivo']['errors'] != UPLOAD_ERR_OK ) E se previna desde já. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Novembro 4, 2012 kkk nao mas o erros ali no codigo não é uma constante ele é transformando em constante pra exibir o erro depois erros as error mas de qualquer forma obrigado resolvel meu problema :clap: Compartilhar este post Link para o post Compartilhar em outros sites