简体   繁体   中英

getimagesize(): Filename cannot be empty

i'm here trying to learn some php but i'm having some problems with my code now i'm trying to solve the "getimagesize(): Filename cannot be empty" but there are many others like:/ -Undefined variable: date/ -Undefined variable: imgData / And yes i've tried other codes and still have the same problem/

So here's my code.

     <?php
    $link = mysqli_connect("blah", "blah", "blah", "blah");
    if($link === false){
        die("ERRRO: Não foi possivel a conexão com a base de dados. " . mysqli_connect_error());
    }       
            if(!empty($_FILES['userImage']['tmp_name']) 
         && file_exists($_FILES['userImage']['tmp_name'])) {
        $imgData= addslashes(file_get_contents($_FILES['userImage']['tmp_name']));
    }
            $imageProperties = getimageSize($_FILES['userImage']['tmp_name']);
            $portal = mysqli_real_escape_string($link, $_POST['field1']);
            $datacri = mysqli_real_escape_string($link, $_POST['field2']);
            $datacri = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
            $datapub = mysqli_real_escape_string($link, $_POST['field3']);
            $datapub = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
            $titulo = mysqli_real_escape_string($link, $_POST['field4']);
            $keyword = mysqli_real_escape_string($link, $_POST['field5']);
            $hashtags = mysqli_real_escape_string($link, $_POST['field6']);
            $pedido = mysqli_real_escape_string($link, $_POST['field7']);
            $autor = mysqli_real_escape_string($link, $_POST['field8']);
    if (!$portal) { 
    echo '<script type="text/javascript"> alert("Preencha todos os campos "); </script>';
    mysqli_close($link);
    }



$sql = "INSERT INTO pedidos (p_portal, p_datacri, p_datapub, p_titulo, p_titulo, p_keywords, p_hashtags, p_imageType, p_imageData, p_pedido, p_autor)
        VALUES('$portal', '$datacri', '$datapub', '$titulo', '$keyword', '$hashtags', '{$imageProperties['mime']}', '{$imgData}', '$pedido', '$autor')";
if(mysqli_query($link, $sql)){
    echo '<script type="text/javascript"> alert("Portal Criado"); </script>';
    } else{
    echo "ERRO: Não foi possivel executar o comando $sql. " . mysqli_error($link);
    }
?>

And my html file:

    <form action="php\pedidos\p_ins.php" enctype="multipart/form-data" method="post">
    <link rel="stylesheet" href="css\pedidos.css">
    <fieldset>
    <legend><span class="number">1</span> Criar Pedido</legend>
    <label for="portal">Portal</label
    <?php                
    $link = mysqli_connect("blah", "blah", "blah", "blah");
    if($link === false){
        die("ERRRO: Não foi possivel a conexão com a base de dados. " . mysqli_connect_error());}
        $result = $link->query("select po_id, po_nome from portais");
        echo "<html>";
        echo "<body>";
        echo "<select name='field1' name='po_id'>";
        echo "<option value=''>----Selecione um Portal----</option>";
        while ($row = $result->fetch_assoc()) {
            unset($id, $name);
            $id = $row['po_id'];
            $name = $row['po_nome'];
            echo '<option value="'.$id.'">'.$name.'</option>';
            }    echo "</select>";
            echo "</body>";
            echo "</html>";?>
            <label>Data de Criação</label>
            <input type="date" name="field2" placeholder="Data de publicacao do Post">
            <label>Data de Publicação</label>
            <input type="date" name="field3" placeholder="Data de publicacao do Post">
            <label>Titulo</label>
            <input type="text" name="field4" placeholder="Insira aqui o Titulo">
            <label>Keywords</label>
            <input type="text" name="field5" placeholder="Insira aqui as Keywords">
            <label>Hashtags</label>
            <input type="text" name="field6" placeholder="Insira aqui as Hashtags">
            <label>Imagem</label>
            <p> </p>
            <input type="file" name="userImage" accept="image/*" class="inputFile"> <p> </p>
            <label>Pedido</label>
            <textarea type="text" name="field7" placeholder="Insira aqui o Pedido"></textarea>
            <label for="autores">Autor</label>
            <?php
                $result = $link->query("SELECT *FROM autores");
                echo "<html>";
                echo "<body>";
                echo "<select name='field8' name='a_id'>";
                echo "<option value=''>----Selecione um autor----</option>";
                while ($row = $result->fetch_assoc()) {
                    unset($id, $name)
;                  $id = $row['a_id'];
                  $name = $row['a_nome']; 
                  echo '<option value="'.$id.'">'.$name.'</option>';
                  }    echo "</select>"; 
                  echo "</body>";   
                  echo "</html>";?> 
                  <input type="submit" value="Enviar" />    
                  <div id='footer'> 
                  </div>
                  </form>

