Jump to content
Alberto Nascimento

[RESOLVIDO] COMO SALVAR O NOVO NOME DA IMAGEM ? ( MÉTODO UPLOAD )

Recommended Posts

Como consigo salvar o "novo nome" da imagem que foi enviada para o servidor por meio de UPLOAD no mesmo registro em que estão sendo salvos os dados do formulário no banco de dados através do PHP.

Consigo salvar os campos do formulário, mas o nome que é gerado ao enviar a imagem, não estou conseguindo.

 

<?php 

include 'conecta_mysql.inc';



if(isset($_FILES['arquivo']['name']) && $_FILES["arquivo"]["error"] == 0)
{

	echo "<center>Você enviou o arquivo: <strong>" . $_FILES['arquivo']['name'] . "</strong><br /></center>";
	echo "<center>Seu tamanho é: <strong>" . $_FILES['arquivo']['size'] . "</strong> Bytes<br /><br /></center>";

	$arquivo_tmp = $_FILES['arquivo']['tmp_name'];
	$nome = $_FILES['arquivo']['name'];
	


	$extensao = strrchr($nome, '.');


	$extensao = strtolower($extensao);

	if(strstr('.jpg;.jpeg;.gif;.png', $extensao))
	{

		$novoNome = md5(microtime()) . '.' . $extensao;
		

		$destino = 'imagens/' . $novoNome; 
		

		if( @move_uploaded_file( $arquivo_tmp, $destino  ))
		{
	
			echo "<br>";



			echo "<img src=\"" . $destino . "\" />";
			echo "<br>";

		}
		else
			echo "Erro ao salvar o arquivo. Aparentemente você não tem permissão de escrita.<br />";
	}
	else
		echo "Você poderá enviar apenas arquivos \"*.jpg;*.jpeg;*.gif;*.png\"<br />";
}
else
{
	echo "<center><h1>Você não enviou nenhum arquivo!</h1></center>";
    echo "<center><br><h3><a href='javascript:window.history.go(-1)'>Clique aqui para volta.</a></h3></center>"; 	
}




$codphoto 			 = $_POST['codphoto'];
$nome 			 = $_POST['nome'];
$datafotografia 			 = $_POST['datafotografia'];

$photography 			 = $_POST['novoNome'];


$sql = "INSERT INTO photograph VALUES";
$sql .= "( '$codphoto', '$nome', '$datafotografia', '$photography' )";

if ($conexao->query($sql) === TRUE) {
	echo  "<center> <h2> Obrigado !! Envio realizado com sucesso !! </h2></center>";
    echo "<center><br><h3><a href='LINK_SITE'>ENVIAR OUTRA FOTOGRAFIA</a></h3></center>"; 	
} else {
	echo "Erro: " . $sql . "<br>" . $conexao->error;
}





$conexao->close();

 

Share this post


Link to post
Share on other sites

Vou começar por isso:

8 horas atrás, Alberto Nascimento disse:

include 'conecta_mysql.inc';

Mesmo que o mesmo receba um código PHP sua extensão ".inc" é uma falha gravíssima de segurança pois expõe o código fonte.

Acredito eu que esse mesmo arquivo guarda informações do endereço, login e senha do banco de dados....

Pois bem qualquer um pode acessar-lo pelo browser e obter essas informações, assim sendo pode entrar no seu servidor e fazer o que quiser até mesmo remover seu acesso ao mesmo.

Dar uma olhada nesse vídeo será bem instrutivo para você

 

 

Agora nesse ponto:

8 horas atrás, Alberto Nascimento disse:

if( @move_uploaded_file( $arquivo_tmp, $destino ))

Nunca use o caractere @ pois ele irá ofuscar qualquer erro, inclusive nesse caso, se não enviar a imagem o retorno da condicional é true, ou seja não enviou mas o php irá reconhecer que enviou.

 

Agora sobre o upload da imagem.

Não vou reinventar a roda aqui pois já criei uma classe que entrega isso já mastigado:

https://github.com/Spell-Master/sm-web/blob/master/exemplos/corte-e-salvamento-de-imagens/ImageUpload.php

 

Então vamos nos concentrar no nome que terá a imagem, para isso vamos usar uma função que irá criar uma string aleatória:

<?php
function codigoAleatorio($quantidade = null) {
    $letras = (isset($quantidade) ? (int) $quantidade : 10);
    $caracteres = '0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVxXyYwWzZ0123456789';
    $retorno = "";
    $misturar = str_split($caracteres);
    for ($i = 0; $i < $letras; $i++) {
        $retorno .= $misturar[array_rand($misturar)];
    }
    return ($retorno);
}

 

Beleza então vamos fazer a coisa acontecer

Spoiler

