Php Problem, Upload Script abändern

- OCinside.de PC Forum
https://www.ocinside.de

-- Internet und Netzwerk
https://www.forum-inside.de/forums.cgi?forum=21

--- Php Problem, Upload Script abändern
https://www.forum-inside.de/topic.cgi?forum=21&topic=1401

Ein Ausdruck des Beitrags mit 18 Antworten ergibt bei 3 Antworten pro Seite ca. 6 DIN A4 Seiten. Das entspricht bei 80 g/m² ca. 29.94 Gramm Papier.


-- Veröffentlicht durch Subseven am 20:36 am 22. Okt. 2007

Mit Google hab ich immer nur was mit Linux gefunden......
Danke für die Hilfe jetzt funktioniert es.
Es wird schön brav nach dem Benutzer und Passwort gefragt und dann erst die Seite Aufgerufen.

Jetzt muss ich mir nur Gedanken machen wie ich alles Anordner, ob von vorne herein mit PW oder erst beim Up-/Download.


-- Veröffentlicht durch wakko0816 am 19:44 am 19. Okt. 2007

Ah. Verstehe auch. Aber bei dem Problem hätte auch Google geholfen. ;)

Lösung:
- Dateinamen beim speichern in Anführungszeichen setzen

oder

- anderen Editor als Notepad verwenden(z.B. Scite oder Notepad++), und
 dann "Speichern unter" auswählen(grad mit Scite getestet)

oder

- erstell die Datei einfach mit dem FTP-Programm auf Deinem
 Webspace und lad sie Dir dann runter.


-- Veröffentlicht durch Subseven am 18:50 am 19. Okt. 2007

Ah verstehe.
Aber bei mir werden die Endungen angezeigt, aber wenn ich die datei erstellen will kommt folgende Meldung:

"Geben sie einen Dateinamen ein"


Ich hab voher eine Textdatei erstellt und da praktisch .htaccess gemacht nimmt er aber nicht.


-- Veröffentlicht durch wakko0816 am 19:40 am 18. Okt. 2007


Wie soll ich das mit .htaccess machen? mein Apache läuft zZ über windoof und da kann ich keine .access datei erstellen.

Doch! Das geht schon. Allerdings muss man dafür unter Windows die
Dateieindungen anzeigen lassen. ;)

Pack Dein Upload-Skript in einen Unterordner Deiner Webseite, passe den
Link dahin an, und lege Deine .htaccess-Datei in diesem Ordner ab.
Dann ist nur das Upload-Skript zugriffgeschützt.
Der Rest steht auf selfhtml.org.....


-- Veröffentlicht durch Subseven am 21:16 am 17. Okt. 2007

Danke schonmal für die Umfangreiche Hilfe! :thumb::ocinside:

Was muss denn alles im IMpressum drin stehen?
Das habe ich gefunden:




* Wer betreibt diese Seite (Namen und Vornamen - bei Gewerblichen Seiten muß der Firmenname und der gesetzliche Vertreter genannt werden)

* Kontaktadresse (Es muss eine Ladungsfähige Adresse sein, also kein Postfach)

* Schnelle Kommunikationsmöglichkeit (z.B. Telefon & Telefax)

* Elektronische Kommunikationsmöglichkeit (eMail)

* Bei Gesellschaftsformen (Unnatürlichen Personen ), dessen rechtliche Vertreter

* Sofern vorhanden die Umsatzsteuer-ID (UST-Nr.) könnte schon verlangt werden, wenn Du ein Produkt auf deiner Homepage vertreibst.

* Bei einigen Berufsgruppen sind zusätzliche Angaben, wie Zugehörigkeit zu bestimmten Vereinigungen oder Zulassungen an z.B. Gerichten notwendig.

ein impressum muß gemäß geltendem recht:
* mit einem "klick" erreichbar sein
* er darf nicht durch scrollen zu erreich sein
* muß für jeden sofort siechtbar sein und
* von jeder seite aus muß er erreichbar sein.




