- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 15-06-2006, 18:38
Natheedo
 Newbie
Links : Onlinestatus : Natheedo ist offline
Registriert seit: Aug 2005
Beiträge: 54
Natheedo ist zur Zeit noch ein unbeschriebenes Blatt
Standard [PHP5] PHP Upload nur jpg und gif erlauben !?!

Hallo,

ich hab hier ein kleines Privates Upload Skript das ich für paar Sachen auf meinem Webserver nutze, das auch soweit für meine Ansprüche gerecht ist - Nur sind mir in den letzten Tagen vermehrt Dateien aufgefallen die ich nicht hochgeladen habe - Besonders eine "cookie_overflow.php" ...

Das bereitet mir jetzt allmählich Kopfschmerzen, das ich an das Sicherheitsrisiko nicht eher gedacht hab.

Darum ist die Frage, wie ich mein Upoadscript so ergänze (hab vom php selber schreiben leider keine Ahnung) das man lediglich .jpg und .gif. Dateien damit hochladen kann?

Hier das Script :

PHP-Code:
<?php 
 
## pfad von dieser datei aus wo das hochgeladen werden soll 
$dir "../pics/vorlagenpics/bildupload"
$url "[URL="http://www.DOMAIN.de"]http://www.DOMAIN.de[/URL]";
 
if($_POST['uppen']){ 
if(!empty(
$_FILES['file']['name'])){ 
 
 
// Tmp_name 
$tempname $_FILES['file']['tmp_name']; 
$tempname2 $_FILES['file2']['tmp_name']; 
$tempname3 $_FILES['file3']['tmp_name']; 
 
// Namen der dateien 
$name str_replace(" ","_",$_FILES['file']['name']);
$name2 str_replace(" ","_",$_FILES['file2']['name']);
$name3 str_replace(" ","_",$_FILES['file3']['name']);
 
// typen der dateien 
$type $_FILES['file']['type']; 
$type2 $_FILES['file2']['type']; 
$type3 $_FILES['file3']['type']; 
 
// groeße der dateien 
$size $_FILES['file']['size']; 
$size2 $_FILES['file2']['size']; 
$size3 $_FILES['file3']['size']; 
 
// Dateien kopieren 
@copy("$tempname""$dir/$name"); 
@
copy("$tempname2""$dir/$name2"); 
@
copy("$tempname3""$dir/$name3"); 
 
// Ueberpruefung 
$f1 file_exists($dir."/".$name); 
$f2 file_exists($dir."/".$name2); 
$f3 file_exists($dir."/".$name3); 
 
if(
$f1) { 
$output $url."/pics/vorlagenpics/bildupload/".$name
$ausgabe htmlentities(stripslashes($output)); 
}else echo 
"Upload von Datei 1 fehlgeschlagen!<br>"
 
if(
$f2){ 
$output2 $url."/pics/vorlagenpics/bildupload/".$name2;
$ausgabe2 htmlentities(stripslashes($output2)); 
}else echo 
"Upload von Datei 2 fehlgeschlagen!<br>"
 
if(
$f3){ 
$output3 $url."/pics/vorlagenpics/bildupload/".$name3;
$ausgabe3 htmlentities(stripslashes($output3)); 
}else echo 
"Upload von Datei 3 fehlgeschlagen!<br>"
 
}else echo 
"Datei muss gewählt werden<br>"
 
 
 
}
 
