Datei Upload per PHP Nr. 2

Programmier-Tipps und -Tricks. Artikel zum Thema Java, PHP, C++, Delphi, VB, etc.

Beitragvon CoolCasimir am 27.04.2005, 12:14

Das ist alles eine Rechtefrage.
Also dem Script muss es erlaubt sein Dateien zu schreiben oder Verzeichnisse anzulegen.
CoolCasimir
Moderator
 
Beiträge: 2194
Registriert: 14.01.2004, 14:07
Wohnort: Hansestadt Hamburg


Bei mir kommt nichtmal eine Fehlermeldung

Beitragvon Clayde am 30.04.2005, 10:13

Hallo,

ich habe das Script ausprobiert. Bei mir tut sich jedoch nichts, es kommt nichtmal eine Fehlermeldung.

Hier der Link:

http://vs-galerie.de/Test/upload.php

Gruß

Clayde
Clayde
 
Beiträge: 4
Registriert: 30.04.2005, 10:08

Beitragvon CoolCasimir am 30.04.2005, 14:46

In dem Verzeichnis Test musst Du noch eines mit dem Namen "web" anlegen, das existiert bei Dir nicht.
CoolCasimir
Moderator
 
Beiträge: 2194
Registriert: 14.01.2004, 14:07
Wohnort: Hansestadt Hamburg

Beitragvon Clayde am 30.04.2005, 19:03

Danke für die schnelle Antwort.
Hat mir jedoch leider nichts geholfen, da der Ordner angelegt war. Ich habe ihn auch mal spaßeshalber gelöscht, anschließend kam auch prompt eine Fehlermeldung.
Zum Beweis, dass das Verzeichnis besteht, habe ich jetzt ein Bild per FTP hochgeladen.

Was ich auch komisch finde, wenn ich dann auf der Upload-Seite bin, und auf das Verzeichnis "web" klicke, kommt, dass die Seite nicht gefunden werden kann. Gut, ist auch irgendwie logisch, da das Verzeichnis keine Index-Datei hat, aber ist das so gewollt?
Clayde
 
Beiträge: 4
Registriert: 30.04.2005, 10:08

Beitragvon flashbanane am 05.05.2005, 23:45

Hallo,

ich habe in einen Verzeichnis 10 Dateien gespeichert.
5 Dateien haben als Namensbestandteil das Wort Apfel.

z.B. apfel-002938.gif

Die anderen haben als Namensbestandteil das Wort Birne.

z.B. birne-847647.gif

Wenn ich mit deinen Script das Verzeichnis auslese werden alle Dateien angezeigt.

Code: Alles auswählen
    $i = 1;
      $verzeichnis = opendir($uvz);

      while ($file = readdir($verzeichnis))
      {
          if (is_file($uvz."/".$file))
          {
           
              echo "<li><a href='$uvz/$file' target='_blank' onMouseOver=\"window.status='Dateiname: $file'; return true\" onMouseOut=\"window.status=''; return true\"><img src=\"$uvz/$file\" width=\"100\" border=0><br>$file</a> - - ";               $file = urlencode($file);
              echo " <a href=\"javascript:del('modules.php?name=".CAL_MODULE_NAMEN."&file=upload&aidname=$aidname&eid=$eid&loesch=datei&nname=$file&uvz2=$uvz2','".urldecode($file)."')\" onMouseOver=\"window.status='Löschen: " .urldecode($file). "'; return true\" onMouseOut=\"window.status=''; return true\"> <font color='#880000'>L&ouml;schen</font></a><hr></li>";
       1
              $i++;
          }
      }


Nun möchte ich die Liste filtern, so dass nur Dateien mit der Zeichenfolge „apfel-„ angezeigt werden.

Das ganze hat den Sinn, wenn ich einen Server mit Save_Mode on habe, kann ich nur mit einen festen Verzeichnis arbeiten. In diesem Verzeichnis müssen aber mehrere Benutzer Ihre Dateien ablegen. Diese Dateien sollen dann wieder den einzelnen Benutzer zugeordnet werden.

Ich habe keinen Plan wie ich das machen soll und ob das überhaupt geht, vielleicht kann mir ja einer auf die Sprünge helfen.

lg
flashbanane
 
Beiträge: 2
Registriert: 05.05.2005, 23:03

Beitragvon flashbanane am 06.05.2005, 21:41

Hallo,

habe nun schon selber eine Lösung gefunden falls es jemand interessiert.

Beim Speichern der Datei hänge ich meine Variablen, nach denen ich später filtern will, an den Dateinamen an und trenne diese mit einem Bindestrich.

