Form with $ _files does not save the file in the folders of the site [closed]

0

Hello, my project has a form where an image can be sent, it saves the form data in the BD but does not insert the image in the files. can someone tell me where my error is?

<?php session_start();
include_once("../conexao.php");

$nome = $_POST["nome"];
$desc_vid = $_POST["desc_vid"];
$tempo = $_POST["tempo"];
$star_1 = $_POST["star_1"];
$star_2 = $_POST["star_2"];
$imagem = $_FILES['imagem']['name'];
$tags = $_POST["tags"];
$description = $_POST["description"];
$categoria_id = $_POST["categoria_id"];
$categoria_id2 = $_POST["categoria_id2"];
$categoria_id3 = $_POST["categoria_id3"];
$categoria_id4 = $_POST["categoria_id4"];
$categoria_id5 = $_POST["categoria_id5"];

// Local onde imagem vai ser salva
$_UP['pasta'] = '../../videos/thumb/';
// Tamanho da imagem
$_UP['tamanho'] = 1024*1024*100; //5Mb
// Exrensões permitidas
$_UP['extensoes'] = array('png', 'jpg', 'jpeg', 'gif');
// Renomear a imagem
$_UP['renomear'] = false;

// Tipos de erro de UpLoad do PHP
$_UP['erros'][0] = 'Não houve erro';
$_UP['erros'][1] = 'Imagem maior que o limite do php';
$_UP['erros'][2] = 'Imagem muito grande';
$_UP['erros'][3] = 'UpLoad da imagem feita parcialmente';
$_UP['erros'][4] = 'Erro no UpLoad da imagem';

// Verifica se houve algum erro
if($_FILES['imagem']['erros'] != 0){
    die("Não foi possivel fazer UpLoad, Erro: <br />". $_UP['erros'][$_FILES['imagem']['erros']]);
exit;
}

