Ir para conteúdo
Magago

Notice: Undefined index:

Recommended Posts

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

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Andersonografia
      Gostaria de agradecer o topico do Tonga (topic/436039-resolvido refresh/) pois me esclareceu a criar um método prático para certificar se o form vem do botão ou do F5.
      Vou esclarecer também que só tenho essa necessidade quando o primeiro form do documento é um input, porque na maioria dos meus casos sempre é um search.  
       
      No Value do botão eu coloco o time:
      <button type="submit" name="carga" class="button" value="<?PHP echo $time;?>"> Coloco a condição se estiver setado e se for diferente da sessão:
      if(isset($_POST['carga'])) { $compara = ($_POST['carga']); if($compara != $_SESSION['compara']) { E depois do insert, ainda dentro da condição eu gravo a variável na sessão:
      $_SESSION['compara'] = $compara; Obrigado mais uma vez ao Tonga e ao Forum. Se alguém souber de um método mais prático, por gentileza será muito útil divulgar!!!!
    • Por marciosena2
      Ola pessoal, alguém me ajuda nisso, com um exemplo em código.
      Apos preencher os dados em um outro domínio enviados com _post quero receber o valor gerado em de um  parâmetro, no meu site 
    • Por raphaelgs
      Preciso de uma ajuda para fazer três campos Metabox(array) diferente efetuar a soma e no quarto metabox mostre o total dos três campos segue abaixo o código.
      array(
      ‘id’ => ‘renda1’, // Obrigatório
      ‘label’ => __( ‘Renda R$:’, ‘odin’ ), // Obrigatório
      ‘type’ => ‘input’, // Obrigatório
      ‘default’ => ”, // Opcional (deve ser o id de uma imagem em mídias, separe os
      ids com virtula)
      ‘description’ => __( ‘Somente números inteiros’, ‘odin’ ), // Opcional
      ‘attributes’ => array( // Optional (html input elements)
      ‘type’ => ‘number’,
      ‘max’ => 99999,
      ‘min’ => 0
      )
      ),
      array(
      ‘id’ => ‘renda3’, // Obrigatório
      ‘label’ => __( ‘Renda R$:’, ‘odin’ ), // Obrigatório
      ‘type’ => ‘input’, // Obrigatório
      ‘default’ => ”, // Opcional (deve ser o id de uma imagem em mídias, separe os
      ids com virtula)
      ‘description’ => __( ‘Somente números inteiros’, ‘odin’ ), // Opcional
      ‘attributes’ => array( // Optional (html input elements)
      ‘type’ => ‘number’,
      ‘max’ => 99999,
      ‘min’ => 0
      )
      ),
      array(
      ‘id’ => ‘renda3’, // Obrigatório
      ‘label’ => __( ‘Renda R$:’, ‘odin’ ), // Obrigatório
      ‘type’ => ‘input’, // Obrigatório
      ‘default’ => ”, // Opcional (deve ser o id de uma imagem em mídias, separe os
      ids com virtula)
      ‘description’ => __( ‘Somente números inteiros’, ‘odin’ ), // Opcional
      ‘attributes’ => array( // Optional (html input elements)
      ‘type’ => ‘number’,
      ‘max’ => 99999,
      ‘min’ => 0
      )
      ),
      array(
      ‘id’ => ‘total’, // Obrigatório
      ‘label’ => __( ‘Renda R$:’, ‘odin’ ), // Obrigatório
      ‘type’ => ‘input’, // Obrigatório
      ‘default’ => ”, // Opcional (deve ser o id de uma imagem em mídias, separe os
      ids com virtula)
      ‘description’ => __( ‘Somente números inteiros’, ‘odin’ ), // Opcional
      ‘attributes’ => array( // Optional (html input elements)
      ‘type’ => ‘number’,
      ‘max’ => 99999,
      ‘min’ => 0
      )
      ),
    • Por PeeWee
      Olá pessoal, estou aqui novamente enrolado com php, tenho o seguinte formulario:
       
      <form name="form1" method="post" action="colaboradorCadastrado.php" enctype="multipart/form-data" onSubmit="return confere()">
                      <?php
                      echo "<input type='text' name='nome' placeholder='Nome'><br><br>";
                      echo "<input type='text' name='email' placeholder='Email'><br><br>";
                      echo "<input type='text' name='password' placeholder='Senha'><br><br>";
                      echo "<input type='text' name='password2' placeholder='Confirme a senha'>";
                      echo "<input type='file' name='arquivo'/>";
       
      o que ocorre é que preciso fazer uma validação das informações através de um script que está em form1, mas também preciso pegar a informação do name=arquivo na pagina colaboradorCadastrado.php por que lá utilizarei o index name para fazer as validações. Pelo que percebi ao se utilizar o onsubmit me parece que faz com que o action deixe de funcionar. Tentei declarar uma variavel javascript e pegar na proxima pagina gurdando numa variavel php, só que dae nao consigo utilizar como um index nas validações. Será que alguem sabe como resolver? 
    • Por lucasvbl
      Estou com problema com retorno de uma api, na documentação ele fala que tem que fazer uma requisição post...
       
      Como deveria receber essa informação no php? por favor me ajudem !
×

Informação importante

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