upload funktion

Begonnen von _Gerry_, 13 September 2003, 20:14:44

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 2 Gäste betrachten dieses Thema.

_Gerry_

Hallo Leute!
Also ich bin wiedermal am verzweifeln!
Hab ein upload Script geschrieben. doch jedesmal wenn ich dann auf senden klicke bekomme ich folgende Fehlermeldung:

Warning: open_basedir restriction in effect. File is in wrong directory in /home/.sites/33/site449/web/up2.php on line 3

Hier einmal das Script:

 
<?PHP
if(!empty($file_name)){
if(copy($file,"album/$file_name")){
if(is_uploaded_file($file)){
echo "<b>Upload beendet!</b><br>";
echo "Dateiname: $file_name";
echo "<br>";
echo "Dateigröße: $file_size Byte";
    }
      }
      }
      else{

echo"<html><head></head>";
echo"<body bgcolor=\"#FFFFFF\" text=\"#000000\">";
echo"<form name=\"form1\" enctype=\"multipart/form-data\" method=\"post\" action=\"up2.php\">";
echo"<p><input type=\"file\" name=\"file\"><br>";
echo"<input type=\"submit\" name=\"Abschicken\" value=\"Download beginnen\">";
echo"</p></form>";
echo"</body></html>";

 }
?>

 

Hier ein Auszug meiner phpinfo:

PHP Version:     4.2.3
open_basedir:  /home/.sites/33/site449/web
upload_tmp_dir:  /home/tmp
user_dir:  no value

Hat vielleicht jemand einen Tip was da sein kann, bzw wie ich es ändern muß damit der upload klappt??

Bin für jeden Tip dankbar!!  ;)
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

BowlingX

Sooo..weil ich mal so gnädig bin ist hier meine gerade geschriebene Upload klasse: :D  :D  :D

 
<?php
class Upload
{
# Variabeln für die Upload Klasse:
# Datei im Temp Ordner des Servers
var $temp;
# Ziel Ordner
var $ziel;
var 
$dateityp;
var 
$dateiname;
var 
$dateigroesse;
# Die Dateitypen
var $typs = array('Platzhalter','gif''jpeg''png''swf'); 
var 
$alltyps = array('Platzhalter','gif''jpeg''png''swf'); 
var 
$breite;
var 
$hoehe;
# Diese Funktion ermittelt den Dateityp der Datei und gibt ihn aus:
function UploadReturnFileTyp($file){
# Dateityp ermitteln:
$index getimagesize($file); 
$this->dateityp $this->typs[$index[2]];
# Ausgabe des Dateityps
return $this->dateityp;
}
function 
UploadReturnBreite($file){
$index_breite getimagesize($file);
return 
$index_breite[0];
}
function 
UploadReturnHoehe($file){
$index_hoehe getimagesize($file);
return 
$index_hoehe[1];
}
function 
UploadFile($filename,$targetdir,$fupload,$fupload_size,$maxsize,$fupload_type,$breite,$hoehe){
# Überprüfen ob die Datei kleiner bzw. gleichgross wie die festgelegte Grösse ist!
if(empty($fupload))
{
$this->display_error("No File selectet or unknown file");
return 
0;
}
if(
$fupload_size <= $maxsize)
{
# Durchlaufen einer Schleife:
while($ii <=4)
{
if(
$fupload_type == "image/".$this->alltyps[$ii]."")
{
# Der Variable Dateityp den ermittelten Dateityp zuweisen:
# Aber NUR wenn $fupload_type den verfügbaren entspricht...
$this->dateityp "".$this->alltyps[$ii]."";
}
$ii $ii+1;
}
if(empty(
$this->dateityp)){
$this->display_error("I dont know this file type:");
echo 
"<b>$fupload_type</b>";
return 
0;
}
# "Echte" breite und Höhe ermitteln lassen:
$this->breite $this->UploadReturnBreite($fupload);
$this->hoehe $this->UploadReturnHoehe($fupload);
# Fehlerausgeben wenn die Proportionen überschritten werden:
if($this->breite >= $breite)
{
$this->display_error("Die Proportionen deines Bildes sind <b>zu gross</b>. Die Breite deines Bildes <b>beträgt ".$this->breite."</b>.Erlaubt sind aber nur <b>$breite</b>");
return 
0;
}
elseif(
$this->hoehe >= $hoehe)
{
$this->display_error("Die Proportionen deines Bildes sind <b>zu gross</b>. Die Höhe deines Bildes <b>beträgt ".$this->hoehe."<</b>.Erlaubt sind aber nur <b>$hoehe/b>");
return 
0;
}
# Überprüfen ob der Ordner beschreibar ist:
if(is_writable($targetdir))
{
# Nur hochladen wenn die Datei noch nicht existiert!
if(!file_exists("$targetdir/$filename")){
if(!
move_uploaded_file($fupload"$targetdir/$filename")){
$this->display_error("Can't Upload File");
return 
0;
}
else
{
$this->display_info("Picture Uploaded");
@
chmod("$targetdir/$filename"0644);
return 
0;
}
# Nötige Dateirechte geben:

}
else
{
$this->display_info("File Already Exists");
return 
0;
}
}
else{
$this->display_error("Target directory is not Writable");
return 
0;
}
}
else
{
$this->display_error("The File is too large");
return 
0;
}
}
function 
display_error($error){
echo 
"<b>Error:</b> $error";
}
function 
display_info($info){
echo 
"<b>Information:</b> $info";
}
}