Wenn ich später die Dateien abrufen will, kann ich den Dateinamen mit der Funktion split() zerlegen und kann für die Einzelwerte Bedingungen festlegen.

Zeitstempel-Datensatz-Namen-Nummer-Dateityp
1115365616-105-apfel-3-.jpeg

Code: Alles auswählen
list ($zeit, $zahl1, $nam, $zahl2, $rest) = split('-', $file);


Der Dateiname wird in die 5 Variablen aufgeteilt so das mir nun wieder die folgenden Einzelwerte zur Verfügung stehen:

1115365616 105 apfel 3 .jpeg

Nun kann ich das Verzeichnis auslesen und nur die Dateien nach meiner Bedingung anzeigen lassen.

Code: Alles auswählen
if ($zahl1==$datensatz) {
         Datei anzeigen!
      }
      
      else {
         Keine Datei zeigen!
      }


lg
flashbanane
 
Beiträge: 2
Registriert: 05.05.2005, 23:03

Beitragvon wizzardxx am 19.07.2005, 18:54

Ich habe das Script etwas geändert so das ich auch der Datei einen Titel vergeben kann. Allerdings weis ich jetzt nicht so ganz wie ich der
Datei den entsprechenden Titel zuordnen muss.
Ich habe in einer Mysql DB eine Tabelle angelegt in der der Name der Datei sowie ebend der Titel eingefügt wird.

Vielleicht kann mir ja jemand beim auslesen bzw. zuordnen der richtigen Datei helfen.

Code: Alles auswählen
//##################################
$sql = "SELECT title,datei_name FROM upload";
$result = mysql_query($sql) OR die(mysql_error());
//#################################       
     
       
   $i = 1;
      $verzeichnis = opendir($uvz);

      while ($file = readdir($verzeichnis)) //Verzeichnis auslesen
      {
          if (is_file($uvz."/".$file))
          {
  //##################################           
             $row = mysql_fetch_assoc($result);
  //##################################              
              echo "<li><a href='$uvz/$file' target='_blank' onMouseOver=\"window.status='Dateiname: $file'; return true\" onMouseOut=\"window.status=''; return true\">$file</a> - - "; //Datei(en) anzeigen
              $file = urlencode($file);             
              echo " <a href=\"javascript:del('$PHP_SELF?loesch=datei&name=$file&uvz2=$uvz2','".urldecode($file)."')\" onMouseOver=\"window.status='Löschen: " .urldecode($file). "'; return true\" onMouseOut=\"window.status=''; return true\"> <font color='#ff9933'>L&ouml;schen</font></a><br>
//########
$row[title]<br><hr></li>";
//########
             //Möglichkeit zum Löschen der Datei.
       
              $i++;
          }
      }
      if ($i == 1)
      {
          echo "Keine Dateien vorhanden";
      }
      closedir($verzeichnis);
      echo "</ol>";

Ich habe testweise 5 Uploads gemacht
Ich sehe zwar die Datei rechts im Feld aber darunter steht der falsche Titel.
wizzardxx
 
Beiträge: 3
Registriert: 19.07.2005, 18:43

Beitragvon CoolCasimir am 20.07.2005, 01:14

Du solltest Deine SELECT Abfrage vielleicht innerhalb der schleife machen..
Also dann jedes mal nur den einen Dateinamen + Beschreibung aus der Tabelle lesen.
CoolCasimir
Moderator
 
Beiträge: 2194
Registriert: 14.01.2004, 14:07
Wohnort: Hansestadt Hamburg

Beitragvon wizzardxx am 20.07.2005, 09:55

Jetzt erhalte ich zu jedem Datei Upload die gleiche Beschreibung.
Ich denke man muss da einen vergleich machen.
In der DB wird der Datiename genauso eingetragen wie die Datei
auch heisst. zb. tutorial.pdf
Der Datei name im Verzeichnis müsste mit dem Namen in der Datenbank verglichen werden. Und wenn die namen gleich sind dann die entsprechende Beschreibung dazu auslesen. Also denke ich müsste eine art Sortierfunktion eingebaut werden.
Oder bin ich da auf dem falschen Damfer. :wink:

