it-swarm.com.de

PHP Bild hochladen

Okay, ich habe viel zu viel Zeit investiert. Ich bin neu in der PHP Programmierung und versuche, die Grundlagen zu verstehen, aber ich bin ein wenig verloren, als ich letzte Nacht ein PHP Formular zum Hochladen von Basisdaten wie einem Namen bekommen konnte Adresse und Zeug zu meinem (MySQL) Server.

Aber heute habe ich gesagt, lass uns den nächsten Schritt machen, der ein Image für den Server sein würde. Ich habe 3 Videos auf YouTube gesehen, wahrscheinlich 100 Mal, nur um Code neu zu schreiben und es auf so viele verschiedene Arten zu versuchen.

http://www.youtube.com/watch?v=CxY3FR9doHI
http://www.youtube.com/watch?v=vFZfJZ_WNC4&feature=relmfu

und immer noch nicht in der Lage, es zu bekommen.

Aber um es kurz zu machen: Ich habe eine config.php-Datei, die eine Verbindung zum Server herstellt, und hier ist der Code, den ich auf der Upload-Formularseite ausführe:

<html>
  <head>
    <title>Upload an image</title>
  </head>
<body>
  <form action="UploadContent.php" method="POST" enctype="multipart/form-data">
  File:
    <input type="file" name="image"> <input type="submit" value="Upload">
  </form>
<?php

// connect to database
include"config.php";

// file properties
$file = $_FILES['image']['tmp_name'];

if (!isset($file))
  echo "Please select a profile pic";
else
{
  $image = addslashes(file_get_content($_FILES['image']['tmp_name']));
  $image_name = addslashes($FILES['image']['name']);
  $image_size = getimagesize($_FILES['image']['tmp_name']);

  if ($image_size==FALSE)
    echo "That isn't a image.";
  else
  {
    $insert = mysql_query("INSERT INTO content VALUES ('','','','','','','','','','$image_name','$image',)");
  }
}
?>
  </body>
</html>

Der Grund für den gesamten '', '', '', '' in der Einfügezeile ist, dass ich den Namen im 10. Feld und den Bildfleck im 11. Feld habe und alle, die dazu führen, sind Vorname, Nachname und solche zufälligen Dinge. Wie kann ich das beheben? Es gibt den Fehler zurück:

Schwerwiegender Fehler: Rufen Sie in Zeile 22 die undefinierte Funktion file_get_content () in /home/content/34/9587634/html/WEBPAGE/UploadContent.php auf

Ich weiß nicht, was ich tun soll.

4
user1544586

Der Code übersieht den Aufruf der Funktion move_uploaded_file (), mit der geprüft wird, ob die angegebene Datei zum Hochladen gültig ist.

Möglicherweise möchten Sie ein einfaches Beispiel überprüfen:

http://www.w3schools.com/php/php_file_upload.asp

8

Sie müssen zwei neue Dateien hinzufügen, eine ist index.html, kopieren Sie den folgenden Code und fügen Sie ihn ein. Die andere ist imageup.php, wodurch Ihr Bild hochgeladen wird

 <form action="imageup.php" method="post" enctype="multipart/form-data">
 <input type="file" name="banner" >
 <input type="submit" value="submit">
 </form>

 imageup.php
 <?php
 $banner=$_FILES['banner']['name']; 
 $expbanner=explode('.',$banner);
 $bannerexptype=$expbanner[1];
 date_default_timezone_set('Australia/Melbourne');
 $date = date('m/d/Yh:i:sa', time());
 $Rand=rand(10000,99999);
 $encname=$date.$Rand;
 $bannername=md5($encname).'.'.$bannerexptype;
 $bannerpath="uploads/banners/".$bannername;
 move_uploaded_file($_FILES["banner"]["tmp_name"],$bannerpath);
 ?>

Mit dem obigen Code wird Ihr Bild mit verschlüsseltem Namen hochgeladen

3
Kannan Chakkara

Ändern Sie die Funktion file_get_content() in Ihrem Code in file_get_contents(). Am Ende des Funktionsnamens fehlt 's'. Deshalb gibt es einen undefinierten Funktionsfehler.

file_get_contents ()

Entfernen Sie das letzte unnötige Komma nach dem in der Zeile abgelegten $image

"INSERT INTO content VALUES         ('','','','','','','','','','$image_name','$image',)
2
Mudassir Hasan

Ich würde Ihnen empfehlen, das Bild auf dem Server zu speichern und dann die URL in der MYSQL-Datenbank zu speichern.

Zunächst sollten Sie Ihr Image genauer überprüfen, bevor nicht überprüfte Dateien zu enormen Sicherheitsrisiken führen können.

  1. Überprüfen Sie das Bild

    if (empty($_FILES['image']))
      throw new Exception('Image file is missing');
    
  2. Speichern Sie das Bild in einer Variablen

    $image = $_FILES['image'];
    
  3. Überprüfen Sie die Fehler beim Hochladen

    if ($image['error'] !== 0) {
       if ($image['error'] === 1) 
          throw new Exception('Max upload size exceeded');
    
       throw new Exception('Image uploading error: INI Error');
    }
    
  4. Überprüfen Sie, ob die hochgeladene Datei auf dem Server vorhanden ist

    if (!file_exists($image['tmp_name']))
        throw new Exception('Image file is missing in the server');
    
  5. Überprüfen Sie die Dateigröße (ändern Sie sie entsprechend Ihren Anforderungen)

     $maxFileSize = 2 * 10e6; // = 2 000 000 bytes = 2MB
        if ($image['size'] > $maxFileSize)
            throw new Exception('Max size limit exceeded'); 
    
  6. Überprüfen Sie das Bild (Überprüfen Sie, ob die Datei ein Bild ist)

     $imageData = getimagesize($image['tmp_name']);
         if (!$imageData) 
         throw new Exception('Invalid image');
    
  7. Validieren Sie den Image-Mime-Typ. (Passen Sie dies Ihren Anforderungen an.)

     $mimeType = $imageData['mime'];
     $allowedMimeTypes = ['image/jpeg', 'image/png', 'image/gif'];
     if (!in_array($mimeType, $allowedMimeTypes)) 
        throw new Exception('Only JPEG, PNG and GIFs are allowed');
    

Dies kann Ihnen helfen, ein sicheres Skript zum Hochladen von Bildern mit PHP zu erstellen.

Quellcode: https://developer.hyvor.com/php/image-upload-ajax-php-mysql

Außerdem empfehle ich Ihnen, MYSQLI-vorbereitete Anweisungen für Abfragen zu verwenden, um die Sicherheit zu verbessern.

Vielen Dank.

1
Supun Kavinda
  <?php 
 $target_dir = "images/";
    echo $target_file = $target_dir . basename($_FILES["image"]["name"]);
    $post_tmp_img = $_FILES["image"]["tmp_name"];
    $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
    $post_imag = $_FILES["image"]["name"];
        move_uploaded_file($post_tmp_img,"../images/$post_imag");
 ?>
0
saad mohmed