2016-05-24 4 views
0

Bevor ich beginne, bitte beachten Sie, dass ich die Anweisungen zu einem späteren Zeitpunkt vorbereiten werde.
Weiter geht es mit dem Versuch, eine Datei hochzuladen und in einem Ordner namens dates dates zu speichern.
Ich habe versucht, diesen Code, aber nichts hochgeladen und es wird nicht angezeigt, wie beim Hochladen und wenn ich es in die Datenbank hinzufügen, es sagt Notice: Undefined variable: randomname alle anderen Felder werden eingefügt, kein Problem. Header.php enthält alle SQL-Konfigurationsdaten.Dateien, die nicht auf Server und Variable hochgeladen werden, sollen nicht definiert sein.

<?php 
session_start(); 
include_once("header.php"); 
?> 
<html> 
<body> 
<?php 
mysqli_select_db($con,$DATABASE); 

    //Checks if the submit button has been pressed. 
    if(isset($_POST["submit"])) { 
     //Sets the target dir where the image will be moved. 
     $target_dir = "/public_html/domain/php/uploads/" . date(d/m/Y) . "/"; 
     //If folder does not exist, create the folder. 
     if (!file_exists($target_dir)) { 
      mkdir($target_dir, 0755, true); 
     } 
     //Sets the upload value to 1 ; if the value keeps the value of 1 when passed all the tests, the file will be uploaded. 
     $uploadOk = 1; 
     //Checks what file extension the image has. 
     $imageFileType = pathinfo($_FILES["photo_url"]["name"],PATHINFO_EXTENSION); 
     //Creates a random name in MD5 
     $randomname = md5(uniqid(true) . $_FILES["photo_url"]["name"]) . "." . $imageFileType; 
     // Check if image file is a actual image or fake image 
     // Check if image file is a actual image or fake image 
     $check = getimagesize($_FILES["photo_url"]["tmp_name"]); 
     if($check !== false) { 
      echo "File is an image - " . $check["mime"] . "."; 
      $uploadOk = 1; 
     } else { 
      echo "File is not an image."; 
      $uploadOk = 0; 
     } 
     // Check if file already exists 
     if (file_exists($target_dir . $randomname)) { 
      echo "Sorry, file already exists."; 
      $uploadOk = 0; 
     } 
     // Check file size 
     if ($_FILES["photo_url"]["size"] > 800000000) { 
      echo "Sorry, your file is too large. Max image size is 8mb"; 
      $uploadOk = 0; 
     } 
     // Allow certain file formats 
     if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" 
     && $imageFileType != "gif") { 
      echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
      $uploadOk = 0; 
     } 
     // Check if $uploadOk is set to 0 by an error 
     if ($uploadOk == 0) { 
      echo "Sorry, your file was not uploaded."; 
     // if everything is ok, try to upload file 
     } else { 
      if (move_uploaded_file($_FILES["photo_url"]["tmp_name"], $target_dir . $randomname)) { 

       //Echo's that the file has been uploaded. 
       echo "The file ". basename($_FILES["photo_url"]["name"]). " has been uploaded."; 

      } else { 
       echo "Sorry, there was an error uploading your file."; 
      } 
     } 
    } 

$sql="INSERT INTO photo(photo_project_id,photo_section,photo_subsection,photo_date,photo_post,photo_desc,photo_url,photo_dir)VALUES('$_POST[photo_project_id]','$_POST[photo_section]','$_POST[photo_subsection]','$_POST[photo_date]',now(),'$_POST[photo_desc]','{$randomname}','$_POST[photo_dir]')"; 

if ($con->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $con->error; 
} 

echo $sql; 
if($con = new mysqli($SERVER, $USER, $PASS, $DATABASE)){ echo "success"; }else{ echo "error: " . mysqli_error($con); } 

mysqli_close($con); 
?> 
</body> 
</html> 
+0

@ chris85 Ich habe den Code. – thekeemo

Antwort

0

Im Code versehen, $randomname nicht existieren, wenn die if(isset($_POST["submit"])) { Prüfung fehlschlägt, aber es wird immer noch versuchen, egal was die Datenbank einfügen zu tun. Das überprüft nur, ob ein HTML-Element namens "submit" mit einem zugewiesenen Wert in einem Formular vorhanden war, das mit POST versehen wurde.

Zunächst würde ich den Code um $sql = ... innerhalb der if-Prüfung verschieben. Auch ein besser, wenn Check könnte sein, um etwas zu suchen, das ist ein Pflichtfeld:

if (isset($_POST['photo_project_id'])) { 

oder besser noch, ob es eine tatsächliche HTTP POST:

if ($_SERVER["REQUEST_METHOD"] === "POST") { 
+0

Ich werde versuchen, Ihre HTTP-Post-Methode, die Schaltfläche senden wird offensichtlich gedrückt. Also ich glaube nicht, dass das das verursacht. – thekeemo

+0

Es spielt keine Rolle, ob der Submit-Button gedrückt wird oder nicht, wenn er nicht sowohl einen Namen als auch einen Wert hat, wird er nicht in den POST-Daten weitergegeben. Um in den POST-Daten übergeben zu werden, muss es etwa so aussehen: '' – Anialation

+0

also wenn ich das stattdessen auf das Formular setze, das es beheben wird ? – thekeemo

Verwandte Themen