Code: Alles auswählen
         
   $i = 1;
      $verzeichnis = opendir($uvz);

      while ($file = readdir($verzeichnis)) //Verzeichnis auslesen
      {

   //##################################
   $sql = "SELECT title,datei_name FROM upload";
   $result = mysql_query($sql) OR die(mysql_error());
   //#################################   

          if (is_file($uvz."/".$file))
          {
  //##################################           
             $row = mysql_fetch_assoc($result);
  //##################################             
              echo "<li><a href='$uvz/$file' target='_blank' onMouseOver=\"window.status='Dateiname: $file'; return true\" onMouseOut=\"window.status=''; return true\">$file</a> - - "; //Datei(en) anzeigen
              $file = urlencode($file);             
              echo " <a href=\"javascript:del('$PHP_SELF?loesch=datei&name=$file&uvz2=$uvz2','".urldecode($file)."')\" onMouseOver=\"window.status='Löschen: " .urldecode($file). "'; return true\" onMouseOut=\"window.status=''; return true\"> <font> color='#ff9933'>L&ouml;schen</font></a><br>
//########
$row[title]<br><hr></li>";
//########
             //Möglichkeit zum Löschen der Datei.
       
              $i++;
          }
      }
      if ($i == 1)
      {
          echo "Keine Dateien vorhanden";
      }
      closedir($verzeichnis);
      echo "</ol>";
wizzardxx
 
Beiträge: 3
Registriert: 19.07.2005, 18:43

Beitragvon CoolCasimir am 20.07.2005, 12:21

Wie wärs denn mal mit einer WHERE Abfrage..
Code: Alles auswählen
$sql = "SELECT title,datei_name FROM upload WHERE datei_name = $file";

Kannst naürlich auch alles sortieren.. Muss man aber nicht :wink:
CoolCasimir
Moderator
 
Beiträge: 2194
Registriert: 14.01.2004, 14:07
Wohnort: Hansestadt Hamburg

Beitragvon wizzardxx am 20.07.2005, 12:59

Ahhhhh ..... ich sollte vorher mal mein HIRN einschalten :wink:

So wird ein Schuh daraus.

Code: Alles auswählen

         $sql = "SELECT title,datei_name FROM dia_upload WHERE datei_name = '".$file."'";
      $result = mysql_query($sql) OR die(mysql_error());



Danke für deine Hilfe. :)
wizzardxx
 
Beiträge: 3
Registriert: 19.07.2005, 18:43

Beitragvon Tobi@s am 28.08.2005, 12:53

Mal ne kleine Info am Rande an alle die das Problem haben, dass man versucht eine Datei hochzuladen und danach nichts geschieht und es auch keine Fehlermeldung ausgegeben wird!:

1. Falls auf eurem Server Confixx ist
Code: Alles auswählen
Als Admin einloggen und httpd Spezial wählen -> eienn Kunden ändern -> webX -> Suchen -> php_admin_value safe_mode off eintragen -> "für alle Domains des Kunden setzen" auswählen & Haken bei "für alle Domains, die vom Kunden angelegt werden, setzen" -> Speichern

2. php.ini editieren
Code: Alles auswählen
php.ini aufrufen und editieren (/etc/php.ini) -> register_globals = On -> safe_mode = Off -> speichern -> per SSH mit z.B. PuTTY als root einloggen -> "rcapache stop" oder "rcapache2 stop" (stoppt den Apache) -> "rcapache start" oder "rcapache2 start" (startet ihn wieder = wie ein restart) -> eventuell noch "init 6" -> FERTIG


Seite mit Upload Script aufrufen und mit Firefox Strg+F5 drücken dann dürfte alles funzen. Viel Spaß
Tobi@s
 
Beiträge: 21
Registriert: 25.08.2005, 19:06

Beitragvon maik_dd am 07.11.2005, 08:58

hallo,

gibt es denn auch die möglichkeit das man alle dateitypen mit diesem upload script hochladen kann?

mfg
maik_dd
 
Beiträge: 1
Registriert: 07.11.2005, 08:55

Beitragvon CoolCasimir am 08.11.2005, 00:13

maik_dd hat geschrieben:hallo,

gibt es denn auch die möglichkeit das man alle dateitypen mit diesem upload script hochladen kann?

mfg

Na klaro, musst halt nur die Dateiüberprüfung rausschmeißen.
CoolCasimir
Moderator
 
Beiträge: 2194
Registriert: 14.01.2004, 14:07
Wohnort: Hansestadt Hamburg

Bei mir passiert einfach nichts

Beitragvon morpheus31337 am 07.12.2005, 12:29

Hi,

bei mir läuft das Script leider überhaupt nicht.
Er hat zwar Zugriff auf das VZ Web, aber ich kann weder Datein hochladen, noch Verzeichnisse anlegen.
Wenn ich Anlegen oder Hochladen klicke springt er immer zum Ausgangsbild zurück und das wars...

Woran kann das denn liegen. Die Berechtigungen für das Verzeichnis habe ich auf 777 gesetzt.

Gruß
CB
morpheus31337
 
Beiträge: 1
Registriert: 07.12.2005, 12:24
Wohnort: Hamburg

VorherigeNächste

Zurück zu Artikel Softwareprogrammierung

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste