Seite 2 von 2

Verfasst: 25.11.2006 13:41
von Olli Oberhausen
Enano hat geschrieben:Ist das oben etwa der komplette Quelltext? :-?
*lach* Ja, ist er....

Falls du mal deine zugangsdaten von deiner mysql datenbank oder von joomla vergessen hast, frag mich :grin:

Du solltest den code dringenst vom server löschen!

Deine Datenbank: aktiv12forum
Dein Benutzername: aktiv12forum
Dein Passwort: *****

Ok, das passwort hab ich extra nicht ausgelesen, könnte ich aber genau so sagen...

Gruß, Olli :grin:

Verfasst: 25.11.2006 14:09
von ultracoder
wieso? wie soll das gehen, schreib mir das mal bitte per pn, damit ich das demnächst verhindern kann

Verfasst: 25.11.2006 14:30
von Enano
Weil man momentan alles hochladen kann, incl. Scripte.
Hier: http://aktiv12forum.ak.funpic.de/Upload/info.php
und das ist noch harmlos.

Zum 1. Problem:
Bei www.phpbb-moddb.de ist register_globals auf OFF, was auch soweit gut ist.
So funktioniert dein script aber nicht.

Du kannst jetzt z.B. nicht mehr $datei_name usw. verwenden, sondern $_FILES:
  • $_FILES['datei']['name']
    $_FILES['datei']['type']
    $_FILES['datei']['size']
    $_FILES['datei']['tmp_name']
    $_FILES['datei']['error']
Schau auch mal hier: http://www.php-faq.de/q/q-formular-upload-php4.html

Verfasst: 25.11.2006 15:51
von ultracoder
wie genau muss ich das mit den files machen?
kannst du das script vielleicht mal mit den files teilen umschreiben?




edit:

ich habe das jetzt so umgeschrieben:

Code: Alles auswählen

<FORM ENCTYPE="multipart/form-data" ACTION="upload.php" METHOD=POST>
Wählen Sie bitte eine Datei aus:<br>
<INPUT NAME="datei" TYPE="file"><BR>
<INPUT TYPE="submit" VALUE="Upload">
</FORM>
   

<?
if (isset($datei))
{ 
   echo "Dateiname: $_FILES['datei']['name'] 
<br>";
   echo "Größe der Datei in Byte: $_FILES['datei']['size'] 
 Byte<br>";
   echo "MIME-Type der Datei: $_FILES['datei']['type'] 
<br><br>";
   copy($datei, $_FILES['datei']['name'] 
);
   if($_FILES['datei']['type'] 
 == "image/gif" or $_FILES['datei']['type'] 
 == "image/jpeg" or $_FILES['datei']['type'] 
 == "image/bmp" or $_FILES['datei']['type'] 
 == "application/zip" or $_FILES['datei']['type'] 
 == "application/octet-stream" or $_FILES['datei']['type'] 
 == "text/html")   
{
     
 echo "<br>Ihr Link lautet:<br><a href='http://www.phpbb-moddb.de/Upload/$_FILES['datei']['name'] 
'>http://www.phpbb-moddb.de/Upload/$_FILES['datei']['name'] 
</a>";
 

   }

}
?>
aber jetzt kommt folgender fehler:

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/web12/html/Upload/upload.php on line 11

Verfasst: 25.11.2006 17:30
von Enano
mein "Vorschlag":

Code: Alles auswählen

<FORM ENCTYPE="multipart/form-data" ACTION="<?php echo $_SERVER['PHP_SELF']; ?>" METHOD=POST>
Wählen Sie bitte eine Datei aus:<br>
<INPUT NAME="datei" TYPE="file"><BR>
<INPUT TYPE="submit" VALUE="Upload">
</FORM>
   
<?php
if (isset($_FILES['datei']))
{
	echo 'Dateiname: ' . $_FILES['datei']['name'] . '<br>';
	echo 'Größe der Datei in Byte: ' . $_FILES['datei']['size']. '<br>';
	echo 'MIME-Type der Datei: ' . $_FILES['datei']['type'] . '<br><br>';

	if ($_FILES['datei']['type'] == "image/gif" or $_FILES['datei']['type'] == "image/jpeg" or $_FILES['datei']['type'] == "image/bmp" or $_FILES['datei']['type'] == "application/zip" or $_FILES['datei']['type'] == "text/html")
	{ 
		move_uploaded_file($_FILES['datei']['tmp_name'], $_FILES['datei']['name']);
		echo '<br>Link: <a href="' . $_FILES['datei']['name'] . '">klick</a>';
	}
}
?>
Es wird erst geprüft, was es für eine Datei ist, bevor sie mit move_uploaded_file kopiert wird.
Ich habe auch

Code: Alles auswählen

$_FILES['datei']['type'] == "application/octet-stream"
weggelassen, weil man dadurch php-Dateien hochladen konnte.
Allerdings ist die Prüfung mit $_FILES['xyz']['type'] nicht wirklich sicher, da der Typ vom Browser übertragen wird ... und das kann man beeinflussen.
Wenn nur Grafikdateien hochgeladen werden dürfen, solltest du getimagesize nutzen.
Andere Dateien könnte man über die Extensions mit pathinfo prüfen.

Verfasst: 25.11.2006 19:18
von ultracoder
wenn diese überprüfung nicht wirklich sicher ist, wie kann ich denn dann eine überprüfung sicher machen?

Verfasst: 25.11.2006 19:37
von Enano
Enano hat geschrieben:Wenn nur Grafikdateien hochgeladen werden dürfen, solltest du getimagesize nutzen.
Andere Dateien könnte man über die Extensions mit pathinfo prüfen.
getimagesize liefert dir u.A. die Grafiktypen (GIF, JPG, PNG, SWF)

pathinfo gibt dir u.A. die Extension der Datei zurück (z.B. PHP, HTML, TXT, ...)

Schau dir einfach mal die Erklärung zu den Befehlen an.

Verfasst: 25.11.2006 19:56
von ultracoder
und wie mache ich das, wenn ich statt dem klick, die url zur hochgeladenen datei angezeigt haben möchte?