2016-04-02 7 views
1

Ich speichere den Pfad der .mp3-Datei in der Datenbank, aber beim Hochladen einer Datei wird die eigentliche Datei nicht hochgeladen, nur der Name und die Benutzerinformationen. hier ist die CodierungIch versuche eine Online-Musikbibliothek zu erstellen, wo der Administrator Musikdateien hochladen kann

<?php 
    if($_POST[ins]) 
     { 

      @mkdir("songs"); 
      $spath="songs/".time()."-".$_FILES[sonsor][name]; 
      copy($_FILES[sonsor][tmp_name],$spath); 
      $son="insert into `songs` values('','$_POST[sonam]','$_POST[soalmoi]','$spath')"; 
      //echo $s; 
      mysql_query($son); 
      header("location:songs.php?");//action=show&msg=va 
      } 

?> 


<form method="POST" action="" enctype="multipart/form-data"> 
    <table> 
    <tr> 
     <td>Song Name</td> 
     <td><input type="text" name="sonam"></td> 
    </tr> 
    <tr> 
     <td>Album/Movie</td> 
     <td><input type="text" name="soalmoi"></td> 
    </tr> 
     <tr> 
     <td>Song File</td> 
     <td><input type="file" name="sonsor"></td> 
    </tr> 
    <tr> 

     <td><input type="submit" name="ins"></td> 
    </tr> 
    </table> 
</form> 

der Dateipfad aktualisiert aber die eigentliche MP3-Datei fertig wird nicht in die Lieder Ordner

+0

Ihr Code ist ** weit offen für SQL-Injection-Angriffe. Verwenden Sie parametrisierte Abfragen mit PDO oder ähnlichem, um dieses Problem zu beheben. Außerdem erlauben Sie dem Client, Dateinamen auf der Festplatte anzugeben, was keine gute Idee ist. Jemand könnte 'somethingevil.php' hochladen und effektiv tun, was immer Sie wollten mit Ihrem Server. Lassen Sie den Client niemals den Dateinamen steuern. Schließlich sollte Ihr 'Location:' - Header eine vollständige URL sein, um den Spezifikationen zu entsprechen. Eine relative URL ist nicht ausreichend, wird aber mit den meisten Browsern funktionieren. – Brad

Antwort

1

Wenn Sie eine Datei per Post an PHP übergeben, müssen Sie $ _FILES verwenden um die Datei anstelle von $ _POST zu erhalten.

In Ihrem Fall die Datei und seine Eigenschaften zugreifen zu können, sollten Sie verwenden:

$fi = $_FILES["sonsor"] 

Welche ist ein assoziiertes Array der Datei in dem Feld mit dem Namen sonsor hochgeladen darstellt.

Um den Upload abzuschließen, werden Sie höchstwahrscheinlich die temporäre Datei in ein bestimmtes Verzeichnis verschieben und entsprechend der Datenbank umbenennen. PHP empfiehlt move_uploaded_file():

move_uploaded_file($fi["tmp_name"], $target_path) 

Die Methode true zurück, wenn es richtig funktioniert. Es wird empfohlen, mehr Sicherheitsprüfungen durchzuführen; check out W3Schools für ein Beispiel.