Thanks.

Make sure your input type="file" is inside a form that has an enctype="multipart/form-data" or it will not send to file to your PHP script and $_FILES['userImage']['tmp_name'] will be empty

<form method="post" enctype="multipart/form-data" action="yourphpfile.php">
    <label>Data de Criação</label>
    <input type="date" name="field2" placeholder="Data de publicacao do Post">
    <label>Data de Publicação</label>
    <input type="date" name="field3" placeholder="Data de publicacao do Post">
    <label>Titulo</label>
    <input type="text" name="field4" placeholder="Insira aqui o Titulo">
    <label>Keywords</label>
    <input type="text" name="field5" placeholder="Insira aqui as Keywords">
    <label>Hashtags</label>
    <input type="text" name="field6" placeholder="Insira aqui as Hashtags">
    <label>Imagem</label>
    <p> </p>
    <input type="file" name="userImage" class="inputFile">  <p> </p>
    <label>Pedido</label>
    <textarea type="text" name="field7" placeholder="Insira aqui o Pedido"></textarea>
    <label for="autores">Autor</label>
</form>

As for your PHP code, I would advise putting all the block concerning the insert to database inside your if block. Plus you have some errors that are fixed here :

if(!empty($_FILES['userImage']['tmp_name']) 
     && file_exists($_FILES['userImage']['tmp_name'])) {
    $imgData= mysqli_real_escape_string($link, file_get_contents($_FILES['userImage']['tmp_name']));
    $imageProperties = getimageSize($_FILES['userImage']['tmp_name']);
    $portal = mysqli_real_escape_string($link, $_POST['field1']);
    $date = mysqli_real_escape_string($link, $_POST['field2']);
    $datacri = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
    $date = mysqli_real_escape_string($link, $_POST['field3']);
    $datapub = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
    $titulo = mysqli_real_escape_string($link, $_POST['field4']);
    $keyword = mysqli_real_escape_string($link, $_POST['field5']);
    $hashtags = mysqli_real_escape_string($link, $_POST['field6']);
    $pedido = mysqli_real_escape_string($link, $_POST['field7']);
    $autor = mysqli_real_escape_string($link, $_POST['field8']);
    if (!$portal) { 
        echo '<script type="text/javascript"> alert("Preencha todos os campos "); </script>';
        mysqli_close($link);
    } 

    $sql = "INSERT INTO pedidos (p_portal, p_datacri, p_datapub, p_titulo, p_keywords, p_hashtags, p_imageType, p_imageData, p_pedido, p_autor)
            VALUES('$portal', '$datacri', '$datapub', '$titulo', '$keyword', '$hashtags', '{$imageProperties['mime']}', '{$imgData}', '$pedido', '$autor')";
    if(mysqli_query($link, $sql)) {
        echo '<script type="text/javascript"> alert("Portal Criado"); </script>';
    } else{
        echo "ERRO: Não foi possivel executar o comando $sql. " . mysqli_error($link);
    }
} else {
    echo "ERROR: couldn't get image Data";
}

?>

......

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM