Zurück   Flashforum > Flash und Server > PHP und MySQL

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-01-2004, 10:01   #1 (permalink)
Neuer User
 
Benutzerbild von Dark-stars
 
Registriert seit: Oct 2003
Ort: Nähe Stuttgart
Beiträge: 124
File Upload (I'm very sorry)

Hallo Leute,

zum xten Mal in diesem Forum und ich muss trotz der vielen
Posts doch nochmal drauf eingehen, denn ich versteh es einfach nicht.

Hab mir das Ganze mal schön vereinfacht und auch ein Hilfescript aus php.net herangezogen um ein wenig zu testen, aber er mag mich einfach nicht. Ich bekomme auch keine Fehlermeldung.

Folgendes:
habe eine upload.php mit meinem kompletten script. Die liegt im root Ordner des Webservers. In dem root Ordner liegt auch ein Ordner "cms", in den ich testweise speichern möchte.
Rechte sind auf 777, also alles erlaubt. Okay.

Es scheint auch, als ob er mir die Datei auf den Server lädt, da er doch sehr lange herumwurstelt, aber dann macht er wohl nichts mehr.
Die Datei liegt nachher nicht in dem Unterordner cms und im tmp Ordner von php liegt auch nichts mehr drin
Ich weiss einfach nicht mehr weiter.

Kann vielleicht von Euch einer mein Script mal testen, ob es bei ihm geht? Ich wär Euch für jede Hilfe sehr dankbar, da ich mir
das Ganze einfach nicht erklären kann

Danke vielmals und hier mein kompletter Code:

PHP-Code:
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name="upload" action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="userfile">
<input type="hidden" name="action" value="senden">
<input type="submit" value="senden">
</form>

<?php

if($_POST['action']=="senden" ){
  function 
checkext($userfile,$search) {
    
// Looks for $search at the end of the file
    
$lastpos strlen($userfile) - 1;
    
$diffrence strlen($search)-1;
    
$firstpos $lastpos $diffrence;
    
$z 0;
    
$x $firstpos;
    while(
$z <= $diffrence) {
      if(
$userfile[$x] == $search[$z]) {
        
// Yes
        
$return 1;
      } else  {
        
// No!
        
$return 0;
      }
      
$x++;
      
$z++;
    }
    return 
$return;
  }
  
$userfile $_FILES['userfile']['name'];
  
$true checkext($userfile,"zip");
  echo(
"It returned $true");

  if(
$true == 1) {
    
$uploaddir "cms/";
    
#move_uploaded_files($_FILES['userfile']['tmp_name'],
    #$_FILES['userfile']['name']);
    
move_uploaded_file($_FILES['userfile']['tmp_name'],  $uploaddir $userfile);
    echo 
"file sollte oben sein";
    
#chmod($_FILES['userfile']['name'],0644);
  
}
}
?>
</body>
</html>
__________________
Bei einbrechender Dunkelheit ist mit
Nacht zu rechnen
---------------------------------------------
http://www.dark-stars.de
Dark-stars ist offline   Mit Zitat antworten
Alt 30-01-2004, 10:24   #2 (permalink)
schnarchnase
 
Registriert seit: Jan 2002
Ort: konstanz
Beiträge: 2.953
hab deinen code überarbeitet. vielleicht lag's an der reihenfolge... aber so funktioniert es bei mir, die daten werden sicher verschickt.

kleine fehlerchen:
+ die funktion gehört NICHT in die if-schleife (ich hab sie noch ein wenig verkürzt, hat den selben effekt.) die ersten zwei zeilen mit strtolower kannste kicken, falls groß/kleinschreibung wirklich relevant ist.
+ obwohl es auch ohne funktioniert, hab ich noch die funktion realpath() um die zu speichernde datei gelegt; manche serverkonfigurationen erlauben nur das.

guck doch mal bitte, ob's denn so funktioniert
PHP-Code:
<?php
function checkext($userfile,$search) {
    
// Looks for $search at the end of the file
    // case is not relevant
    
$userfile     strtolower($userfile);
    
$search     strtolower($search);
    
// shortened the code with the same effect.
    
return (bool) (substr($userfile, -strlen($search)) === $search) ? TRUE FALSE;
}

if(isset(
$_POST['action']) && $_POST['action']=="senden" ){

    
$userfile $_FILES['userfile']['name'];

    if(
checkext($userfile,".zip")) {
        
$uploaddir "test/";
move_uploaded_file($_FILES['userfile']['tmp_name'] ,  realpath($uploaddir $userfile));
        echo 
"file sollte oben sein";
        
#chmod($_FILES['userfile']['name'],0644);
    
} else {
        echo 
"dateianhang ist nicht korrekt.";
    }
}
?>
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="upload" action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<input type="file" name="userfile">
<input type="hidden" name="action" value="senden">
<input type="submit" value="senden">
</form>
</body>
</html>
__________________

perlen vor die säue.

Geändert von rechtschreibfan (30-01-2004 um 10:25 Uhr)
rechtschreibfan ist offline   Mit Zitat antworten
Alt 30-01-2004, 10:31   #3 (permalink)
Neuer User
 
Benutzerbild von Dark-stars
 
Registriert seit: Oct 2003
Ort: Nähe Stuttgart
Beiträge: 124
Hey Klasse
Nachdem ich die Funktion realpath rausgemacht habe, ging es!!
Vielen Dank für Deine Mühen!

Jetzt bin ich glücklich
__________________
Bei einbrechender Dunkelheit ist mit
Nacht zu rechnen
---------------------------------------------
http://www.dark-stars.de
Dark-stars ist offline   Mit Zitat antworten
Alt 30-01-2004, 10:36   #4 (permalink)
schnarchnase
 
Registriert seit: Jan 2002
Ort: konstanz
Beiträge: 2.953
lol... kein problem... war mir ja selbst nicht sicher, ob realpath nötig ist
__________________

perlen vor die säue.
rechtschreibfan ist offline   Mit Zitat antworten
Alt 03-02-2004, 13:26   #5 (permalink)
Neuer User
 
Benutzerbild von Dark-stars
 
Registriert seit: Oct 2003
Ort: Nähe Stuttgart
Beiträge: 124
Schon wieder Datei upload :(

*hüstel*
ja, da bin ich nochmal. Hab schon wieder ein Problem mit meinem Fileupload, allerdings ist das jetzt mehr so ne mischung aus php & html.

Problem: Wenn ich in meinem Input Feld "file" den Pfad drin stehen habe, also ne Datei selektiert und lasse nun meine restl. Felder durch php auf Korrektheit überprüfen und es ist nun wo ein Fehler, dann soll er mir in jeden Input Bereich den davor eingetragenen Text ausfüllen. Value usw... Und das auch bei file.

Hab ich gemacht, sieht bei mir so aus: (vereinfacht auf das wesentliche)

PHP-Code:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
.
.
.
<input type="file" name="datei"<?php echo (isset($_POST['datei'])) ? " value=\""$_POST['datei'] ."\"" ""?>>
Meine restl. Inputfelder werden alle brav ausgefüllt, nur die file-Felder nicht
Unter selfhtml steht, es geht mit dem value Befehl. Also eigentlich doch so, wie ich es oben habe, oder muss ich es doch anders machen?

Nochmal danke für Eure Hilfe! Ihr seid Klasse
__________________
Bei einbrechender Dunkelheit ist mit
Nacht zu rechnen
---------------------------------------------
http://www.dark-stars.de
Dark-stars ist offline   Mit Zitat antworten
Alt 03-02-2004, 13:51   #6 (permalink)
mein baby
 
Benutzerbild von mal_anders
 
Registriert seit: Jul 2002
Ort: Weimar
Beiträge: 1.443
in welchem selfhtml soll das stehen? das geht definitiv nicht. da kannst du nichts machen. ggf. müßtest du die datei schon hochladen und gleich in ein halteverzeichnis oder ähnliches legen. denn sonst geht es verloren. so kann der user die fehlenden felder ausfüllen. dann müßte dein script aber widerum wissen, daß es ne fehlerkorrektur ist, denn sonst würde er beim abschicken dann wieder bemängekn, daß kein file ausgewählt wurde.
__________________
musse rühre, musse probiere=>iss a pulsgeber !
mal_anders ist offline   Mit Zitat antworten
Alt 03-02-2004, 13:55   #7 (permalink)
schnarchnase
 
Registriert seit: Jan 2002
Ort: konstanz
Beiträge: 2.953
das ist grundsätzlich so.
beim input type file geht das mit dem value nicht; zumindest habe ich das persönlich auch noch nicht hinbekommen, obwohl ich es nicht unversucht gelassen habe.

prinzipiell ist es auch nicht sinnvoll: wenn der/die userIn die datei aus welchen gründen auch immer aufgrund einer fehlermeldung nicht hochladen kann/darf, muss er/sie eh eine neue datei aussuchen - d.h. es ist eher lästig, wenn der wert vordefiniert ist.

übrigens müsste ja nicht $_POST['datei'] drinstehen, sondern der vom benutzer angegebene, lokale pfad auf dem client-rechner. vielleicht lässt sich der aber mit javascript auslesen, z.b. mit dem prinzip:

onSubmit():
beim absenden mit javascript den eingetragenen wert im formularfeld 'datei' als wert eines versteckten formularfelds im selben formular angeben und erst dann absenden;

bei einer fehlermeldung wird in php der wert dieses versteckten formularfelds ohne änderung wieder ins versteckte formularfeld eingetragen
beim erneuten aufruf des formulars mit onLoad() im body der html-seite dann den wert aus dem versteckten formularfeld wieder als value beim file-formularfeld eintragen.

ist aber, wie gesagt, nicht besonders sinnvoll wegen s.o.

außerdem, wenn mensch die datei wieder hochladen will, muss er/sie ja eh nur auf durchsuchen gehen und befindet sich im selben ordner. sollte mensch also die selbe datei hochladen wollen, ist es ja eh nur ein weg von zwei doppelklicks
__________________

perlen vor die säue.
rechtschreibfan ist offline   Mit Zitat antworten
Alt 03-02-2004, 13:57   #8 (permalink)
schnarchnase
 
Registriert seit: Jan 2002
Ort: konstanz
Beiträge: 2.953
guter tipp @mal_anders; wenn die datei gültig ist, und nur ein paar felder fehlen, könnte man ja wirklich die datei temporär speichern. ich habe das bisher allerdings immer so gelöst, dass der file-upload immer ganz zum schluss, wenn alles richtig eingetragen wurde, stattfindet, und zwar als einziges formularfeld. hat im prinzip den selben zweck; was jetzt leichter zu programmieren ist, kann ich nicht einschätzen
__________________

perlen vor die säue.
rechtschreibfan ist offline   Mit Zitat antworten
Alt 03-02-2004, 13:58   #9 (permalink)
Neuer User
 
Benutzerbild von Dark-stars
 
Registriert seit: Oct 2003
Ort: Nähe Stuttgart
Beiträge: 124
Im aktuellen v8 von Stefan Münz:

Auszug:
Mit dem Attribut value= in Verbindung mit <input type="file"> können Sie das Feld mit einem Wert vorbelegen, z.B. value="C:\autoexec.bat".

Im Grunde ist das doch aber schwachsinn.
Ich kann doch nur files am Anfang auswählen, die auch wirklich existieren. Ich will ja diese File Inputfelder garnicht durch Abfrageroutinen laufen lassen, aber ich muss meine restlichen Felder ja überprüfen und wenn dann dort ein Fehler drin ist, müsste man ja jedes mal die hochzuladende Datei neu auswählen. (Wäre dann so ein Punkt, wo irgendwann dem Benutzer die Galle platzt *g*)

Wirklich sicher, dass es nicht geht? *snief*
__________________
Bei einbrechender Dunkelheit ist mit
Nacht zu rechnen
---------------------------------------------
http://www.dark-stars.de
Dark-stars ist offline   Mit Zitat antworten
Alt 03-02-2004, 14:02   #10 (permalink)
Neuer User
 
Benutzerbild von Dark-stars
 
Registriert seit: Oct 2003
Ort: Nähe Stuttgart
Beiträge: 124
oh shit... ich les grad auf der onlineseite (hatte die offlineversion),
dass es aus sicherheitsgründen nicht mehr geht. *NEEEEIIIIINNNNN* Des darf doch ned wahr sein
Also hattest recht... geb ich mich geschlagen, dann muss ich irgendwie schaun, dass ich es anders hinbekomm.

Danke für Deine schnelle Hilfe
__________________
Bei einbrechender Dunkelheit ist mit
Nacht zu rechnen
---------------------------------------------
http://www.dark-stars.de
Dark-stars ist offline   Mit Zitat antworten
Alt 03-02-2004, 16:53   #11 (permalink)
Neuer User
 
Benutzerbild von Dark-stars
 
Registriert seit: Oct 2003
Ort: Nähe Stuttgart
Beiträge: 124
rechtschreibfan:

ja, das mit dem Formularfeld stimmt schon. Ich hab es jetzt auch mal angefangen zu lösen, wie du es hast. Zuzerst fitzel ich alle anderen Felder durch und wenn die ok sind, mach ich nen step zwei sozusagen, wo meine ganzen Datei Felder drin sind.
Die anderen übergeb ich per versteckte Felder weiter.
Dann kann ich die Dateien vorher schön noch durch meine Überprüfungsabfragen laufen lassen und dann gehts weiter und alles wird endgültig verarbeitet. Mal schaun ob ich kein Fehler gemacht hab
__________________
Bei einbrechender Dunkelheit ist mit
Nacht zu rechnen
---------------------------------------------
http://www.dark-stars.de
Dark-stars ist offline   Mit Zitat antworten
Alt 02-05-2004, 11:39   #12 (permalink)
*why ... ??
 
Benutzerbild von ichagx03
 
Registriert seit: Aug 2003
Beiträge: 451
ich habe dieses script (das 2.te) gebraucht aber es kommt immer diese fehler meldung:

Warning: move_uploaded_file(): Unable to move '/tmp/phplPMytx' to '' in /home/chele/public_html/cms/cms/upload/upload.php on line 17

an was könnte es liegen ??
hat jemand noch ein script ??

grues tb
__________________
grues tb
-----------------------------
--> ich bin nicht du, denn du bist nicht ich
-----------------------------
--> keine gahrantie für die richtiege Rechtschribunhg.
-----------------------------
.:: Schau da !!
ichagx03 ist offline   Mit Zitat antworten
Alt 03-05-2004, 12:28   #13 (permalink)
schnarchnase
 
Registriert seit: Jan 2002
Ort: konstanz
Beiträge: 2.953
du musst natürlich ein gültiges zielverzeichnis angeben ... übrigens arbeitet realpath() nicht immer korrekt, falls du $uploaddir doch korrekt angegeben haben solltest. lass vielleicht die realpath() - funktion weg - es könnte dann klappen.
__________________

perlen vor die säue.
rechtschreibfan ist offline   Mit Zitat antworten
Antwort

Lesezeichen

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele