[PHP] Upload script

Zuaroacha

Lt. Commander
Registriert
Nov. 2001
Beiträge
1.157
PHP Upload script

Hoi Loids !

Also vielleicht ist das jetzt echt übertrieben aber ich wollte trotzdem fragen!

kann mir vielleicht einer ein Upload skript machen für pixx also jpg, gif , jpeg...

und es sollte angezeigt werden welche dateien sich bereits im ordner befinden...

und wenn man geupploadet hat sollte man das bild sehen und den link zum bild...

und falls die datei bereits existiert sollte eine fehlermeldung kommen

und die dateigrösse sollte nicht 100 kb überschreiten !

viele wünsche vielleciht kanns mir wer erfüllen währe echt super !!!
 
sowas suche ich auch schon seit längerem, hab aber auch noch nix gefunden!:(
 
naja ich hab bereits eins gefunden

guck mal auf codezilla.at

nur das problem ist das das keinen schutz hat gegen überschreiben der dateien :( und das hilft mir dann auch nciht !
 
ich hab sowas in der Art mal in Perl gemacht.

Die Syntax dürfte relativ ähnlich sein.

Vllt kannste hiermit ja was anfangen:
Code:
#!E:/Perl/bin/perl -w
use CGI;
use strict 'refs';
use lib '..';
use CGI qw(:standard);
use CGI::Carp qw/fatalsToBrowser/;
use File::Copy;
$nick = param('nick');
$pass = param('pass');
$ip= remote_addr;
if(!($nick))
{
	%user = cookie('pcwuser');
}
else
{
  $user{'nick'}=$nick;
  $user{'pass'}=$pass;
  $user{'ip'}=$ip;
}
$the_cookie = cookie(-name=>'pcwuser',
		     -value=>\%user,
		     -expires=>"+1h");
#-----------Creating a New query----------------------
#-----------Print HTML-Header-------------------------

print header(-cookie=>$the_cookie);

print '<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>HTTP-Kontrollzentrum</title>
<link rev="made" href="mailto:pcw@pcw.homeip.net" />
<meta name="keywords" content="Upload" />
<style media="screen" type="text/css"><!--
a:link{font-family:Tahoma,Arial;color:#ADF3FB;text-decoration:none}
a:hover{font-family:Tahoma,Arial;color:#ADF3FB;text-decoration:none}
a:active{font-family:Tahoma,Arial;color:#ADF3FB;text-decoration:none}
a:visited{font-family:Tahoma,Arial;color:#ADF3FB;text-decoration:none}
td{font-family:Tahoma,Arial;font-Size:11px;color:#ADF3FB;}
td.h{font-family:Tahoma,Arial;font-Size:14px;color:#ADF3FB;}
table {border-width:1px;
  border-style:solid;
  border-color:#c0dcdc;
  padding:1cm;
  text-align:justify; }
--></style>
</head>
<body bgcolor="#000c34" text="#619AB8">','<font face="Tahoma">';
print small(strong("Version "),$CGI::VERSION);
print "<center>",h2("HTTP-Kontrollzentrum"),
    strong("Dieses Feature arbeitet erst ab Netscape 2.0, IE 4.0 oder neueren Versionen."),
    p;
if ($user{'nick'})
{
	open(IND,"<./../members/user.ind")||die "Konnte Userverzeichnis nicht öffnen!\n";
	@file=<IND>;
	close(IND);
	my $i;
	$no;
	for ($i=1;$i<=$#file;$i++)
	{
		chomp($file[$i]);
		if ($file[$i] eq $user{'nick'})
		{
			$no=$i;
		}
	}
	if ($no!=0)
	{
 		$user{'nick'}=$no;
	}
	$pfad="../members/$user{'nick'}/";
	$url="http://pcwServer.de/pcw/members/$user{'nick'}/";
	$script='http://pcwServer.de/pcw/cgi-bin/filecontrol.cgi';

	$default_name = remote_addr;
# Start a multipart form.
	print start_multipart_form(),
	    "<table><tr><th colspan=\"2\">$url</th></tr><tr><td class=\"h\">Dateiname: </td>\n<td>",
	    textfield('savefile',$default_name,30),reset,"</td>\n</tr><tr>\n<td class=\"h\">Datei: </td>\n<td>",
	    filefield('filename','',30),"</td>\n</tr><tr>\n",
	    "<td>Name:</td>\n",
		"<td><input name=\"nick\" value=\"\" size=\"15\"></td></tr>\n",
		"<tr><td>Passwort:</td>\n",
		"<td><input type=\"password\" name=\"pass\" value=\"\" size=\"15\"></td></tr>\n<tr>\n",
	    "<td colspan=\"2\" align=\"center\">",submit('submit','Hochladen'),"</td>\n</tr>\n</table>\n",
	    endform;
# Process the form if there is a file name entered
	if (my $file = param('filename'))
	{
	    my $tmpfile=tmpFileName($file);
	    $savefile = param('savefile');
	    $savefile=~ s/\//-/gs;
	    $savefile = "$pfad$savefile";
[b]	    if(-e $savefile)
	    {
 	    	$n=0;
	    	$ind=rindex($savefile,'.');
	    	$savfile=substr($savefile,0,$ind);
	    	$end=substr($savefile,$ind+1,length($savefile)-$ind);
	    	while (-e "$savfile($n).$end")
	    	{
	        	$n++;
	     	}
	     	$savefile="$savfile($n).$end";
	    }[/b]
	    $savefile=~s/(((\.php)|(\.phps)|(\.phtml)|(\.pl)|(\.cgi))+)/\.script/gs;
	    chmod 0777, $savefile;
	    copy($tmpfile,$savefile);
	}
	if (my $del = param('del'))
	{
    	$delfile="$pfad$del";
   		if(-e $delfile)
   		{
   			unlink($delfile);print "Datei ($del) gelöscht!\n";
   		}
   		else
   		{
   			print "Error: Kann $del nicht löschen. Datei existiert nicht!\n";
   		}
	}
	if (my $newname = param('newname'))
	{
	    $newname=~s/(((\.php)|(\.phps)|(\.phtml)|(\.pl)|(\.cgi))+)/\.script/gs;
   		$new="$pfad$newname";
   		$rename=param('rename');
   		$re="$pfad$rename";
   		if(-e $re)
   		{
     		if(rename($re,$new))
     		{
      			print "$rename wurde erfolgreich umbenannt in $newname!\n";
      		}
      		else
      		{
      			print hr,"$!\n";
     		}
   		}
   		else
   		{
     		print "Error: Kann $re nicht umbenennen. Datei existiert nicht!\n";
   		}
	}
    &ShowPics;
}
else
{
	print strong("Du bist nicht eingeloggt!\n");
}
print "</center>\n",end_html;

sub ShowPics
{
 @file=<$pfad*>;
if(@file){
 print "<table><tr><th>Dateien online:</th><th>Bytes</th><th>L&ouml;schen</th><th>Umbenennen</th>\n";
 foreach(@file)
 {
  if(-f $_){
   $size= -s $_;
   $_=~ s/$pfad//gs;
   if($_ ne lc("Thumbs.db"))
   {
     print "</tr><tr><td class=\"h\"><a href=\"$url$_\" target=\"_blank\">$_</a></td>
<td align=\"right\">$size</td>
<td><form method=\"post\" action=\"$script\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"del\" value=\"$_\"><input type=\"hidden\" name=\"nick\" value=\"$user{'nick'}\"><input type=\"hidden\" name=\"pass\" value=\"$user{'pass'}\"><input type=\"submit\" name=\"submit\" value=\"Löschen\">
</form></td>
<td><form method=\"post\" action=\"$script\" enctype=\"multipart/form-data\">
<input type=\"hidden\" name=\"rename\" value=\"$_\"><input type=\"hidden\" name=\"nick\" value=\"$user{'nick'}\"><input type=\"hidden\" name=\"pass\" value=\"$user{'pass'}\"><input type=\"text\" size=\"15\" name=\"newname\" value=\"$_\"><input type=\"submit\" name=\"submit\" value=\"Umbenennen\">
</form></td>\n";
   }
  }
 }
 print "</tr></table>\n";}
 print hr;

}

Der markierte Bereich überprpüft (in Perl), ob die datei schon existiert und hängt dementsprechend ein "($i)" ran, wobei $i ne hochzählende nummer ist.

[edit]
Aus der PHP-Manual von PHP.net:
Sie können zum Beispiel $_FILES['userfile']['size'] benutzen, um zu kleine bzw. zu große Dateien wegzuwerfen. Sie können $_FILES['userfile']['type'] nutzen, um Dateien eines unerwünschten Typs wegzuwerfen. Seit PHP 4.2.0 können Sie Ihre Logik auch mittels $_FILES['userfile']['error'] anhand der Fehlercodes planen. Egal welche Logik Sie verwenden, Sie sollten die Datei in dem temporären Verzeichnis entweder löschen, oder an einen anderen Ort verschieben.
[/edit]
 
Zuletzt bearbeitet:
hm perl hab ich leider nicht zu verfügung :(

aber könnte mir jemand das skript editieren ? so das das lauft ?

Code:
<!--
<?


$platz = "sr"; // Ordner in den hochgeladen werden soll
$groesse = "100"; // Wie groß (Kb) darf das Bild sein? ((1KB) = 1024 byte)

?>
<html>
<head>
<title>>>>uploads for sr50<<<</title>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#96ACDA" alink="#96ACDA" vlink="#000000">


<?


function stricha()
   {

   echo "<i>(C) by [url]http://www.codezilla.at/[/url]</i><br>";
   echo "<b>->Dateien umbenennen nach zb: AREA001</b><br>";
   echo "<b>um das Überschreiben zu verhindern!!!Und um Überblick zu haben!<-</b><br>";
$verz=opendir ('/easyphp/www/sr.');

while ($file = readdir ($verz)) {
  if($file != "." && $file != ".."){
  echo "- $file<br>";
}
  }
  closedir($verz);

}


if (isset($Abschicken)) {


// ********  file zugroß ************
if ($file_size >= ($groesse * 1024)){
$zugross = ($file_size /1024);
$zugross = ceil($zugross);
?>
<table border="1" width=400>
<tr>
    <td colspan="2"><b>Sr50 Upload/Fragen? PN -> AREA-71</b></td>
    <td bgcolor="#96ACDA"><font color="#FFFFFF">FEHLER</font></td></tr>
<tr><td colspan="2">&nbsp;</td><td rowspan=4 valign=top>&nbsp;<br> <a href="cz_uploada.php">hochladen</a></td></tr>
<tr><td  width="22">&nbsp;</td><td bgcolor="#96ACDA">
<? echo $zugross; ?>
</td></tr>
<tr><td bgcolor=#96ACDA>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>&nbsp;</td><td align="right" bgcolor=#96ACDA>&nbsp;

</td></tr>
<tr><td colspan=2 align=center><? echo "<b>Das File ist zu groß ($zugross kb),<br> es sind nur $groesse kb möglich</b>"; ?></td><td> <a href="javascript:history.back()">zurück</a></td></tr>
<tr><td colspan=3><? stricha(); ?></td></tr>
</table>
<?
die();
}


// ********  file nicht erlaubt ************
$file_ending = explode(".", $file_name);
$file_ending[1] = strtoupper($file_ending[1]);
if ( (!($file_ending[1] == "JPEG") )&&(!($file_ending[1] == "PNG") )&&(!($file_ending[1] == "JPG") )&& (!($file_ending[1] == "GIF")))
{
?>
<table border="1" width=400>
<tr>
    <td colspan="2"><b>Sr50 Upload/Fragen? PN -> AREA-71</b></td>
    <td bgcolor="#96ACDA"><font color="#FFFFFF">FEHLER</font></td></tr>
<tr><td colspan="2">&nbsp;</td><td rowspan=4 valign=top>&nbsp;<br> <a href="cz_uploada.php">hochladen</a></td></tr>
<tr><td  width="22">&nbsp;</td><td bgcolor="#96ACDA">
<? echo $file_name; ?>
</td></tr>
<tr><td bgcolor=#96ACDA>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>&nbsp;</td><td align="right" bgcolor=#96ACDA>&nbsp;

</td></tr>
<tr><td colspan=2 align=center><? echo "<b>$file_ending[1] Files nicht erlaubt!</b>"; ?></td><td> <a href="javascript:history.back()">zurück</a></td></tr>
<tr><td colspan=3><? stricha(); ?></td></tr>
</table>
<?
die();
}

}
// **** file ok ***********

if(!empty($file_name)){
if(@copy($file,"$platz/$file_name")){



$file_name2 = "$platz/$file_name";

if(file_exists($file_name)){
  echo "exisitert bereits";
}

?>
<table border="1" width=400>
<tr>
    <td colspan="2"><b>Sr50 Upload/Fragen? PN -> AREA-71</b></td>
    <td bgcolor="#96ACDA"><font color="#FFFFFF">HOCHLADEN 2</font></td></tr>
<tr><td colspan="2">&nbsp;</td><td rowspan=4 valign=top>&nbsp;<br> <a href="cz_uploada.php">hochladen</a></td></tr>
<tr><td  width="22">&nbsp;</td><td bgcolor="#96ACDA">
<? echo $file_name; ?>
</td></tr>
<tr><td bgcolor=#96ACDA>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td>&nbsp;</td><td align="right" bgcolor=#96ACDA>
<? echo "<img src=\"$file_name2\">"; ?>
</td></tr>
<tr><td colspan=3 align=center><? echo "<b>$file_name wurde im Ordner $platz erstellt!<br>Die Adresse zum Bild lautet [url]http://eistee.no-ip.com/sr50/[/url]$file_name !</b>"; ?></td></tr>
<tr><td colspan=3><? stricha(); ?></td></tr>
</table>
<?





}

}else{
?>
<form name="form1" enctype="multipart/form-data" method="post" action="cz_uploada.php">
<table border="1" width=400>
<tr>
      <td colspan="2"><b>Sr50 Upload/Fragen? PN -> AREA-71</b></font></td>
      <td bgcolor="#96ACDA"><font color="#FFFFFF">HOCHLADEN</font></td></tr>

<tr><td colspan="3">&nbsp;</td><td rowspan=5 valign=top>&nbsp;</td></tr>

<tr><td  width="22">&nbsp;</td><td bgcolor="#96ACDA"><input type="file" name="file"></td></tr>

<tr><td bgcolor=#96ACDA>&nbsp;</td><td>&nbsp;</td></tr>

<tr><td>&nbsp;</td><td align="right" bgcolor=#96ACDA><input type="submit" name="Abschicken" value="Hochladen"></td></tr>
<tr><td colspan=3><? stricha(); ?></td></tr>
</table>
</form>

<?
}

?>
<br><br><br>

</body>
</html>
 
naja das is auch nicht das ware da musste dich registieren und so einfach zu viel grafik schnick schnack ...

weis den keiner wie ich das vorhandene skript ändern kann das es einfach kein überschreiben mehr zulässt ?

Bitte ist echt wichtig !
 
ja nur kann mir bitte wer sagen wie ich das einbinde ? ich habe leider keinen plan von php :(
 
hrhr, die arbeit mache ich nicht für dich ;)
Ich sage dir aber, wie du es lösen kannst ;)

du lädst die datei mit der funktion copy hoch, in ein Tempverzeichnis... Dann überprüfst du mit dem dateinamen der hochgeladenen datei ob der dateiname schon in dem richtigen verzeichnis genutzt wird... Wenns nicht der fall ist, kopierst du erneut mit copy aus dem temp verzeichnis in das richtige, ansonsten lässt du es mit unlink löschen^^
 
Original erstellt von Smith
hrhr, die arbeit mache ich nicht für dich ;)
Ich sage dir aber, wie du es lösen kannst ;)

du lädst die datei mit der funktion copy hoch, in ein Tempverzeichnis... Dann überprüfst du mit dem dateinamen der hochgeladenen datei ob der dateiname schon in dem richtigen verzeichnis genutzt wird... Wenns nicht der fall ist, kopierst du erneut mit copy aus dem temp verzeichnis in das richtige, ansonsten lässt du es mit unlink löschen^^

hab ich zwar überhaupt nicht verstanden aba ich werd mal schaun das ichs irgendwie hinkrieg :rolleyes:
 
1. Du lädst die Datei hoch -> Funktion: copy
2. Als Zielverzeichnis nimmst du ein beliebiges Verzeichnis... z.B. temp
3. Nun überprüfst du den Dateinamen von der Datei die im temp ist, mit den Dateien, die schon hochgeladen wurde (im wirklichen Zielverzeichnis) -> Funktion: file_exists
4. Wenn die Datei schon besteht lässt du sie aus dem temp Ordner löschen -> Funktion: unlink
5. Falls sie nicht besteht, kopierst du die Datei aus dem temp Ordner in den Zielordner -> Funktion: copy
6. Danach löscht du die Datei aus dem temp Ordner
 
Original erstellt von Smith
1. Du lädst die Datei hoch -> Funktion: copy
2. Als Zielverzeichnis nimmst du ein beliebiges Verzeichnis... z.B. temp
3. Nun überprüfst du den Dateinamen von der Datei die im temp ist, mit den Dateien, die schon hochgeladen wurde (im wirklichen Zielverzeichnis) -> Funktion: file_exists
4. Wenn die Datei schon besteht lässt du sie aus dem temp Ordner löschen -> Funktion: unlink
5. Falls sie nicht besteht, kopierst du die Datei aus dem temp Ordner in den Zielordner -> Funktion: copy
6. Danach löscht du die Datei aus dem temp Ordner

versteh ich zwar noch immer nicht aba is ja egal trotzdem thx...
ich hab ja geasgt ich hab keinen plan von php html und co...
 
eigentlich braucht man gar nicht überprüfen, ob die Datei existiert, man kann sie einfach löschen, mit @ kann man eine etwaige Fehlermeldung abfangen, sollte die Datei nicht existieren - ist ein Arbeitsschritt weniger ;)
 
Er wollte doch ne Sicherung haben, dass bestehende Dateien nicht überschrieben werden
 
genau ich wollte habn das wenn eine datei mit dem namen 01 bereits existiert das diese nicht überschrieben werden kann wenn jemand die gleiche datei mit dem namen 01 uploadet...
 
aso, na wieso vergibst du dann nicht Namen für die Dateien !? dann gibt's das Problem nicht mehr :)
 

Ähnliche Themen

Antworten
22
Aufrufe
3.079
mambokurt
M
M
Antworten
1
Aufrufe
1.136
master.rv
M
Zurück
Oben