/* Primeiro temos que saber se existe algum arquivo */
if (isset($_FILES['arquivo']) && !empty($_FILES['arquivo']['name'])) {

    // Agora verificamos se é uma imagem e se ela é jpg
    switch ($_FILES['arquivo']['type']) {
        case 'image/jpg':
        case 'image/jpeg':
        case 'image/pjpeg':
            break;
        default:
        // Se entrar aqui é porque o arquivo enviado não é uma imagem ou não é jpg
    }


    $upload = new ImageUpload('imagens'); // Instanciamos a classe para upload
    /* Obs.: O diretório de armazenamento no caso será a pasta "imagens" 
     * no mesmo diretório do arquivo que está executando isso.
     * Caso seja nessesário use:
     * __DIR__ '../../imagens/' <= ou seja desse diretório volte 2 e entre em imagens
     */
    $nome_para_imagem = codigoAleatorio() . time(); // Criamos o nome da imagem (Nesse termo é impossível coexistir 2 com o mesmo nome)
    // Enviamos então a imagem
    // Parâmetros
    // 1 - O arquivo
    // 2 - Nome que terá
    // 3 - Se for maior que 500X500 pixels redimencione a mesma para 500
    $upload->sendImage($_FILES['arquivo'], $nome_para_imagem, 500);

    // Agora verificamos se foi salva
    if ($upload->setResult()) {

        /* Esse é o real nome da imagem que foi armazenada
         * Use isso para registrar no banco de dados
         */
        $nome_da_imagem = $upload->getImgName();
    } else {
        // A imagem não foi salva
    }
}

 

 

Para finalizar:

9 horas atrás, Alberto Nascimento disse:

$codphoto = $_POST['codphoto']; $nome = $_POST['nome']; $datafotografia = $_POST['datafotografia']; $photography = $_POST['novoNome']; $sql = "INSERT INTO photograph VALUES"; $sql .= "( '$codphoto', '$nome', '$datafotografia', '$photography' )";

Faça o tratamento desses dados, simplesmente você está jogando em seu banco de dados qualquer coisa que o usuário informar, deixando sua aplicação totalmente vulnerável a sql-injetion. Ou mesmo pode ser um XSS para expor o código fonte de sua aplicação.

Share this post


Link to post
Share on other sites
5 horas atrás, Omar~ disse:

Vou começar por isso:

Mesmo que o mesmo receba um código PHP sua extensão ".inc" é uma falha gravíssima de segurança pois expõe o código fonte.

Acredito eu que esse mesmo arquivo guarda informações do endereço, login e senha do banco de dados....

Pois bem qualquer um pode acessar-lo pelo browser e obter essas informações, assim sendo pode entrar no seu servidor e fazer o que quiser até mesmo remover seu acesso ao mesmo.

Dar uma olhada nesse vídeo será bem instrutivo para você

 

 

Agora nesse ponto:

Nunca use o caractere @ pois ele irá ofuscar qualquer erro, inclusive nesse caso, se não enviar a imagem o retorno da condicional é true, ou seja não enviou mas o php irá reconhecer que enviou.

 

Agora sobre o upload da imagem.

Não vou reinventar a roda aqui pois já criei uma classe que entrega isso já mastigado:

https://github.com/Spell-Master/sm-web/blob/master/exemplos/corte-e-salvamento-de-imagens/ImageUpload.php

 

Então vamos nos concentrar no nome que terá a imagem, para isso vamos usar uma função que irá criar uma string aleatória:


<?php
function codigoAleatorio($quantidade = null) {
    $letras = (isset($quantidade) ? (int) $quantidade : 10);
    $caracteres = '0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVxXyYwWzZ0123456789';
    $retorno = "";
    $misturar = str_split($caracteres);
    for ($i = 0; $i < $letras; $i++) {
        $retorno .= $misturar[array_rand($misturar)];
    }
    return ($retorno);
}

 

Beleza então vamos fazer a coisa acontecer

  Ocultar conteúdo


/* Primeiro temos que saber se existe algum arquivo */
if (isset($_FILES['arquivo']) && !empty($_FILES['arquivo']['name'])) {

    // Agora verificamos se é uma imagem e se ela é jpg
    switch ($_FILES['arquivo']['type']) {
        case 'image/jpg':
        case 'image/jpeg':
        case 'image/pjpeg':
            break;
        default:
        // Se entrar aqui é porque o arquivo enviado não é uma imagem ou não é jpg
    }


    $upload = new ImageUpload('imagens'); // Instanciamos a classe para upload
    /* Obs.: O diretório de armazenamento no caso será a pasta "imagens" 
     * no mesmo diretório do arquivo que está executando isso.
     * Caso seja nessesário use:
     * __DIR__ '../../imagens/' <= ou seja desse diretório volte 2 e entre em imagens
     */
    $nome_para_imagem = codigoAleatorio() . time(); // Criamos o nome da imagem (Nesse termo é impossível coexistir 2 com o mesmo nome)
    // Enviamos então a imagem
    // Parâmetros
    // 1 - O arquivo
    // 2 - Nome que terá
    // 3 - Se for maior que 500X500 pixels redimencione a mesma para 500
    $upload->sendImage($_FILES['arquivo'], $nome_para_imagem, 500);

    // Agora verificamos se foi salva
    if ($upload->setResult()) {

        /* Esse é o real nome da imagem que foi armazenada
         * Use isso para registrar no banco de dados
         */
        $nome_da_imagem = $upload->getImgName();
    } else {
        // A imagem não foi salva
    }
}

 

 

