Notice: Undefined index:
Boa noite, estava revendo uma página que criei a algum tempo usando alguns códigos colhidos na internet. A página em questão, pede que o usuário faça o upload de uma foto, onde o script trata de sobrepor uma mascara (.png / marca d'água). Quando instalei o xampp e fui testar, fui surpreendido por esta mensagem e não estou conseguindo encontrar uma solução para o problema.
Segue abaixo, o código da página:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
<title>Avatarizador 3.0</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/ie10-viewport-bug-workaround.css" rel="stylesheet">
<link href="starter-template.css" rel="stylesheet">
<!--[if lt IE 9]><script src="js/ie8-responsive-file-warning.js"></script><![endif]-->
<script src="js/js/ie-emulation-modes-warning.js"></script>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<?PHP
switch($_POST['cor']){
case 'preto' :
$image_path = "avatares/preto.png";
break;
case 'branco':
$image_path = "avatares/branco.png";
break;
case 'colorido':
$image_path = "avatares/colorido.png";
break;
default:
break;
}
function watermark_image($oldimage_name, $new_image_name){
global $image_path;
list($owidth,$oheight) = getimagesize($oldimage_name);
$width = 800;
$height = 800;
$im = imagecreatetruecolor($width, $height);
$img_src = imagecreatefromjpeg($oldimage_name);
imagecopyresampled($im, $img_src, 0, 0, 0, 0, $width, $height, $owidth, $oheight);
$watermark = imagecreatefrompng($image_path);
list($w_width, $w_height) = getimagesize($image_path);
$pos_x = $width - $w_width;
$pos_y = $height - $w_height;
imagecopy($im, $watermark, $pos_x, $pos_y, 0, 0, $w_width, $w_height);
imagejpeg($im, $new_image_name, 100);
imagedestroy($im);
unlink($oldimage_name);
return true;
}
$demo_image= "";
if(isset($_POST['createmark']) and $_POST['createmark'] == "Criar Avatar"){
$path = "uploads/";
$valid_formats = array("jpg","bmp","jpeg");
$name = $_FILES['imgfile']['name'];
if(strlen($name)){
list($txt, $ext) = explode(".", $name);
if(in_array($ext,$valid_formats)&& $_FILES['imgfile']['size'] <= 10*256*1024)
{
$upload_status = move_uploaded_file($_FILES['imgfile']['tmp_name'], $path.$_FILES['imgfile']['name']);
if($upload_status){
$new_name = $path.time().".jpg";
if(watermark_image($path.$_FILES['imgfile']['name'], $new_name))
$demo_image = $new_name;
}
}
else
$msg = "A foto tem que ter menos que 2,5mb.";
}
}
# Conta quantos arquivos existem na pasta de upload
$diretorio = scandir("uploads/");
$qtd = count($diretorio) - 2;
?>
<div class="container">
<div class="starter-template">
<h1>Avatarizador 3.0</h1>
<h6>Já foram criadas <strong><?PHP echo ("$qtd"); ?></strong> fotos com o avatar do EREA Salvador.</h6>
<form name="imageUpload" id="imageUpload" enctype="multipart/form-data" method="post">
<div class="form-group">
<p class="help-block">Escolha uma foto de tamanho <b>QUADRADO</b></p>
<br>
<center>
<input type="file" name="imgfile" id="imgfile">
<br>
<select name="cor">
<option value="preto">Preto</option>
<option value="branco">Branco</option>
<option value="colorido">Colorido</option>
</select>
</center>
</div>
<input type="submit" class="btn btn-default" name="createmark" id="createmark" value="Criar Avatar" />
<?php
if(!empty($demo_image)){
echo '
<center>
<br>
<b>Click na imagem para fazer o download</b>
<br><br>
<a href="'.$demo_image.'" download>
<img width="45%" id="avatar" src="'.$demo_image.'" />
</a>
</center>
';
$arquivo = "rastro.txt";
date_default_timezone_set('America/Bahia');
$data = date('d/m/Y H:i:s', time());
$ip = $_SERVER['REMOTE_ADDR'];
$browser = $_SERVER['HTTP_USER_AGENT'];
$fp = fopen($arquivo, "a+");
fwrite($fp,"Arquivo: $new_name | Data: $data | IP: $ip | Navegador: $browser \n\r");
fclose($fp);
}
?>
</form>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
window.jQuery || document.write('<script src="js/vendor/jquery.min.js"><\/script>')
</script>
<script src="js/bootstrap.min.js"></script>
<script src="js/ie10-viewport-bug-workaround.js"></script>
</body>
</html>
Além disso tudo, gostaria do auxílio dos companheiros para bolar uma forma mais efetiva de funcionamento do código, como sobrepor mais de um .png na imagem final, o que possibilitaria ao usuário da página personalizar a imagem final com várias marcas d'água
ObrigadoDiscussão (1)
Carregando comentários...