#echo "<form enctype=\"multipart/form-data\" action=\"?do=up\" method=\"post\">"; 
if(isset($output) || isset($output2) || isset($output3)){ 
        if(!empty(
$name)) 
                echo 
"<input type=\"text\" size=\"80\" name=\"file\" value=\"$ausgabe\">&nbsp;<img src=\"pics/haken.gif\" border=\"0\" alt=\"\"><br>"
        if(!empty(
$name2)) 
                echo 
"<input type=\"text\" size=\"80\" name=\"file2\" value=\"$ausgabe2\">&nbsp;<img src=\"pics/haken.gif\" border=\"0\" alt=\"\"><br>"
        if(!empty(
$name3)) 
                echo 
"<input type=\"text\" size=\"80\" name=\"file3\" value=\"$ausgabe3\">&nbsp;<img src=\"pics/haken.gif\" border=\"0\" alt=\"\"><br>"
}else{ 
        echo 
"<input type=\"file\" size=\"80\" name=\"file\"><br>"
        echo 
"<input type=\"file\" size=\"80\" name=\"file2\"><br>"
        echo 
"<input type=\"file\" size=\"80\" name=\"file3\"><br>"

echo 
"<br><input type=\"submit\" name = \"uppen\" value=\"Hochladen\"> <span class=\"rot\"> &lt;&mdash; Bild auswählen dann auf hochladen klicken!</span>"
 
?>
Wäre vielleicht bitte jemand so nett und könnte mir da auf die Sprünge helfen?

Ich hab schon folgendes versucht :

PHP-Code:
// Tmp_name 
$tempname $_FILES['file']['tmp_name']; 
if(
strtolower(substr($tempname, -4)) == ".gif" || strtolower(substr($tempname, -4)) == ".jpg")
{
echo 
"Dateiendung erlaubt...";
} else {
echo 
"Dateiendung nicht erlaubt...";
}
$tempname2 $_FILES['file2']['tmp_name']; 
if(
strtolower(substr($tempname2, -4)) == ".gif" || strtolower(substr($tempname2, -4)) == ".jpg")
{
echo 
"Dateiendung erlaubt...";
} else {
echo 
"Dateiendung nicht erlaubt...";
}
$tempname3 $_FILES['file3']['tmp_name']; 
if(
strtolower(substr($tempname3, -4)) == ".gif" || strtolower(substr($tempname3, -4)) == ".jpg")
{
echo 
"Dateiendung erlaubt...";
} else {
echo 
"Dateiendung nicht erlaubt...";

Allerdings bringt er mir jetzt 3 mal "Dateiendung nicht erlaubt..." und ladet auch nix hoch !?!

Hm ... Irgendwas schein ich verkehrt gemacht zu haben!

Danke !

Natheedo

Geändert von Natheedo (15-06-2006 um 18:50 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 15-06-2006, 19:12
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.583
Slava befindet sich auf einem aufstrebenden Ast
Standard

1)warum suchst du deine endung in $_FILES['file']['tmp_name']; ?
wie wäre es mit dem echo oder print_r($_FILES['file'])?
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #3 (permalink)  
Alt 15-06-2006, 19:16
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard Re: [PHP5] PHP Upload nur jpg und gif erlauben !?!

PHP-Code:
$allowed_ext = array('gif''jpg''jpeg')
foreach (
$_FILES as $file) {
    
$name str_replace(' ''_'$file['name']);
    
$ext strtolower(substr($namestrrpos($name'.')+1));
    if (!
in_array($ext$allowed_ext)) {
        echo 
'Dateiendung '.$ext.' nicht erlaubt!<br />';
        echo 
'Datei '.$file['name'].' wurde verworfen!<br />';
        continue;
    }
    if (!
move_uploaded_file($file['tmp_name'], $dir.'/'.$name)) {
        echo 
'Fehler beim Hochladen der Datei '.$file['name'].'!<br />';
        continue;
    }
    echo 
'Upload der Datei '.$file['name'].' erfolgreich!<br />';

Mit Zitat antworten
  #4 (permalink)  
Alt 15-06-2006, 19:30
Natheedo
 Newbie
Links : Onlinestatus : Natheedo ist offline
Registriert seit: Aug 2005
Beiträge: 54
Natheedo ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Re: [PHP5] PHP Upload nur jpg und gif erlauben !?!

Zitat:
Original geschrieben von onemorenerd
PHP-Code:
$allowed_ext = array('gif''jpg''jpeg')
foreach (
$_FILES as $file) {
    
$name str_replace(' ''_'$file['name']);
    
$ext strtolower(substr($namestrrpos($name'.')+1));
    if (!
in_array($ext$allowed_ext)) {
        echo 
'Dateiendung '.$ext.' nicht erlaubt!<br />';
        echo 
'Datei '.$file['name'].' wurde verworfen!<br />';
        continue;
    }
    if (!
move_uploaded_file($file['tmp_name'], $dir.'/'.$name)) {
        echo 
'Fehler beim Hochladen der Datei '.$file['name'].'!<br />';
        continue;
    }
    echo 
'Upload der Datei '.$file['name'].' erfolgreich!<br />';

Hm da bekomme ich lediglich einen :

Zitat:
Parse error: parse error, unexpected T_FOREACH on line 176
Hab ich jetzt was falsch gemacht? Hab dein Script 1:1 so übernommen !?!

Natheedo
Mit Zitat antworten
  #5 (permalink)  
Alt 15-06-2006, 19:37
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Vor dem foreach fehlt ein Semikolon.
Aber du wirst gleich in die nächste Fehlermeldung rasseln, denn wenn du mit dieser einfachen nicht klarkommst, kannst du unmöglich wissen, wie und wo du den Codeschnipsel richtig einbauen mußt.
Aber bevor du jetzt fragst, empfehle ich dir erstmal einen tiefen Blick ins Handbuch (http://php.net/manual). Es enthält auch einen Abschnitt über Fileuploads.
Mit Zitat antworten
  #6 (permalink)  
Alt 15-06-2006, 19:41
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.583
Slava befindet sich auf einem aufstrebenden Ast
Standard

wo ist die 176-te Zeile?
aber ich vermute schon, dass du $_FILES erst mit print_r ausgeben muss.
dieser script wird nur dann funktionieren, wenn du mehrere dateien absendest(glaube ich)
du muss der script auch für den fall vorbereiten, dass es keine oder eine datei angekommen ist
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #7 (permalink)  
Alt 15-06-2006, 19:47
Natheedo
 Newbie
Links : Onlinestatus : Natheedo ist offline
Registriert seit: Aug 2005
Beiträge: 54
Natheedo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die 176te Zeile war die 2te Zeile von onemorenerd.

Gut aber wenns so oder so net geht, weil wie du Slava richtig erkannt hast, auch mal nur eine oder eben gar keine absende - Naja muss ich es wohl dabei belassen wie es ist - Dachte das wäre ein kleineres Problem und hab gehofft das mir jemand den Codeschnipsel fertig präsentiert. Weil ich eben noch nicht wirklich PHP kann.

Trotzdem danke !

Natheedo
Mit Zitat antworten
  #8 (permalink)  
Alt 15-06-2006, 20:05
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.583
Slava befindet sich auf einem aufstrebenden Ast
Standard

und ein wenig experementieren?
PHP-Code:
function filecopy($file){
$allowed_ext = array('gif''jpg''jpeg');
$name str_replace(' ''_'$file['name']);
    
$ext strtolower(substr($namestrrpos($name'.')+1));
    if (!
in_array($ext$allowed_ext)) {
        echo 
'Dateiendung '.$ext.' nicht erlaubt!<br />';
        echo 
'Datei '.$file['name'].' wurde verworfen!<br />';
        continue;
    }
    if (!
move_uploaded_file($file['tmp_name'], $dir.'/'.$name)) {
        echo 
'Fehler beim Hochladen der Datei '.$file['name'].'!<br />';
        continue;
    }
    echo 
'Upload der Datei '.$file['name'].' erfolgreich!<br />';
}
$daten=array('file','file2','file3');
foreach(
$daten as $d){
if(isset(
$_FILES[$d]))filecopy($_FILES[$d]);

__________________
Slava
bituniverse.com
Mit Zitat antworten
  #9 (permalink)  
Alt 15-06-2006, 20:24
Natheedo
 Newbie
Links : Onlinestatus : Natheedo ist offline
Registriert seit: Aug 2005
Beiträge: 54
Natheedo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke aber auch das ging nicht :

Zitat:
Warning: move_uploaded_file() [function.move-uploaded-file]: open_basedir restriction in effect. File(/foto2.jpg) is not within the allowed path(s): (/var/www/html/web108/html/:/var/www/html/web108/phptmp/:/var/www/html/web108/files/:/var/www/html/web108/atd/) in /var/www/html/web108/html/vorlagen/allgemein.php on line 184
Fehler beim Hochladen der Datei foto2.jpg!

Fatal error: Cannot break/continue 1 level in /var/www/html/web108/html/vorlagen/allgemein.php on line 186
Wie gesagt ist aber auch net schlimm, ich werds einfach so lassen, bevor sich hier jemand erstmal intensiv damit beschäftigen muss, nur weil ichs nicht kann.

Natheedo
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 are an
Pingbacks are an
Refbacks are an


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

E-Mail-Coder Generator ansehen E-Mail-Coder Generator

E-Mail-Coder Generator, komplett in deutscher Sprache. Mit diesem Generator können Sie Ihre E-Mail-Adresse codieren und so gegenüber Spidern schützen.

23.05.2012 fullmedia | Kategorie: PHP/ Mail
EMO Realty Manager ansehen EMO Realty Manager

EMO Realty Manager is a complete realty listing management solution software. It is easily customized to reflect your creativity whether you are starting from scratch or integrating into an existing web site. EMO Realty Manager can be used to promote re

23.05.2012 myrephp | Kategorie: PHP/ Anzeigenmarkt
MatPo Image Hosting Script ansehen MatPo Image Hosting Script

Mit diesem PHP-Script (mini CMS) kann man .jpg, .gif und .png-Dateien auf den Server laden. Bildergröße beim Hochladen änderbar sowie eine Beschreibung zum Bild angegeben werden kann. Damit das Webspace nicht missbraucht werden kann gibt es jetzt auch

23.05.2012 MatPo | Kategorie: PHP/ Bilder
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:16 Uhr.