// Verifica qual a extensão
$img_nome = $_FILES['imagem']['name'];
$img_separador = explode('.', $img_nome);
$extensao = strtolower(end($img_separador));
//$extensao = strtolower(end(explode('.', $_FILES['imagem']['name'])));
if(array_search($extensao, $_UP['extensoes'])=== false){
echo "
<script type=\"text/javascript\">
    alert(\"Arquivo não compatível: png, jpg, jpeg e gif. \");
</script>
";
}
// Verifica o tamanho
else if ($_UP['tamanho'] < $_FILES['imagem']['size']){
    echo "Imagem muito grande, limite de 5Mb";
}
// Salva nos arquivos do site
else{
    //Verifica se deve trocar o nome da imagem
    if($_UP['renomear'] == true){
        // Cria nome Baseado no UNIX TIMESTAMP atual e com extensão
        $nome_final = time().'.jpg';
}else{
    // Mantem o nome da imagem
    $nome_final = $_FILES['imagem']['name'];
}
// Verifica se é possivel mover a imagem para a pasta escolhida
if(move_uploaded_file($_FILES['imagem']['tmp_name'], $_UP['pasta'].$nome_final)){
    // Upload efetuado com sucesso
    $nome = $conectar->real_escape_string($nome);
    $desc_vid = $conectar->real_escape_string($desc_vid);
    $tempo = $conectar->real_escape_string($tempo);
    $star_1 = $conectar->real_escape_string($star_1);
    $star_2 = $conectar->real_escape_string($star_2);
    $nome_final = $conectar->real_escape_string($nome_final);
    $tags = $conectar->real_escape_string($tags);
    $description = $conectar->real_escape_string($description);
    $categoria_id = $conectar->real_escape_string($categoria_id);
    $categoria_id2 = $conectar->real_escape_string($categoria_id2);
    $categoria_id3 = $conectar->real_escape_string($categoria_id3);
    $categoria_id4 = $conectar->real_escape_string($categoria_id4);
    $categoria_id5 = $conectar->real_escape_string($categoria_id5);

    $query = mysqli_query($conectar, "INSERT INTO videos (nome, desc_vid, tempo, star_1, star_2, imagem, tags, description, categoria_id, categoria_id2, categoria_id3, categoria_id4, categoria_id5, created) VALUES ('".$nome."', '".$desc_vid."', '".$tempo."', '".$star_1."', '".$star_2."', '".$nome_final."', '".$tags."', '".$description."', '".$categoria_id."', '".$categoria_id2."', '".$categoria_id3."', '".$categoria_id4."', '".$categoria_id5."', NOW())") or die(mysqli_error($conectar));
    echo "<META HTTP-EQUIV=REFRESH CONTENT = '0;URL= http://houseofcoin.com/xxx/administrativo.php?link=9'>
<script type=\"text/javascript\">
    alert(\"Cadastrado com Sucesso.\");
</script>
";
}else{
    // Falha no UpLoad
    $nome = $conectar->real_escape_string($nome);
    $desc_vid = $conectar->real_escape_string($desc_vid);
    $tempo = $conectar->real_escape_string($tempo);
    $star_1 = $conectar->real_escape_string($star_1);
    $star_2 = $conectar->real_escape_string($star_2);
    $tags = $conectar->real_escape_string($tags);
    $description = $conectar->real_escape_string($description);
    $categoria_id = $conectar->real_escape_string($categoria_id);
    $categoria_id2 = $conectar->real_escape_string($categoria_id2);
    $categoria_id3 = $conectar->real_escape_string($categoria_id3);
    $categoria_id4 = $conectar->real_escape_string($categoria_id4);
    $categoria_id5 = $conectar->real_escape_string($categoria_id5);

    $query = mysqli_query($conectar, "INSERT INTO videos (nome, desc_vid, tempo, star_1, star_2, tags, description, categoria_id, categoria_id2, categoria_id3, categoria_id4, categoria_id5, created) VALUES ('".$nome."', '".$desc_vid."', '".$tempo."', '".$star_1."', '".$star_2."',  '".$tags."', '".$description."', '".$categoria_id."', '".$categoria_id2."', '".$categoria_id3."', '".$categoria_id4."', '".$categoria_id5."', NOW())") or die(mysqli_error($conectar));
    echo "<META HTTP-EQUIV=REFRESH CONTENT = '0;URL= http://houseofcoin.com/xxx/administrativo.php?link=9'>
<script type=\"text/javascript\">
    alert(\"Cadastrado não Realizado.\");
</script>
";
}
}

/*$query = mysqli_query($conectar, "INSERT INTO videos (nome, desc_vid, tempo, star_1, star_2, imagem, categoria_id, tags, description, created) VALUES ('".$nome."', '".$desc_vid."', '".$tempo."', '".$star_1."', '".$star_2."', '".$nome_final."', '".$categoria_id."', '".$tags."', '".$description."', NOW())");
?>
<!DOCTYPE html>
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body>
<?php
if (mysqli_affected_rows($conectar) != 0){
echo "<META HTTP-EQUIV=REFRESH CONTENT = '0;URL= http://houseofcoin.com/xxx/administrativo.php?link=9'>
<script type=\"text/javascript\">
    alert(\"Cadastrado com Sucesso.\");
</script>
";
}else {
echo "<META HTTP-EQUIV=REFRESH CONTENT = '0;URL= http://houseofcoin.com/xxx/administrativo.php?link=9'>
<script type=\"text/javascript\">
    alert(\"Cadastrado não Realizado.\");
</script>
";
}*/
?>

Form Code

<div class="container" style="width: 100%">

<div class="page-header"><h1>Cadastrar</h1></div>
<div class="row">
    <div class="col-md-10">
<form class="form-horizontal" method="post" action="processa/proc_cad_vid.php" enctype="multipart/form-data">

<div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Título</label>
        <div class="col-sm-10">
            <input type="texto" class="form-control" name="nome" placeholder="Título do Vídeo">
        </div>
</div>

<div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Descrição</label>
        <div class="col-sm-10">
        <textarea class="form-control" rows="3" name="desc_vid" placeholder="Descrição do Vídeo"></textarea>
        </div>
</div>

<div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Tempo</label>
        <div class="col-sm-10">
            <input type="texto" class="form-control" name="tempo" placeholder="Tempo de Vídeo">
        </div>
</div>

<div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Star 1</label>
        <div class="col-sm-10">
            <input type="texto" class="form-control" name="star_1" placeholder="Star 1">
        </div>
</div>

<div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Star 2</label>
        <div class="col-sm-10">
            <input type="texto" class="form-control" name="star_2" placeholder="Star 2">
        </div>
</div>

<div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Imagem </label>
        <div class="col-sm-10">
            <input type="file" name="imagem" id="exampleInputFile">
        </div>  
</div>

<div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Tags</label>
        <div class="col-sm-10">
            <input type="texto" class="form-control" name="tags" placeholder="Tags">
        </div>
</div>

<div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Description</label>
        <div class="col-sm-10">
            <textarea class="form-control" rows="3" name="description" placeholder="Descrição que o Google Recebe"></textarea>
        </div>
</div>

<div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Categoria 1</label>
        <div class="col-sm-10">
            <select class="form-control" name="categoria_id">
                <option>Selecione</option>
                <?php 
                    $resultado = mysqli_query($conectar, "SELECT * FROM categorias");
                while ($dados = mysqli_fetch_assoc($resultado)){
                    $dados = str_replace(" ","",$dados);
                ?>  
                <option value="<?php echo $dados['nome'];?>"><?php echo $dados['nome'];?></option>
                <?php } ?>
            </select>
        </div>
</div>
<div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Categoria 2</label>
        <div class="col-sm-10">
            <select class="form-control" name="categoria_id2">
                <option>Selecione</option>
                <?php 
                    $resultado = mysqli_query($conectar, "SELECT * FROM categorias");
                while ($dados = mysqli_fetch_assoc($resultado)){
                    $dados = str_replace(" ","",$dados);
                ?>  
                <option value="<?php echo $dados['nome'];?>"><?php echo $dados['nome'];?></option>
                <?php } ?>
            </select>
        </div>
</div>
<div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Categoria 3</label>
        <div class="col-sm-10">
            <select class="form-control" name="categoria_id3">
                <option>Selecione</option>
                <?php 
                    $resultado = mysqli_query($conectar, "SELECT * FROM categorias");
                while ($dados = mysqli_fetch_assoc($resultado)){
                    $dados = str_replace(" ","",$dados);
                ?>  
                <option value="<?php echo $dados['nome'];?>"><?php echo $dados['nome'];?></option>
                <?php } ?>
            </select>
        </div>
</div>
<div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Categoria 4</label>
        <div class="col-sm-10">
            <select class="form-control" name="categoria_id4">
                <option>Selecione</option>
                <?php 
                    $resultado = mysqli_query($conectar, "SELECT * FROM categorias");
                while ($dados = mysqli_fetch_assoc($resultado)){
                    $dados = str_replace(" ","",$dados);
                ?>  
                <option value="<?php echo $dados['nome'];?>"><?php echo $dados['nome'];?></option>
                <?php } ?>
            </select>
        </div>
</div>
<div class="form-group">
    <label for="inputEmail3" class="col-sm-2 control-label">Categoria 5</label>
        <div class="col-sm-10">
            <select class="form-control" name="categoria_id5">
                <option>Selecione</option>
                <?php 
                    $resultado = mysqli_query($conectar, "SELECT * FROM categorias");
                while ($dados = mysqli_fetch_assoc($resultado)){
                    $dados = str_replace(" ","",$dados);
                ?>  
                <option value="<?php echo $dados['nome'];?>"><?php echo $dados['nome'];?></option>
                <?php } ?>
            </select>
        </div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
  <button type="submit" class="btn btn-success">Cadastrar</button>
</div>
</div>
</form>
</div><br>
</div></div>

I've already tried putting the $ querry layer and forcing the error, but it does not insert any data. Thanks in advance.

    
asked by anonymous 18.05.2017 / 22:04

1 answer

1

The error must be occurring due to some phrase with apostrofo ' , this conflicts with the apostrophes of mysql, because he thinks he closed a column, but then comes an inexperienced character.

To correct you can use mysqli_real_escape_string or Prepared Statements

Before executing the query with mysqli_real_escape_string , do this:

$nome = mysqli_real_escape_string($nome);
$desc_vid = mysqli_real_escape_string($desc_vid);
$tempo = mysqli_real_escape_string($tempo);
$star_1 = mysqli_real_escape_string($star_1);
$star_2 = mysqli_real_escape_string($star_2);
$nome_final = mysqli_real_escape_string($nome_final);
$categoria_id = mysqli_real_escape_string($categoria_id);
$tags = mysqli_real_escape_string($tags);
$description = mysqli_real_escape_string($description);

With prepared statements should be something like:

/* create a prepared statement */
if ($stmt = mysqli_prepare($conectar, "INSERT INTO videos (nome, desc_vid, tempo, star_1, star_2, imagem, categoria_id, tags, description, created) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())")) {

    mysqli_stmt_bind_param($stmt, "s", $nome);
    mysqli_stmt_bind_param($stmt, "s", $desc_vid);
    mysqli_stmt_bind_param($stmt, "s", $tempo);
    mysqli_stmt_bind_param($stmt, "s", $star_1);
    mysqli_stmt_bind_param($stmt, "s", $star_2);
    mysqli_stmt_bind_param($stmt, "s", $nome_final);
    mysqli_stmt_bind_param($stmt, "s", $categoria_id);
    mysqli_stmt_bind_param($stmt, "s", $tags);
    mysqli_stmt_bind_param($stmt, "s", $description);
    mysqli_stmt_execute($stmt);

    mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);

More details on link

    
18.05.2017 / 23:45