Bilddatei auf meinem server uploaden und dann...
Jörk
- grafik
0 Roland0 nichtschecker0 Tom0 nichtschecker0 nichtschecker0 Tom0 nichtschecker0 wahsaga
hi,
ich möchte meinem usern ermöglichen, dass sie ihre bilder auf meinen server hochladen und das diese dann auf meiner webseite angezeigt werden. wenn man jetzt diese seite aber aufruft soll da ein kleines bild angezeigt werden, klickt man auf das bild selber, dann wird es vergrößert.
jetzt ist mir auf mehreren webseiten aufgefallen das die bilder die in kleinformat angezeigt werden viel kleiner (kb-größe) sind als die bilder wenn man draufklickt, also wenn sie vergrößert sind. werden die irgendwie kompremiert oder werden auf den webseite sozusagen thumbs geladen???
Hi,
ja, Vorschaubildchen sind üblicherweise Thumbs (und sollten es auch sein). Wenn die Bilder direkt nach dem upload durch andere User sichtbar sein sollen, muß die Generierung der Thumbs natürlich automatisiert auf dem Server ablaufen.
Ein paar Möglichkeiten dazu findest Du hier:
http://www.shotgraph.com/
http://www.phpfinder.de/archiv/scripts/?inc=overview&AreaID=66
Gruß
Roland
Also,
du weißt das dein Server PHP-fähig sein muss?
Script für die User zum Hochladen: [bild_upload.html]
<html>
<head>
<title>Bild-Upload</title>
</head>
<body bgcolor="#00002a" text="#ffffff">
<form action='bild_upload.php' enctype='multipart/form-data'
method='post'>
<table align="center" width="85%">
<tr>
<td align="center" colspan="3">
<input type='hidden' name='was' value='doit' class="button">
<input type='hidden' name='action' value='upload'
class="button">
</td>
</tr>
<tr>
<td width="40%" rowspan="2" style="vertical-align: top;">
</td>
<td width="20%" align="center">
<input type='file' name='bild' value='' style="background-
color: #7E867E; color: #ffffff; border-color: #000000; font-
weight: bold;">
</td>
<td width="40%" rowspan="2" style="vertical-align: top;">
</td>
</tr>
<tr>
</tr>
<tr>
<td align="center" height="20" colspan="3"></td>
</tr>
<tr>
<td align="center" colspan="3">
<input type='submit' name='submit' value='Und hoch damit...'
class="button">
</td>
</tr>
<tr>
<td align="center" height="20" colspan="3"></td>
</tr>
<tr>
<td align="center" colspan="3">
Upload-Datei auswählen
</td>
</tr>
</table>
</form>
</body>
</html>
Script für die Auswertung: [bild_upload.php]
<html>
<head>
<title>Bild-Upload</title>
</head>
<body bgcolor="#00002a" text="#ffffff">
<?php
if($was=="doit") {
$size = $bild_size; // Größe der Datei
$name = $bild_name; // Der Originalname
$type = $bild_type; // Der MIME Type der Datei
if(eregi("(jpg|jpeg|gif|tiff|png)$",$name)) {
//legt die zugelassenen Bildformate fest
if($size<100000000 AND $size!=0) {
//legt die zugelassene Größe des Bildes fest
copy($bild,$name); // Kopiert das Bild
echo "Die Datei wurde erfolgreich hochgeladen.<br>";
echo "Größe: ".$size." Byte<br>";
echo "Name: ".$name."<br>";
echo "MIME-Type: ".$type."<br>";
echo "Ansehen: <a href='".$name."'>".$name."</a>";
echo "<br><br><br>";
echo "<a href="index.html" target="_self">Zurück zur
Startseite</a>";
} else {
echo "Die Datei ist zu groß!";
}
} else {
echo "Falsche Erweiterung: ".$name;
}
}
?>
<?php
$pic = "<img src='".$name."' alt='".$name."'><br>";
$fp = fopen ("galerie.html","a");
fwrite($fp,$pic);
fclose($fp);
$fp = fopen ("galerie.html","r");
fclose($fp);
?>
</body>
</html>
Kleine Erläuterung:
Erste Datei unter bild_upload.html speichern.
Zweite Datei unter bild_upload.php speichern.
In der PHP-Datei[upload_bild.php] musst du bei
if(eregi("(jpg|jpeg|gif|tiff|png)$",$name)) {...
die Datei-Formate[jpg,jpeg,gif,tiff,png) durch deine Datei-
Formate ersetzten, oder so lassen!
In der PHP-Datei[upload_bild.php] musst du bei
echo "<a href="index.html" target="_self">Zurück zur
Startseite</a>";
das index.html durch deine Startseite oder durch die Seite
ersetzten, auf die der User danach kommen soll.
In der PHP-Datei[upload_bild.php] musst du bei
<?php
$pic = "<img src='".$name."' alt='".$name."'><br>";
$fp = fopen ("galerie.html","a");
fwrite($fp,$pic);
fclose($fp);
$fp = fopen ("galerie.html","r");
fclose($fp);
?>
galerie.html durch die Seite ersetzen, auf der die Bilder
angezeigt werden sollen!!!
Setze die Serverrechte bei deinem Server auf 777 sonst gehts
nicht!
Bei weiteren Fragen steh ich dir gern zu Verfügung!
Hello,
############################################
# #
# Dieses Script ist gemeingefährlich #
# #
############################################
Script für die Auswertung: [bild_upload.php]
<html>
<head>
<title>Bild-Upload</title>
</head><body bgcolor="#00002a" text="#ffffff">
<?php
if($was=="doit") {$size = $bild_size; // Größe der Datei
$name = $bild_name; // Der Originalname
$type = $bild_type; // Der MIME Type der Datei
if(eregi("(jpg|jpeg|gif|tiff|png)$",$name)) {
//legt die zugelassenen Bildformate fest
if($size<100000000 AND $size!=0) {
//legt die zugelassene Größe des Bildes fest
copy($bild,$name); // Kopiert das Bildecho "Die Datei wurde erfolgreich hochgeladen.<br>";
echo "Größe: ".$size." Byte<br>";
echo "Name: ".$name."<br>";
echo "MIME-Type: ".$type."<br>";
echo "Ansehen: <a href='".$name."'>".$name."</a>";
echo "<br><br><br>";
echo "<a href="index.html" target="_self">Zurück zur
Startseite</a>";
} else {
echo "Die Datei ist zu groß!";
}
} else {
echo "Falsche Erweiterung: ".$name;
}
}
?><?php
$pic = "<img src='".$name."' alt='".$name."'><br>";
$fp = fopen ("galerie.html","a");
fwrite($fp,$pic);
fclose($fp);
$fp = fopen ("galerie.html","r");
fclose($fp);
?>
</body>
</html>
############################################
# #
# Dieses Script ist gemeingefährlich #
# #
############################################
1. Es arbeitet mit register_globals = on
Es gibt bereits seit Jahren $_FILES[] und das hat mehrere
Gründe! http://de.php.net/features.file-upload
2. Es prüft nicht den Filetyp der hochgeladenen Datei
dafür gibt es in PHP die Funktion getimagesize()
http://de2.php.net/manual/de/function.getimagesize.php
3. Es nimmt den Dateinamen des Bildes in den Pfad des Zielsystems
auf. Man kann also alle Dateien in allen Pfaden kaputtschreiben,
die der Apache beschreiben darf. Einziger Filter ist die Endung.
Es gibt die Funktion basename()
http://de2.php.net/manual/de/function.basename.php, mit der
man den gültigen Namensanteil aus dem übertragenen "Namen" extra-
hieren kann und ihn dann mit einem _festgelegten_ Zielverzeichnis
zu einem Pfad kombinieren sollte!
4. Es prüft nicht vorher, ob die Datei bereits vorhanden ist und
wem sie gehört. Nur der "Uploder" einer Datei (und der Admin)
sollte diese wieder entfernen / überschreiben dürfen
5. Sonderzeichen im Bildnamen werden nicht maskiert
> echo "Name: ".$name."<br>";
6. Der vom Client gemeldete Mime-Type ist vollkommen unerheblich
auf Linuxsystemen gibt es dafür die Systemfunktion file (Programm)
das man über den system() -Befehl aufrufen kann
http://de.php.net/manual/de/function.system.php
Jeder gute Provider sollte dieses Programm im safe_mode_exec_dir
des Users bereitstellen (siehe php.ini) und safe_mode.
Liebe Grüße aus http://www.braunschweig.de
Tom
###################
#gemeingefährlich?#
###################
Ich will hier ja jetzt keinen Konflikt starten, aber
gemeingefährlich ist das Script nicht!!!
Meinetwegen kannst du prüfen ob die Datei vorhanden ist!
[file_exists] aber das Script funktioniert einwandfrei!!!
Sonst mach du halt mal einen anderen Vorschlag, ich wollt
nur nicht mit "geh auf ... und bastels dir" kommen, sondern
ich wollt mal ein fertiges Script abliefern! Fast alle hier
geben einem Verweise auf irgendwelche Seiten, die der User, der
eine präzise Frage gestellt hat nicht versteht!
Nicht jeder kann PHP, JavaScript und die ganze andere Scheiße!!!
MfG Philip
Und noch was!
Ich schreib meine Scripte normalerweiße nicht für
Linux!
Hello,
Und noch was!
Ich schreib meine Scripte normalerweiße nicht für
Linux!
Was interessiert MICH das? Ich habe nur geschrieben, dass es bei Linux (Unix) bereits ein Testprogramm für den Mime-Type gibt. Wenn es das für Windows nicht gibt, dann solltest Du eine eigene Funktion für PHP entwickeln. Die fehlt uns sowieso ganz dringend.
Mich interessiert nur, dass hier jemand ein Script abliefert, das gemeingefährlich ist. Ein leichtgläubiger Verwender reißt sich damit riesige Sicherheitslücken in sein System. Und wenn Du nun immer noch behaupten solltest, dass dieses Script als Verwendungsvorschlag und nicht nur als Abschreckung gilt, dann bezeichne ich auch Dich als grob fahrlässig.
Ich habe hier auch schon Lösungen angeboten, bei denen die Anderen ganz schnell halt geschrien haben. Und das Haltschrein war gut so!
Ich denke, auch Du musst Dir das gefallen lassen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Jajaja,
ich verstehe, mein Script ist ein Sceiß und
es ist zu nichts gut!
Tut mir leid das ich ein so "gemeingefährliches" Script ins Forum
stell!
hi,
Jajaja,
ich verstehe, mein Script ist ein Sceiß und
es ist zu nichts gut!
offenbar hast du nicht verstanden, sonst würdest du ja jetzt nicht versuchen, sarkastisch zu sein.
tom hat dir eine ganze reihe von gründen genannt, aus denen er dein script für abzulehnend hält.
wenn du diese nicht durch schlüssige gegenargumente entkräften kannst, dann dürfte er wohl recht haben,
Tut mir leid das ich ein so "gemeingefährliches" Script ins Forum
stell!
generell werden "vorgekaute" lösungen hier sowieso nur ungerne gesehen - aber wenn überhaupt, dann sollten sie schon nahezu perfekt sein, und das ist dein vorschlag nun mal nicht.
akzeptiere das bitte.
gruss,
wahsaga