Edit: Wie soll ich das mit .htaccess machen? mein Apache läuft zZ über windoof und da kann ich keine .access datei erstellen.
Ist dann das Uploadscript mit "geschützt" oder kann man mit dem Script weiterhin hochladen?

(Geändert von Subseven um 22:19 am Okt. 17, 2007)


-- Veröffentlicht durch wakko0816 am 21:10 am 17. Okt. 2007

......de.selfhtml.org - htaccess

Das mit dem Impressum macht durchaus Sinn. :thumb:


-- Veröffentlicht durch Subseven am 20:42 am 17. Okt. 2007

War down weil ich von nem Arbeitskollegen den Hinweis bekamm mal ein Impressum zu machen, da ich sonst böse ärger bekommen könnte.

Wie mach ich sone .htaccess Datei?


-- Veröffentlicht durch wakko0816 am 16:44 am 17. Okt. 2007

Ich würde es ja zumindest mit ner .htaccess-Datei schützen.

Der Ordner, in dem die hochgeladenen Dateien wohnen, ist für
jedermann les- und schreibbar. Und die maximale Dateigrösse mit 10MB
schon recht grosszügig. Wenn da ein böses Skript vorbeikommt, müllt es
Dir den Webspace zu. So schnell kannst Du garnicht löschen. ;)

Aber.... ist die Seite jetzt down, weil schonwas passiert ist? Oder
nur vorsichtshalber?


-- Veröffentlicht durch Subseven am 15:38 am 17. Okt. 2007

So jetzt gehts ;) lag an $URL.
Wegen der Sicherheitslücke, ist das schlimm wie es ist? wenn ich den ordner immer leere macht das doch nichts oder?
html htm php usw. sind zum hochladen gesperrt.


-- Veröffentlicht durch wakko0816 am 14:53 am 17. Okt. 2007

Zwischen "$URL" und "$newfilenamekompl".
Zumindest, wenn da ein "/web/" mit in der URL hängt.
Deswegen sieht der generierte Link ja so aus:

Code
http://server-ftp.no-ip.org/web//web/*.exe

Und da $newfilenamekompl eigentlich "web/*.endung" lauten sollte,
wird da irgendwo ein "web/" zuviel eingebaut. Und ich vermute nach
wie vor, dass das mit in $URL steht.


-- Veröffentlicht durch Subseven am 13:32 am 17. Okt. 2007


Zitat von wakko0816 um 12:45 am Okt. 17, 2007
Was hast Du denn für "$URL" angegeben?
Hängt da etwa noch ein "/web" hinten dran?
Der "/", der da zu viel ist, wohnt in der Zeile
Code
$show_uploadokfiles  .= "<b>$File</b> gespeichert als: <br><a href=\"$URL/$newfilenamekompl\" target=\"_blank\">$newfilenamekompl</a><br>";

hinter "$URL".
Vermutlich klappt es auch, wenn Du das "$URL" mitsamt des "/" weglässt.

Vor allem würde ich die Seite mit dem Upload-Skript mal irgendwie gegen
Missbrauch schützen. Zur Zeit kann da jeder hochladen. Und da Du auch noch
so grosszügig die URL hier preisgegeben hast, brauchst Du Dich nicht
wundern, wenns Dir da ganz schnell den Webspace zumüllt.
Also so , wie es zur Zeit ist, hast Du da eine scheunentor-grosse
Sicherheitslücke. ;)

(Geändert von wakko0816 um 12:49 am Okt. 17, 2007)




Da kann meinet wegen jeder Hochladen mir schnuppe, lösche eh einmal am Tag und die Domain tausche ich auch noch.

Aber wo ist das "/" zuviel?


-- Veröffentlicht durch wakko0816 am 12:45 am 17. Okt. 2007

Was hast Du denn für "$URL" angegeben?
Hängt da etwa noch ein "/web" hinten dran?
Der "/", der da zu viel ist, wohnt in der Zeile