###########################################
/**
 * 
 *
 * @version $Id$
 * @copyright 2003 David Heidrich ->> Genutec Studios
 **/

 
?>

 


Fragt mich jetzt nicht warum einige teile in englisch sind...ging irgendwie schneller zu schreiben statt: "Ein Fehler ist aufgetreten bla"...

Achja..ich hoffe du weist wie man die klasse aufruft..falls nicht:
 
$bla = new Upload;
$bla->UploadFile($filename,$uploadDir,$fupload,$fupload_size,$maxUploadFileSize,$fupload_type,$maxwidh,$maxheight);
 


Die Klasse dann nur noch mit variabeln ansprechen (wie oben gezeigt) und feddich ist das ganze...*G*

[Editiert am 15/9/2003 von SiteAssistant BowlingX]
Kein Support über Mail, (ungefragter) PN oder ICQ, ausschließlich direkt im Forum!

_Gerry_

Okay, hab mir dein Script mal kopiert!
Mein Problem hab ich mittlerweile zwar schon gelöst (Member_Photoupload etwas umgeschrieben),
aber ein Uploadscript kann man ja immer mal benötigen!  ;)

Mal "Danke" sag!
CMS-Version: pragmaMx 0.1.11, 1.33.2.12.2.9/2009-05-10   
PHP-Version: 5.2.0-8+etch5~pu1
MySQL-Version: 5.0.32-Debian_7etch1
Server-Version: Apache/2.2.3 (Debian) mod_ssl/2.2.3 OpenSSL/0.9.8c

BowlingX

Kein Support über Mail, (ungefragter) PN oder ICQ, ausschließlich direkt im Forum!

BowlingX

die klasse ist im prinzip noch net feddich...später soll sie auch noch "normale" Dateiendungne hochladen können...deswegen sind die variabeln da *G*

 
Zitatwürd ich davor ein umask (000); setzen, sonst kann es
unliebsame Effekte geben.
 
Ok..dange für den Tipp...bisher ging aber alles..ich machs aber mal trotzdem *G*...mal schauen, vielleicht kannst du die klasse dann für die gallery verwenden oder so
Kein Support über Mail, (ungefragter) PN oder ICQ, ausschließlich direkt im Forum!

jubilee

Hmmm ....
@BowlingX:
Wozu sind eigentlich im Kopf der Klasse die variablen
 
Zitatvar $ziel;
var $temp;
var $dateigroesse;
definiert. Die werden doch nirgends gebraucht (oder überseh ich da was)???
Weiter bei
 
Zitat@chmod("$targetdir/$filename", 0644);
würd ich davor ein   umask (000); setzen, sonst kann es
unliebsame Effekte geben.
MfG
jubilee


[Editiert am 16/9/2003 von SiteAdmin jubilee]

jubilee

Hallo !
 
Zitatdie klasse ist im prinzip noch net feddich...
Ja, deswegen. hatte mir schon soetwas gedacht....
 
Zitatvielleicht kannst du die klasse dann für die gallery verwenden  
Ja, in der nächsten Version der Gallery,
(die mit Sicherheit ganz ganz anders aussehen wird als die jetzige)
kann ich mir das schon vorstellen. Obwohl Deine klasse dann eher in die API gehört, damit man das auch Systemweit nutzen kann.
MfG
jubilee