SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 10.06.2014, 20:58:41
Gredl Gredl ist offline
Anfänger
 
Registriert seit: Jun 2014
Alter: 30
Beiträge: 0
Upload, Download von Dateien

Hallo zusammen,

ich habe ein Upload-Skript geschrieben, das mir Daten aus dem Upload direkt in eine Datenbank Tabelle einträgt, mein Quellcode sieht hierfür so aus:

PHP-Code:
<?php 

if($_GET['action'] == "upload"


    
// Auf Fehler überprüfen 
    
if ($_FILES['datei']['error'] == UPLOAD_ERR_NO_FILE || $_FILES['datei']['error'] == UPLOAD_ERR_PARTIAL
    { 
        
// die Datei wurde nicht oder nur teilweise hochgeladen 
        
die("Die Datei wurde nicht korrekt hochgeladen. Bitte versuchen Sie es erneut."); 

    } 
    elseif (
$_FILES['datei']['error'] == UPLOAD_ERR_FORM_SIZE || $_FILES['datei']['error'] == UPLOAD_ERR_INI_SIZE
    { 
        
// die Datei ist zu groß 
        
die("Die hochgeladene Datei ist zu groß."); 
    } 
    else 
    {  

        
// Verbindung zur Datenbank
        
$db_host="localhost";
        
$db_name="upload";
        
$db_user="root";
        
$db_pw="";
        function 
opendb() 
        {
            global 
$db_host;
            global 
$db_user;
            global 
$db_pw;
            global 
$db_name;
            
$verbindung mysql_pconnect($db_host,$db_user,$db_pw);
            if(
$verbindung
            {
                if(!(
mysql_select_db($db_name,$verbindung))) 
                {
                    
$verbindung FALSE;
                    echo 
"Keine Verbindung moeglich!";
                }
                return 
$verbindung;
            }
        }    


        
// MySQL Verbindung öffnen
        
$db opendb();

        
// Die Datei in den Zeilordner kopieren
        
$datei_name=$_FILES['datei']['name'];
        
$pfad="upload\\";
        
move_uploaded_file($_FILES['datei']['tmp_name'],"".$pfad.$datei_name); 

        
// Groeße einlesen 
        
$size $_FILES['datei']['size']; 

        
// Leerzeichen im Dateinamen werden mit einem Unterstrich ersetzt 
        //$dateiname = str_replace(" ", "_", $_FILES['datei']['name']); 

        // Und ab in die mySQL Tabelle... 
        
$sql "INSERT INTO files VALUES('', '".stripslashes($pfad)."', '".$datei_name."', '".$_FILES['datei']['type']."', '".$size."', '','','')"
        echo 
$sql;
        
mysql_query($sql,$db); 

        echo 
"Datei-Upload erfolgreich."
        exit;
    }

else 

    
// Upload-Formular anzeigen 
    
echo "<form method=\"post\" action=\"" $PHP_SELF "?action=upload\" enctype=\"multipart/form-data\"> 
    <input type=\"hidden\" name=\"MAX_FILES_SIZE\" value=\"2097152\"> 
    <input type=\"file\" name=\"datei\" maxlength=\"2097152\"><br> 
    <input type=\"submit\" name=\"submit\" value=\"Uploaden\"> 
    </form>"

}


?>
Jetzt würde ich diese Datei gerne wieder herunterladen können, aber das will einfach nicht klappen. Mein Quellcode für den Download sieht derzeit so aus:

PHP-Code:
<?php 
// Datei herunterladen
// Datenbankverbindung
mysql_connect("localhost""root"""); 
mysql_select_db("upload"); 
 
// Es wurde keine Datei ausgewählt -> alle Möglichkeiten anzeigen 
$sql "SELECT file_id, file_upload_folder, filename FROM files"
//echo $sql;
$result mysql_query($sql);
 
var_dump($_SERVER['HTTP_HOST']);

while (
$row mysql_fetch_object($result)) { 
//echo "<a href=\"".$PHP_SELF."?file_id=".$row->file_id."\">".$row->filename."</a><br>"; 
echo "<a href=\"".$_SERVER['HTTP_HOST']."\\".$row->file_upload_folder."\\".$row->filename."\">".$row->filename."</a><br>";


 

?>
Leider sieht man schon, dass auch der falsche Link verwendet wird, um die Datei runterzuladen, aber ich bekomme die Lösung einfach nicht hin
Die Uploads liegen unter: C:\xampp\htdocs\DBProjekt\upload

Kann mir hier jemand weiterhelfen?
Mit Zitat antworten
  #2  
Alt 12.06.2014, 15:16:25
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Upload, Download von Dateien

Zitat:
Zitat von Gredl Beitrag anzeigen
ich habe ein Upload-Skript geschrieben, das mir Daten aus dem Upload direkt in eine Datenbank Tabelle einträgt, mein Quellcode sieht hierfür so aus:
Ich bin zu faul, nachzugucken welcher Quellen Du Dich bedientest, aber das...
Zitat:
PHP-Code:
<?php 
if ($_GET['action'] == "upload"
{
ist schon Scheiße.

1. Uploadformulare müssen
a. per POST erfolgend
b. Das enctype="multipart/form-data" ist zwingend.

2. POST Daten findet man nicht in $_GET.

Und wenn das Formular so aussieht:
Code:
<input type="submit" name="submit" value="Uploaden">
dann sollte Deine Verzweigung so aussehen:
PHP-Code:
if (! empty($_POST) AND ! empty($_POST['submit']) AND $_POST['submit'] = 'Uploaden'){
  
files_pruefen_und_verschieben();
}else{
  
upload_formular_ausgeben();

Da:
(! empty($_POST) AND ! empty($_POST['submit']) AND $_POST['submit'] = 'Uploaden')
ist die Reihenfolge wichtig. PHP liest von links nach rechts und bricht bei ner AND Verknüpfung sofort ab, wenn das boolsche Ergenis TRUE nicht erreicht werden kann.

Weitere Fallen:
Da $_FILES vom HTTP Protokoll gefüttert wird und jeder Client ein potentieller Lügner ist, mußt Du alles überprüfen. Die einzige Größe, die der Server setzt:
$_FILES['formular_name']['tmp_name']
Zitat:
<input type="file" name="datei">
Aber das sind temp. files, die nur beim Uploadprozeß zur Verfügung stehen. Ein Klick weiter und schon sind se wech.

Und verlaß Dich nie darauf, nur weil eine Datei bild.jpg heißt, daß da auch wirklich nur ein Bild drinsteckt. Javascript, welches die Sessiondaten petzt und dem Client entweder n 404 oder ein kleines Herzchen schenkt - alles schon mal dagewesen.

Zitat:
Leider sieht man schon, dass auch der falsche Link verwendet wird, um die Datei runterzuladen, aber ich bekomme die Lösung einfach nicht hin
Die Uploads liegen unter: C:\xampp\htdocs\DBProjekt\upload
Das liegt zT. an Deiner Pfadfummelei. Das backslash wird unter Linux als escapezeichen benutzt. Aber der Apache + PHP sind so nett und gestatten Dir auch sowas:
Code:
c:/xampp/htdocs/DBProjekt/upload
Mit Zitat antworten
Antwort

Stichworte
download, links, upload


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
upload Dateien mit Zeitstempel versehen TomBa13 PHP Grundlagen 1 24.12.2011 08:53:53
Download von Dateien mit Leerzeichen im Namen Abrow PHP Grundlagen 4 03.01.2007 16:55:57
PHP Upload - Probleme mit großen Dateien nino PHP Grundlagen 3 08.12.2005 21:40:17
Upload von Dateien auf einen anderen Server groe PHP für Fortgeschrittene und Experten 1 13.03.2005 00:56:16
PHP Upload grosser Dateien / timeout NewGen PHP für Fortgeschrittene und Experten 2 17.05.2004 14:33:57


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:21:06 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt