0

私はPHPの初心者で、ローカルサーバーに画像をアップロードしようとしています。なぜ機能しないのか理解できないというエラーがあります。

すべてのデータを送信すると、画像フィールドを除く SQL テーブルのすべてのフィールドが入力されます。

私は何を間違っていますか?

PHP スクリプト

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form3")) {
  $insertSQL = sprintf("INSERT INTO paintings (id_album, `desc`) VALUES (%s, %s)",
                       GetSQLValueString($_POST['id_album'], "int"),
                       GetSQLValueString($_POST['desc'], "text"),
                       GetSQLValueString($_FILES['image']['name'], "text"));

  mysql_select_db($database_connection, $connection);
  $Result1 = mysql_query($insertSQL, $connection) or die(mysql_error());

define ("MAX_SIZE","1024"); 
     //Guarda na variavél $image o nome completo da imagem (nome+extensão)
                $image = $_FILES['image']['name'];

                //Verifica se existe alguma imagem para ser importada
                if($image)//Existe uma imagem para ser importada
                {
                        //Retira os elementos "/"
                        $filename = stripslashes($_FILES['image']['name']);

                        //Verifica qual a extensão do ficheiro
                        $extension = getExtension($filename);

                        //Coloca todos os caracteres da extensão com letra minuscula
                        $extension = strtolower($extension);

                        //Verifica os formatos de imagem que podem ser importados
                        if (($extension != "jpg") && ($extension != "png") && ($extension != "gif"))//Formato diferente dos permitidos 
                        {
                                //print error message
                                echo "<strong>Imagem:</strong> Este formato não pode ser importado! Utilize o formato jpg ou gif";
                        }
                        else//Formato permitido
                        {
                                //Verifica qual o tamanho da imagem seleccionada
                                $size=filesize($_FILES['image']['tmp_name']);

                                //Verifica se o tamanho é superior a 100kb
                                if ($size > MAX_SIZE*1024)//tamanho superior
                                {
                                        echo "A imagem nao pode execer o tamanho de 1Mb";
                                }
                                else//tamanho inferior
                                {
                                        //Gera um nome para a imagem
                                        $image_name=time().'.'.$extension;

                                        //Directoria para a qual a imagem será enviada
                                        $newname="../images/paintings/".$image_name;

                                        //Efectua o upload da imagem para a directoria
                                        $copied = copy($_FILES['image']['tmp_name'], $newname);

                                                //Verifica se o upload foi efectuado com sucesso
                                                if ($copied) //Upload bem sucessido
                                                {
                                                        echo "Upload da imagem foi efectuado com sucesso";

                                                }
                                                else//Upload mal sucessido
                                                {
                                                        echo "Não foi possivél efectuar o upload da imagem";
                                                }
                                }
                        }
                }
                else//Não existe nenhuma imagem para ser importada 
                {
                        echo "Seleccione uma imagem";
                }

  $insertGoTo = "paintings.php?op=sucesso";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

HTML

<form method="post" name="form3" action="<?php echo $editFormAction; ?>" enctype="multipart/form-data" >
  <table align="center">
    <tr valign="baseline">
        <td><input name="image" type="file"></td>
    </tr>
    <tr valign="baseline">
      <td>Description<br/><input type="text" name="desc" value=""Name", Type, Size, Year" size="32"></td>
    </tr>
    <tr valign="baseline">
      <td><input type="submit" value="Submit" class="submitbutton"></td>
    </tr>
  </table>
  <input type="hidden" name="id_album" value="<?php echo $_GET['ida']; ?>">
  <input type="hidden" name="MM_insert" value="form3">
</form>

みんな、ありがとう

4

1 に答える 1

0

何も理解する必要はありません。エラーはすべてを示しています。関数 getExtension は定義されていません。実装する必要があります。pathinfo次の関数を使用して実装できます。

function getExtension($filename){
    return pathinfo($filename, PATHINFO_EXTENSION);
}
于 2013-06-26T15:49:51.987 に答える