Para finalizar:

Faça o tratamento desses dados, simplesmente você está jogando em seu banco de dados qualquer coisa que o usuário informar, deixando sua aplicação totalmente vulnerável a sql-injetion. Ou mesmo pode ser um XSS para expor o código fonte de sua aplicação.

 

Imagino que fiz errado... veja só:

 

<?php 

include 'conecta_mysql.inc';

// verifica se foi enviado um arquivo 
function codigoAleatorio($quantidade = null) {
    $letras = (isset($quantidade) ? (int) $quantidade : 10);
    $caracteres = '0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVxXyYwWzZ0123456789';
    $retorno = "";
    $misturar = str_split($caracteres);
    for ($i = 0; $i < $letras; $i++) {
        $retorno .= $misturar[array_rand($misturar)];
    }
    return ($retorno);
}

/* Primeiro temos que saber se existe algum arquivo */
if (isset($_FILES['arquivo']) && !empty($_FILES['arquivo']['name'])) {

    // Agora verificamos se é uma imagem e se ela é jpg
    switch ($_FILES['arquivo']['type']) {
        case 'image/jpg':
        case 'image/jpeg':
        case 'image/pjpeg':
            break;
        default:
        // Se entrar aqui é porque o arquivo enviado não é uma imagem ou não é jpg
    }


    $upload = new ImageUpload('imagens'); // Instanciamos a classe para upload
    /* Obs.: O diretório de armazenamento no caso será a pasta "imagens" 
     * no mesmo diretório do arquivo que está executando isso.
     * Caso seja nessesário use:
     * __DIR__ '../../imagens/' <= ou seja desse diretório volte 2 e entre em imagens
     */
    $nome_para_imagem = codigoAleatorio() . time(); // Criamos o nome da imagem (Nesse termo é impossível coexistir 2 com o mesmo nome)
    // Enviamos então a imagem
    // Parâmetros
    // 1 - O arquivo
    // 2 - Nome que terá
    // 3 - Se for maior que 500X500 pixels redimencione a mesma para 500
    $upload->sendImage($_FILES['arquivo'], $nome_para_imagem, 500);

    // Agora verificamos se foi salva
    if ($upload->setResult()) {

        /* Esse é o real nome da imagem que foi armazenada
         * Use isso para registrar no banco de dados
         */
        $nome_da_imagem = $upload->getImgName();
    } else {
        // A imagem não foi salva
    }
}


$codphoto = $_POST['codphoto'];
$nome = $_POST['nome'];
$datafotografia = $_POST['datafotografia'];
$photography = $_POST['novoNome'];

$sql = "INSERT INTO photograph VALUES";
$sql .= "( '$codphoto', '$nome', '$datafotografia', '$photography' )";





$conexao->close();

$php>

 

 

 

Share this post


Link to post
Share on other sites

@Alberto Nascimento Utilize da melhor forma nossa comunidade. Não use títulos de tópicos com letras maiúsculas isso é ofensivo e viola a boas práticas de uso aqui do fórum.

Também quando form mencionar uma pessoa não precisa citar tudo aquilo que ele escreveu isso polui demais seu próprio tópico, quando for citar apenas escreva um @ seguindo do nome da pessoa assim como eu fiz.

 

Agora vamos ao seu problema, que acredito eu que você não requereu os arquivos necessários, então preparei um exemplo bem completo aqui, essa é a arquitetura do exemplo

  • -  [Pasta raiz]
  • --- index.php
  • --- post.php
  • --- [Pasta class]
  • ------ ImageUpload.php
  • --- [Pasta function]
  • ------ CodigoAleatorio.php

index.php

Spoiler

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Exemplo do Upload</title>
    </head>
    <body>
        <form action="post.php" method="POST" enctype="multipart/form-data">
            <p>codphoto</p>
            <input type="text" name="codphoto" />

            <p>nome</p>
            <input type="text" name="nome" />

            <p>datafotografia</p>
            <input type="text" name="datafotografia" />

            <!--
            Nada de inputs com letras em caixa alta e baixa
            <p>novoNome</p>
            <input type="text" name="novoNome" />
            -->

            <p>novonome</p>
            <input type="text" name="novonome" />

            <p>Arquivo</p>
            <input type="file" name="arquivo" accept="" />

            <hr />
            <button type="submit">Enviar</button>
        </form>
    </body>
</html>

 

 

class/ImageUpload.php

https://github.com/Spell-Master/sm-web/blob/master/exemplos/corte-e-salvamento-de-imagens/ImageUpload.php

 

function/CodigoAleatorio.php

Spoiler

<?php
function CodigoAleatorio($quantidade = null) {
    $letras = (isset($quantidade) ? (int) $quantidade : 10);
    $caracteres = '0123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVxXyYwWzZ0123456789';
    $retorno = "";
    $misturar = str_split($caracteres);
    for ($i = 0; $i < $letras; $i++) {
        $retorno .= $misturar[array_rand($misturar)];
    }
    return ($retorno);
}

 

 

post.php

Spoiler

<?php
/* DEPURAR QUALQUER COISA ANTES DE INICIAR O MANOSEIO */
echo ('Você está recebendo isso da super global $_POST:<pre>');
var_dump($_POST);
echo ('</pre>Você está recebendo isso da super global $_FILES<pre>');
var_dump($_FILES);
echo ('</pre>');
/* *** */

$post = filter_input_array(INPUT_POST, FILTER_DEFAULT);
$codphoto = (isset($post['codphoto']) ? trim($post['codphoto']) : false);
$nome = (isset($post['nome']) ? trim($post['nome']) : false);
$datafotografia = (isset($post['datafotografia']) ? trim($post['datafotografia']) : false);
$novonome = (isset($post['novonome']) ? trim($post['novonome']) : false);

$upload_maximo = (int) preg_replace('/[^\d]+/', null, ini_get('upload_max_filesize')) . '000000';

try {
    if (!$codphoto) {
        throw new Exception('Ops! Digite algo em codphoto', 0);
    } else if (!filter_var($codphoto, FILTER_SANITIZE_STRING)) {
        throw new Exception('Ops! Você não pode usar caracteres expeciais em codphoto', 0);
    } else if (!$nome) {
        throw new Exception('Ops! Digite algo em nome', 0);
    } else if (!filter_var($nome, FILTER_SANITIZE_STRING)) {
        throw new Exception('Ops! Você não pode usar caracteres expeciais em nome', 0);
    } else if (!$datafotografia) {
        throw new Exception('Ops! Digite algo em datafotografia', 0);
    } else if (!filter_var($datafotografia, FILTER_SANITIZE_STRING)) {
        throw new Exception('Ops! Você não pode usar caracteres expeciais em datafotografia', 0);
    } else if (!$novonome) {
        throw new Exception('Ops! Digite algo em novonome', 0);
    } else if (!filter_var($novonome, FILTER_SANITIZE_STRING)) {
        throw new Exception('Ops! Você não pode usar caracteres expeciais em novonome', 0);
    } else if (!isset($_FILES['arquivo'])) {
        throw new Exception('Opa!! Alguém editou nosso html de forma malíciosa!!!', 1);
    } else if ($_FILES['arquivo']['error']) {
        throw new Exception($_FILES['arquivo']['error'], 1);
    } else if (empty($_FILES['arquivo']['name'])) {
        throw new Exception('Ops! Envie alguma imagem', 0);
    } else if ($_FILES['arquivo']['size'] > $upload_maximo) {
        throw new Exception('Ops! O arquivo é muito grande', 0);
    }
    switch ($_FILES['arquivo']['type']) {
        case 'image/jpg':
        case 'image/jpeg':
        case 'image/pjpeg':
            break;
        default:
            throw new Exception('Ops! Selecione só imagens JPG', 0);
    }

    require_once (__DIR__ . DIRECTORY_SEPARATOR . 'function' . DIRECTORY_SEPARATOR . 'CodigoAleatorio.php');
    require_once (__DIR__ . DIRECTORY_SEPARATOR . 'class' . DIRECTORY_SEPARATOR . 'ImageUpload.php');
    
    $localParaSalvar = __DIR__ . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR;
    $nomeDaImagem = CodigoAleatorio(5) . time();

    $Upload = new ImageUpload($localParaSalvar);
    $Upload->sendImage($_FILES['arquivo'], $nomeDaImagem);

    if ($Upload->getResult()) {
        $save = [
            'codphoto' => htmlentities($codphoto),
            'nome' => htmlentities($nome),
            'datafotografia' => htmlentities($datafotografia),
            'novonome' => htmlentities($novonome),
            'imagemnome' => $Upload->getImgName()
        ];
        
        /*
         * Bom daqui para fente é só gravar no banco os dados do array $save
         * $save['codphoto'], $save['nome'], etc....
         */
    }
} catch (Exception $e) {
    switch ($e->getCode()) {
        case 0:
            echo $e->getMessage();
            break;
        case 1: // Registrar Log de ERRO
            // $e->getFile(); /* Aquivo que disparou o erro */
            // $e->getFile(); /* Linha do arquivo que disparou o erro */
            // $e->getMessage(); /* Motivo do erro */
            break;
    }
}

 

 

Share this post


Link to post
Share on other sites

@Omar~ seria no caso desta forma a se fazer? 

 

Agora, quanto ao que enviou, notei que não há chamada para o banco de dados, correto?

Posso utilizar o seguinte arquivo ? Onde coloco o "include" ?

 

