Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

manoaj

Warning: preg_match()

Recommended Posts

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

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

é 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

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

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

as constantes são boas praticas rs n vão resolver o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

é 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

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

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

muda a declaração de $error:

 

$error = array();

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

é para evitar esse erro:

Cannot use a scalar value as an array

Compartilhar este post


Link para o post
Compartilhar em outros sites

é 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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.