Code
$show_uploadokfiles  .= "<b>$File</b> gespeichert als: <br><a href=\"$URL/$newfilenamekompl\" target=\"_blank\">$newfilenamekompl</a><br>";

hinter "$URL".
Vermutlich klappt es auch, wenn Du das "$URL" mitsamt des "/" weglässt.

Vor allem würde ich die Seite mit dem Upload-Skript mal irgendwie gegen
Missbrauch schützen. Zur Zeit kann da jeder hochladen. Und da Du auch noch
so grosszügig die URL hier preisgegeben hast, brauchst Du Dich nicht
wundern, wenns Dir da ganz schnell den Webspace zumüllt.
Also so , wie es zur Zeit ist, hast Du da eine scheunentor-grosse
Sicherheitslücke. ;)

(Geändert von wakko0816 um 12:49 am Okt. 17, 2007)


-- Veröffentlicht durch Subseven am 10:38 am 17. Okt. 2007

Als Link zeigt eran:
/web//web/*.exe

er müsste aber:

/web/*.exe


Hab allerdings den pfad:

Code
$show_uploadokfiles  .= "<b>$File</b> gespeichert als: <br><a href=\"$URL/$newfilenamekompl\" target=\"_blank\">$newfilenamekompl</a><br>";


auf

Code
$show_uploadokfiles  .= "<b>$File</b> gespeichert als: <br><a href=\"$URL/$datepfad_name\" target=\"_blank\">$datepfad_name</a><br>";

geändert



(Geändert von Subseven um 11:04 am Okt. 17, 2007)


(Geändert von Subseven um 22:19 am Okt. 23, 2007)


-- Veröffentlicht durch wakko0816 am 7:42 am 17. Okt. 2007

Gib mal ein Beispiel, wie der Pfad im Link ist, und wie der richtige Pfad
lautet. Wenn man den Unterschied kennt ist leicht zu suchen. ;)

[edit]
Oder mal nach der Zuweisung von $savename noch folgende Zeile
eintragen:

Code
$newfilenamekompl = $ savename:

Da hätte es eigentlich einen Fehler geben müssen....
Hab nicht gesehen, dass "$newfilenamekompl" nochmal gebraucht wird,
und das hatte ich auskommentiert.

(Geändert von wakko0816 um 7:50 am Okt. 17, 2007)


-- Veröffentlicht durch Subseven am 23:35 am 16. Okt. 2007

Hab grade Festgestlett, dass er jetzt bei der Ausgabe den Downloadlink nicht angibt, also hab ich die Variable $dateipfad_name eingefügt.
nun gibt er mir einen pfad aus, aber der stimmt nicht.
Würdest du nochmal drüber gucken?


-- Veröffentlicht durch Subseven am 10:37 am 16. Okt. 2007

Super!
Danke schön hat funktioniert.


-- Veröffentlicht durch wakko0816 am 0:55 am 16. Okt. 2007

Habs nur überflogen, aber im Prinzp sollte es so gehen:

Code

........
$dateipfad_name = $picpfad.$File;
// Zufallsdateiname erzeugen
//$rand_value = randomstring($File);
//$newfilenamekompl = "$rand_value.$endung";
//$savename = $picpfad.$newfilenamekompl;
$savename = $dateipfad_name
// hochgeladene Daeien speichern
if(@move_uploaded_file($_FILES['UPFILE']['tmp_name'][$i], $savename)) {
.......

Dann sollte die gespeicherte Datei den gleichen Namen haben, wie die, die
Du hochgeladen hast und im Ordner "musik/" wohnen.

(Geändert von wakko0816 um 0:56 am Okt. 16, 2007)


-- Veröffentlicht durch Subseven am 21:31 am 15. Okt. 2007

Also ich hab im Netz einen wirklich gutes Uploadscript gefunden, aber eine Macke hat es.
Es wurde ein Filenamengenerator ein gebaut und die dateien haben dann so unschöne Namen.
Kann mir Wer helfen die wieder "auszuabuen"?


Ich hab schon herausgefunden dass es mit dem

Code
// Zufallsdateiname erzeugen

$rand_value = randomstring($File);

$newfilenamekompl = "$rand_value.$endung";

$savename = $picpfad.$newfilenamekompl;


und dem
Code

// Zufallszeichen fuer Dateiname

//-----------------------------------------------------------------//

function randomstring($dateiname) {

$dateiname = strtolower(substr(md5(microtime()),0,25));

return $dateiname;


Zusammen hängt wäre echt danke bar wenn das funktionieren würde.
Ich hab zwar im Netz zwei Antworten gefunden, aber ich konnte die irgendwie nicht umsetzen.

Schon im vorraus vielen dank :godlike:









Edit:



Komplettes Script:


Code
<?php



//-----------------------------------------------------------------//

// Konfiguration Anfang

//-----------------------------------------------------------------//

// Pfad zum Musikverzeichnis, mit / am Ende!

// kann so bleiben wenn bei $URL unterhalb das Verzeichnis auch bilder heisst

$picpfad = 'musik/';

// ganz wichtig: auf dem server muss musik das attribut  777 = berechtigung bekommen

// URL zum Uploadverzeichnis

$URL = 'http://deinedomain.de/';



// Anzahl Uploadfelder

$erlaubte_uploads = 5;



// max. Uploadgroesse in KB

$max_upl_size = 100000;



// Erlaubte Dateiendungen, Dateiendungen mit Komma trennen und klein schreiben

$arr_erlaube_dateityp = array(mp3,zip,rar,hjpg,ico,gif,bmp,swf,png,pdf,doc,xls);

//-----------------------------------------------------------------//

// Konfiguration Ende

//-----------------------------------------------------------------//



// Header ausgeben

echo $output = preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadheader.html"));

//-----------------------------------------------------------------//

// Uploadformular

//-----------------------------------------------------------------//

if (!isset($_POST['PICUPLOAD'])) {



// Uploadform ausgeben

uploadformausgabe();



} else {

//-----------------------------------------------------------------//

// Upload ausfuehren

//-----------------------------------------------------------------//

$erlaubte_extensionen = join(', ',$arr_erlaube_dateityp);



// Uploaddurchlauf Start

for ($i=0; $i<count($_FILES['UPFILE']['name']); $i++) {



if ($_FILES['UPFILE']['name'][$i] == '') {

continue;

}



// Zeichenfilter

$File = strtr(stripslashes($_FILES['UPFILE']['name'][$i]), '\'" |\\/?!*:#', '___________');



// Dateiendung ermitteln

$punkt = strrpos($File, '.');

$laenge = strlen($File);

$endung = strtolower(substr($File, -($laenge - $punkt - 1)));

$dname = substr($File, 0, -($laenge - $punkt - 1));



// Fehlerausgabe wenn Dateiendung nicht erlaubt

if (!in_array($endung, $arr_erlaube_dateityp)) {

fehlerausgabe("Die Dateiendung <b>$endung</b> ist nicht erlaubt");

continue;

}



// Dateigroessencheck

if ($_FILES['UPFILE']['size'][$i] > ($max_upl_size * 10000)) {

$zugross = round($_FILES['UPFILE']['size'][$i]/10000, 2);

fehlerausgabe("Datei zu gro&szlig;");

continue;

}



switch($_FILES['UPFILE']['error'][$i]) {

case 0:

break;

case 1:

fehlerausgabe("Die Datei ist zu gross");

continue 2;

break;

case 2:

fehlerausgabe("Die Dateigr&ouml;&szlig;e  &uuml;bersteigt das erlaubte Limit von $max_upl_size KB");

continue 2;

break;

}







$dateipfad_name = $picpfad.$File;



// Zufallsdateiname erzeugen

$rand_value = randomstring($File);

$newfilenamekompl = "$rand_value.$endung";

$savename = $picpfad.$newfilenamekompl;



// hochgeladene Daeien speichern

if(@move_uploaded_file($_FILES['UPFILE']['tmp_name'][$i], $savename)) {



// Zusammenfassen fuer Uploadstatusausgabe

if (isset($arr_erlaube_dateityp) and in_array($endung, $arr_erlaube_dateityp)) {



// Ausgabe anpassen falls noetig

$show_uploadokfiles  .= "<b>$File</b> gespeichert als: <br><a href=\"$URL/$newfilenamekompl\" target=\"_blank\">$newfilenamekompl</a><br>";

}



chmod($savename, 0777);



} else {

fehlerausgabe("Kann Datei nicht speichern");

}

}





if (isset($errors) and count($errors)>0) {

Uploadfehler($errors);

}



if ($show_uploadokfiles != '') {

echo  preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadok.html"));

}



if (!file_exists($picpfad)) {

echo "<b>Zielverzeichnis $picpfad nicht gefunden</b><br>";

} elseif (!is_writable($picpfad)) {

echo "<b>Zielverzeichnis $picpfad nicht beschreibar</b><br>";

clearstatcache();

} else {

echo "<a href=\"index.php\">Zum Uploadformular zur&uuml;ck</a>";

}



}

// Footer ausgeben

echo $output = preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadfooter.html"));

//-----------------------------------------------------------------//

// Zufallszeichen fuer Dateiname

//-----------------------------------------------------------------//

function randomstring($dateiname) {

$dateiname = strtolower(substr(md5(microtime()),0,25));

return $dateiname;

}

//-----------------------------------------------------------------//

// Templateausgabe

//-----------------------------------------------------------------//

function tparser($tmplname) {

$lines = implode("",file($tmplname));

return $lines;

}



//-----------------------------------------------------------------//

// Uploadform

//-----------------------------------------------------------------//

function uploadformausgabe() {

global $erlaubte_uploads, $zeige_uploadrechte, $max_upl_size;





if ($_SERVER['QUERY_STRING'] !== '') {

$action = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];

} else {

$action = $_SERVER['PHP_SELF'];

}



$max_upl_size_out = $max_upl_size * 10000;



$dateicount = 0;

for ($i=0; $i<$erlaubte_uploads; $i++) {

$dateicount++;

$uploadrowout .= preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadfilerow.html"));

}



$show_uploadlimitationen = zeige_uploadlimits();

$uploadformhtml = preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadtable.html"));



echo $uploadformhtml;

}



//-----------------------------------------------------------------//

// Zeige Uploadfehler

//-----------------------------------------------------------------//

function Uploadfehler($errors) {



foreach($errors as $file => $message) {

$show_noupload .="<li> $file: $message.<br>";

}

$show_uploadlimitationen = zeige_uploadlimits();

echo  preg_replace("/<__(\w.+?)__>/e", "\$\\1", tparser("templates/uploadfehler.html"));

}





//-----------------------------------------------------------------//

// Uploadlimitationen ausgeben

//-----------------------------------------------------------------//

function zeige_uploadlimits() {

global $arr_erlaube_dateityp, $max_upl_size;



$erlaubte_extensionen = join(', ',$arr_erlaube_dateityp);



if ($max_upl_size > 10000) {

$maximum = round(($max_upl_size / 10000), 2) . "MB";

} else {

$maximum = "$max_upl_size KB";

}

return "<b>Dateigr&ouml;&szlig;enlimit</b>: $maximum<br><b>Erlaubte Dateiendungen</b>: $erlaubte_extensionen";

}



//-----------------------------------------------------------------//

// Fehlerausgabe

//-----------------------------------------------------------------//

function fehlerausgabe($message, $delete = false) {

global $errors, $File, $dateipfad_name;



$errors[$File] = $message;



if ($delete == true) {

unlink($dateipfad_name);

}

}

//-----------------------------------------------------------------//

?>


(Geändert von Subseven um 21:49 am Okt. 15, 2007)


(Geändert von Subseven um 22:18 am Okt. 23, 2007)


OCinside.de PC Forum
© 2001 - 2024 www.ocinside.de