<?php

		//cria a conexao mysqli_connect('localizacao BD', 'usuario de acesso', 'senha', 'banco de dados')

		$conexao = mysqli_connect('', '', '', '');



		//ajusta o charset de comunicação entre a aplicação e o banco de dados

		mysqli_set_charset($conexao, 'utf8');



		//verifica a conexão

		if ($conexao->connect_error) {

		    die("Falha ao realizar a conexão: " . $conexao->connect_error);

} 



?>

E para inserir, seria este comando?

 

$sql = "INSERT INTO photograph VALUES";
$sql .= "( '$codphoto', '$nome', '$datafotografia', '$novonome' )";

 

 

 

 

Share this post


Link to post
Share on other sites

@Omar~ veja só:

 

 

Esta retornando o seguinte erro no arquivo "error_log" que é gerado dentro da pasta onde se encontram os arquivos PHP:

 

var_dump($_POST);

 

Citar

[27-Mar-2020 19:03:58 America/Fortaleza] PHP Fatal error:  Call to undefined function var_dump() in /<link>/post.php on line 4

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Wallcrawler
      Olá pessoal tudo bem? Estou tentando fazer a cópia de uma imagem que está disponível na web e salvar em uma pasta no meu projeto. Essa imagem está sob protocolo SSL mas navegador consegue acessá-la normalmente. Mas o meu script php é bloqueado, e não entendo o porquê.
       
      Segue o código que estou usando:
      <?php //error_reporting(E_ALL ^ E_DEPRECATED); //ini_set('display_errors', 1); //die('Script travado!'); $start = microtime(true); set_time_limit(0); function save_image($inPath,$outPath) { //Download images from remote server $in = fopen($inPath, 'rb'); $out = fopen($outPath, 'wb'); while ($chunk = fread($in,8192)) { fwrite($out, $chunk, 8192); } fclose($in); fclose($out); } include_once ($_SERVER['DOCUMENT_ROOT'] . '/grpi/include/classes/Rpi.class.php'); include_once ($_SERVER['DOCUMENT_ROOT'] . '/grpi/include/functions.class.php'); $func = new FuncoesAuxiliares(); $rpi = new Rpi(); if(!isset($_GET['num_processo'])) { $rows = $rpi->Consulta('select num_processo, classe, especificacao from processos order by num_processo ASC limit 1'); } else { $rows = $rpi->Consulta("select num_processo, classe, especificacao from processos where num_processo > '" . $_GET['num_processo'] . "' order by num_processo ASC limit 1"); } $registros = 0; $arrayInsert = array(); $qtd_caracteres_total = 14; foreach ($rows as $rs) { //$rs['num_processo'] $zeros = ''; $qtd_char_processo = strlen($rs['num_processo']); //Fill zeros for($i=0; $i < ($qtd_caracteres_total - $qtd_char_processo); $i++) { $zeros .= '0'; } echo('BR5' . $zeros . $rs['num_processo'] . '<br>'); $url = 'http://www.tmdn.org/tmview/trademark/image/BR5' . $zeros . $rs['num_processo']; //Aqui tento acessar a imagem e salvar na pasta correspondente save_image($url, __DIR__ .'/logo/' . $rs['num_processo'] . '.jpg'); //copy('https://www.tmdn.org/tmview/trademark/image/BR5' . $zeros . $rs['num_processo'], __DIR__ .'/logo/' . $rs['num_processo'] . '.jpg'); $processo = $rs['num_processo']; $registros++; } $registros = number_format($registros, 0, ',', '.'); // Display Script End time $time_end = microtime(true); //dividing with 60 will give the execution time in minutes other wise seconds $execution_time = ($time_end - $start)/60; //execution time of the script echo '<b>Total Execution Time:</b> '. $execution_time .' Mins <hr><br><br>Registros: ' . $registros . '<br><br>'; echo("<a href='down_logo.php?num_processo=" . $processo ."' target='_self'>Próxima página</a><br><br>"); ?> O erro retornado é o seguinte:
       
      Warning: fopen(): SSL: Connection reset by peer in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 10

      Warning: fopen(http://www.tmdn.org/tmview/trademark/image/BR500000825642590): failed to open stream: HTTP request failed! in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 10

      Warning: fread() expects parameter 1 to be resource, boolean given in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 12

      Warning: fclose() expects parameter 1 to be resource, boolean given in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 16
       
      Só que se você tentar acessar o endereço no browser, diretamente, a imagem aparece:
       
      https://www.tmdn.org/tmview/trademark/image/BR500000825642590 
       
      Onde posso estar errando? Obrigado pela atenção de todos.
    • By Artur Mendonça
      Olá amigos.
      Estou a tentar fazer um sistema para upload de vídeos para criar uma base de dados.
      Já fiz um sistema para imagens e funciona na perfeição. Adaptei este código para upload de vídeo e recebo as mensagens de erro:
      Os (...) foi que coloquei para encurtar o caminho.
       
      Código da página para seleção e upload do vídeo:
      <?php session_start(); include_once "../conexao.php"; $agid = $_REQUEST['id']; $sql = "select * from tbl_album where albumid='$agid'"; $rs_result = mysqli_query($conectar, $sql); ?> <!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="Página Administrativa"> <meta name="author" content=""> <link rel="icon" href="imagens/imgadmin.ico"> <title>Administrativo</title> <link rel="stylesheet" href="../css/bootstrap.min.css"> <link rel="stylesheet" href="../css/style.css"> </head> <?php $agid = $_REQUEST['id']; $sql = "SELECT * FROM tbl_albumvideo WHERE albumid='$agid'"; $rs_result = mysqli_query($conectar, $sql); while ($row = mysqli_fetch_assoc($rs_result)) { $aname = $row["name"]; } ;?> <body> <?php include_once "admmenu.php"; ?> <div class="container theme-showcase" role="main" Style='margin-top: 100px'> <h1 class="page-header"><br />Adicionar vídeo</h1> <div class="row"> <div class="col-md-12"> <div class="panel panel-default"> <div class="panel-heading"> Por favor selecione o vídeo </div> <div class="panel-body"> <div class="row"> <div class="col-lg-6"> <form action="processa/proc_cad_albumvideo2.php?id=<?php echo $agid ?>" method="POST" enctype="multipart/form-data" name="upload"> <div class="form-group"> <input type="file" name="arquivo" id="arquivo" value="arquivo"/> </div> <div class="form-group"> <input name="enviar" class="btn btn-primary" type="submit" id="enviar" value="Enviar"> </div> <div class="alert alert-danger" role="alert" style='margin-top:20px'> Esta operação poderá ser demorada, dependendo do tamanho do ficheiro a enviar e das suas condições de ligação à rede. <br/> <br/> Por favor seja paciente e não reinicie a página! </div> </form> </div> </div> </div> </div> </div> </div> </div> <script src="../js/jquery-3.2.1.slim.min.js"></script> <script src="../js/popper.min.js"></script> <script src="../js/bootstrap.min.js"></script> </body> </html> E este é o código para efetuar o upload e gravação na BD
      <?php ini_set('display_errors', 1); ini_set('display_startup_erros', 1); error_reporting(E_ALL); session_start(); include_once "../../conexao.php"; $adate = date('Y-m-d H:i:s'); $status = 'process'; $arquivo = $_FILES['arquivo']; $albumid = $_REQUEST['id']; $pasta = '../../videos/'; $resulta = mysqli_query($conectar, "SELECT * FROM tbl_albumvideo WHERE albumid='$albumid'"); $linhas = mysqli_fetch_assoc($resulta); $local = $linhas["local"]; $arqnome = $_FILES['arquivo']['name']; $ano = $linhas['ano']; $extensao = @end(explode('.', $arqnome)); $novonome = time() . "-" . rand() . "." . $extensao; $tmp = $_FILES['arquivo']['tmp_name']; $file = $pasta . $novonome; if (move_uploaded_file($tmp, $file)) { $query = mysqli_query($conectar, "INSERT INTO videos (video_name, local, ano,aid) VALUES ('$novonome','$local', '$ano', '$albumid')") or die(mysqli_error($conectar)); if ($query) { echo "<META HTTP-EQUIV=REFRESH CONTENT = '0;URL=http://(...)/addgalleryvideo.php'> <script type=\"text/javascript\"> alert(\" O vídeo foi guardado com sucesso.\"); </script>";} else {echo " <META HTTP-EQUIV=REFRESH CONTENT = '0;URL=http://(...)/addgalleryvideo.php'> <script type=\"text/javascript\"> alert(\" O Vídeo não foi guardado.\"); </script> "; } } Linha 14 : $arquivo = $_FILES['arquivo']; 
      Linha 21: $arqnome = $_FILES['arquivo']['name'];
      Linha 27: $tmp = $_FILES['arquivo']['tmp_name'];
       
      Desde já muito obrigado.
    • By Artur Mendonça
      Olá amigos.
      espero que estejam todos bem.
       
      Estou tentando criar uma galeria de imagens e colocar nestas um botão para votação (Gosto como no Facebook).

      Já consegui criar a galeria e colocar o Like nas imagens, mas acontece que quando  as imagens passam para a linha de baixo o botão Like não acompanha a imagem.
       
      Junto uma imagem para exemplificar como está e como deveria ser.
       
      O CSS está assim
      h1 { text-align: center; color: forestgreen; margin: 30px 0 50px; } .container h2 { text-align: center; color: rgb(8, 8, 8); margin: 30px 0 50px; } .gallery { margin: 10px 50px; padding-right: 0px; padding-left: 0px; } .gallery img { width: 230px; padding: 0px; opacity: 0.5; filter: grayscale(10%); transition: 1s; margin-top: 10px; margin-left: 10px; margin-bottom: 10px; margin-right: 0px; border: 2px solid #ccc; border-radius: 10%; } .ilike { display: grid; border-radius: 10%; box-sizing: border-box; text-align: left; padding: 15px; font-size: 20px; vertical-align: top; position: absolute; z-index: 1000; margin-top: 10px; margin-left: 10px; overflow: hidden; color: white; } O código da página da galeria de fotos está assim:
      <div class="gallery"> <?php $sql = "SELECT * FROM tbl_gallery where aid=$aid"; $num_rows = mysqli_num_rows(mysqli_query($conectar, $sql)); $result = mysqli_query($conectar, $sql); while ($row = mysqli_fetch_array($result)) { $gimage = $row['gimages']; $fotoid = $row['gid']; $likes = $row['likes']; ?> <a href="páginapararegistarovoto" ?> "><i class="far fa-thumbs-up ilike" alt="Vote"> <?php echo $likes; ?> </i></a> <i class="inum" > <?php echo "Foto " . $fotoid; ?> </i> <?php echo "<a href='../fotos/$gimage' data-lightbox='mygallery' data-title='Foto n.º: $fotoid'><img src='../thumbnails/$gimage' class='pic'></a>"; } ?> </div>  
       
       

    • By juninhogpe
      Boa tarde.
      Estou com problemas ao subir arquivos no formato MP3 com o código abaixo. Sempre usei ele e hoje apenas aparece erro.
      Abaixo o código:
       
      $titulo = $_POST['titulo']; if ($titulo != ""){ $texto = $_POST['texto']; $padre = $_POST['padre']; $data = date("Y-m-d", strtotime($_POST['data'])); $audio = isset($_FILES["audio"]) ? $_FILES["audio"] : FALSE; $arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE; if($arquivo && $audio){ if(!preg_match("/^image\/(pjpeg|jpeg|png|gif|bmp)$/", $arquivo["type"])){ echo utf8_encode("<script> alert ('Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Cadastro não foi realizado.');</script>"); } if(!preg_match("/^audio\/(mp3|MP3)$/", $audio["type"])){ echo utf8_encode("<script> alert ('Arquivo em formato inválido! erro no upload do audio. Cadastro não foi realizado.');</script>"); } else{ preg_match ("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext); $dd = date("msdYiH"); $imagem_nome = $dd. "." . $ext[1]; $imagem_dir = "../am/" . $imagem_nome; $up = move_uploaded_file($arquivo["tmp_name"], $imagem_dir); preg_match ("/\.(mp3|MP3|wav|wma){1}$/i", $audio["name"], $ext); $dd = date("msdYiH"); $audio_nome = $dd. "." . $ext[1]; $audio_dir = "../am/" . $audio_nome; $up_audio = move_uploaded_file($audio["tmp_name"], $audio_dir); if ($up){ $sql = utf8_decode("INSERT INTO palavra (titulo, foto, data, audio, texto, padre) VALUES ('$titulo','$imagem_nome', '$data','$audio_nome', '$texto', '$padre')"); } } }else echo utf8_encode("<script> alert ('Erro no upload.');</script>"); if($conn->query($sql) === TRUE){ echo utf8_encode("<script> alert (\"Cadastro realizado com sucesso.\");</script>"); echo utf8_encode('<script>window.location="palavra.php";</script>'); } else{ echo "Erro: " . $sql . "<br />" .$conn->error; echo utf8_encode('<script>window.location="palavra.php";</script>'); } }  
      O que estou fazendo de errado?
      Obrigado.
    • By Renan Daniel
      Seguinte Galera, Sou Iniciante, Com Muito Custo Cheguei num formulário que funciona, ele esta todo no mesmo arquivo(praticamente)
      Porém eu gostaria de saber como eu faço para inserir uma seleção de arquivo, para o cliente upar uma foto.
      Caso Alguém Queira me Ajudar Agradeço, Segue o Código : 
      <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Registrar Uma Conta</title> <link rel="stylesheet" href="style.css"/> </head> <body style="background-image: url('bg7.jpg'); background-size: cover; background-position: top center;"> <?php require('db.php'); // When form submitted, insert values into the database. if (isset($_REQUEST['username'])) { // removes backslashes $username = stripslashes($_REQUEST['username']); //escapes special characters in a string $username = mysqli_real_escape_string($con, $username); $email = stripslashes($_REQUEST['email']); $email = mysqli_real_escape_string($con, $email); $password = stripslashes($_REQUEST['password']); $password = mysqli_real_escape_string($con, $password); $numero= stripslashes($_REQUEST['numero']); $numero = mysqli_real_escape_string($con, $numero); $data_nascimento = stripslashes($_REQUEST['data_nascimento']); $data_nascimento = mysqli_real_escape_string($con, $data_nascimento); $cpf = stripslashes($_REQUEST['cpf']); $cpf = mysqli_real_escape_string($con, $cpf); $rg = stripslashes($_REQUEST['rg']); $rg = mysqli_real_escape_string($con, $rg); $endereco_principal = stripslashes($_REQUEST['endereco_principal']); $endereco_principal = mysqli_real_escape_string($con, $endereco_principal); $banco_principal = stripslashes($_REQUEST['banco_principal']); $banco_principal = mysqli_real_escape_string($con, $banco_principal); $agencia_principal = stripslashes($_REQUEST['agencia_principal']); $agencia_principal = mysqli_real_escape_string($con, $agencia_principal); $ope_principal = stripslashes($_REQUEST['ope_principal']); $ope_principal = mysqli_real_escape_string($con, $ope_principal); $conta_principal = stripslashes($_REQUEST['conta_principal']); $conta_principal = mysqli_real_escape_string($con, $conta_principal); $nome_terceiro = stripslashes($_REQUEST['nome_terceiro']); $nome_terceiro = mysqli_real_escape_string($con, $nome_terceiro); $cpf_terceiro = stripslashes($_REQUEST['cpf_terceiro']); $cpf_terceiro = mysqli_real_escape_string($con, $cpf_terceiro); $agencia_terceiro = stripslashes($_REQUEST['agencia_terceiro']); $agencia_terceiro = mysqli_real_escape_string($con, $agencia_terceiro); $ope_terceiro = stripslashes($_REQUEST['ope_terceiro']); $ope_terceiro = mysqli_real_escape_string($con, $ope_terceiro); $conta_terceiro = stripslashes($_REQUEST['conta_terceiro']); $conta_terceiro = mysqli_real_escape_string($con, $conta_terceiro); $create_datetime = date("Y-m-d H:i:s"); $query = "INSERT into `users3` (username, password, email, numero, data_nascimento, cpf, rg, endereco_principal, banco_principal, agencia_principal, ope_principal, conta_principal, nome_terceiro, cpf_terceiro, agencia_terceiro, ope_terceiro, conta_terceiro, create_datetime) VALUES ('$username', '$password', '$email', '$numero', '$data_nascimento', '$cpf', '$rg', '$endereco_principal', '$banco_principal', '$agencia_principal', '$ope_principal', '$conta_principal', '$nome_terceiro', '$cpf_terceiro', '$agencia_terceiro', '$ope_terceiro', '$conta_terceiro','$create_datetime')"; $result = mysqli_query($con, $query); if ($result) { echo "<div class='form'> <h3>Você Foi Registrado com Sucesso.</h3><br/> <p class='link'><a href='#'>Login</a></p> </div>"; } else { echo "<div class='form'> <h3>Você Preencheu Dados Errados</h3><br/> <p class='link'>Volara Para <a href='index.php'>Tentar Novamente</a> Agora.</p> </div>"; } } else { ?> <form class="form" action="" method="post" enctype="multipart/form-data"> <center><img src="1.PNG" style=" width: 250px; "></center> <h1 class="login-title">Dados Pessoais</h1> <h3>Seus Dados São Protegidos.</h3> <input type="text" class="login-input" name="username" placeholder="Nome Completo" required /> <input type="text" class="login-input" name="email" placeholder="Seu Email"> <input type="password" class="login-input" name="password" placeholder="Sua Senha"> <input type="text" class="login-input" name="numero" placeholder="N° de Telefone"> <input type="text" class="login-input" name="data_nascimento" placeholder="Sua Data de Nascimento" required /> <input type="text" class="login-input" name="cpf" placeholder="Seu Cpf" required /> <input type="text" class="login-input" name="rg" placeholder="Seu Rg"required /> <input type="text" class="login-input" name="endereco_principal" placeholder="Seu Endereço"required /> <h1 class="login-title">Seus Dados Bancários</h1> <input type="text" class="login-input" name="banco_principal" placeholder="Nome do Seu Banco"required /> <input type="text" class="login-input" name="agencia_principal" placeholder="Nº Da Agência"required /> <input type="text" class="login-input" name="ope_principal" placeholder="Nº da Operação"required /> <input type="text" class="login-input" name="conta_principal" placeholder="Nº da Conta"required /> <h1 class="login-title">Dados Bancários de Terceiro</h1> <h3>Caso Queira Receber os Redimentos em Nome de Terceiros ( Mãe, Esposa, Filhos..)Deve Cadastrar a Conta Abaixo, e Deve Anexar Um Documento Reconhecido em Cartório Autorizando.</h3> <input type="text" class="login-input" name="nome_terceiro" placeholder="Nome do Titular"required /> <input type="text" class="login-input" name="agencia_terceiro" placeholder="Nº Da Agência"required /> <input type="text" class="login-input" name="ope_terceiro" placeholder="Nº Da Operação"required /> <input type="text" class="login-input" name="conta_terceiro" placeholder="Nº Da Conta"required /> <center><h3>Carregue a Autorização</h3></center> <input type="file" class="login-input" name="arquivo" placeholder="Carregar Autotização"required /> <input type="submit" name="submit" value="REGISTRAR" class="login-button"> <center style=" padding-top: 10px; "><a class="login-button" href="">Voltar Para o Inicio</a></center> </form> <?php } ?> </body> </html> Agradeço desde já a ajuda.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.