Thema: Dateiupload sicher?
- 20.07.2010 19:21 #11Erfahrener Benutzer Meilensteine


- Registriert seit
- 28.06.2008
- Ort
- Kuhkaff in Niedersachsen
- Beiträge
- 246
- Blog-Einträge
- 1
- Renommee-Modifikator
- 0
Stiiiiiimmt..
Totaler Denkfehler xD
Danke!
Müsste jetzt eigentlich alles abgehakt sein.
mfg Furien
PS: Man könnte aber theoretisch gucken, wieviele Datensätze es gibt und dann halt Autoincrement dementsprechend setzen.
Und ist es schlimm, wenn ich die ID der Datensätze ausgebe ?=
EDIT Hmm ich habe doch noch ein Problem.
Und zwar funktioniert das mit dem [file][type] da nicht.
Ich bekomme gar keinen Text, wenn ich versuche etwas hochzuladen.
Hätte ich eine Fehlermeldung, also ein else, würde wohl das kommen.
Code:
Danch kommt noch die MySQL Eintragung und dann die ganzen Klammern, hab ich jetzt aber weggelassen. Hat sich auch erledigt. ich hatte das [$key] vergessen..PHP-Code:if (isset($_POST['sendfiles'])){ // Sofern auf hochladen geklickt wurde
if(!empty($_FILES['datei']['tmp_name'])){ // Pruefen ob Datei angegeben wurde
$uploaddir = "tracks"; //Verzeichnis in das die Dateien gespeichert werden sollen
foreach($_FILES['datei']['name'] as $key => $value){
// Dateigroesse pruefen => Datei darf nicht groesser als 100 000 Bytes sein (1024 byte = 1 kB)
if ($_FILES['datei']['size'][$key] > 0 && $_FILES["file"]["size"] < 100000){
// Dateityp = zip
if($_FILES["datei"]["type"] == "application/zip" ) {
// definiert wohin die Datei muss
$uploadfile = $uploaddir."/".basename($_FILES['datei']['name'][$key]);
// Datei in angegebenes Verzeichnis verschieben
if (move_uploaded_file($_FILES['datei']['tmp_name'][$key], $uploadfile)){
echo "<p class='red'><strong><a href='trackmania_upload_ausgabe.php'>".$value ."</a></strong> wurde erfolgreich hochgeladen </p>";
- 20.07.2010 19:49 #12HTML-Guru Meilensteine


- Registriert seit
- 17.01.2005
- Ort
- Münster
- Alter
- 18
- Beiträge
- 509
- Renommee-Modifikator
- 0
so sollte es heißen.PHP-Code:if($_FILES["datei"]["type"][$key] == "application/zip" )
==>Download Opera 10<==
==>Download YouTube-Videos als mp3 Datei<==
(Keine Software installation nötig!)
- 20.07.2010 21:14 #13Erfahrener Benutzer Meilensteine


- Registriert seit
- 28.06.2008
- Ort
- Kuhkaff in Niedersachsen
- Beiträge
- 246
- Blog-Einträge
- 1
- Renommee-Modifikator
- 0
.......trotzdem...dankeHat sich auch erledigt. ich hatte das [$key] vergessen..

Und ich habe nooch ne Frage ^^
Wie kann ich den Namen der hochgeladenen Datei ändern? Also schon beim Upload? Hab
schon alles probiert, funktioniert aber nicht.
Jetzt habe ich noch ein Problem -.-
Wenn man 2 Files nacheinnander hochgeladen hat, wird wenn man auf löschen klickt das falsche File gelöscht.
Hab mir die ID nach dem löschen mal ausgeben lassen und tatsächlich die Falsche!
Die ID wird ja in der Schleife in die Session eingetragen.
Liegt da möglicherweise der Fehler?
Okay ich hab jetzt verstanden, dass man die ID von dem File in der Session hat, das als letztes durch die Schleife ging.
Aber wie kann ich es ändern, dass die drin ist, von der der Button gedrückt wurde =?
- 21.07.2010 10:10 #14HTML-Guru Meilensteine


- Registriert seit
- 11.08.2009
- Beiträge
- 1.512
- Renommee-Modifikator
- 3
Falls du noch Hilfe suchst, wäre es glaube ich ganz gut, wenn du deinen aktuellen Code noch einmal komplett posten könntest. Sonst reden alle am Ende nur aneinander vorbei.
- 21.07.2010 16:02 #15Erfahrener Benutzer Meilensteine


- Registriert seit
- 28.06.2008
- Ort
- Kuhkaff in Niedersachsen
- Beiträge
- 246
- Blog-Einträge
- 1
- Renommee-Modifikator
- 0
Okay ich erläutere mein Problem nochmal.
In der Schleife wird ja jedem Eintrag, sofern die UserID des Users im Cookie
stimmt ein löschen Button eingefügt.
Das mit löschen klappt auch ganz gut, hat der User aber 2 Strecken
nacheinander hochgeladen und will nun die erste löschen,
wird die zweite gelöscht. Ich übergebe die ID nämlich per Session
und in der Session steht dann natürlich die ID der Strecke, die als letztes
durch die Schleife kam. Nun ist meine Frage: Wie kann ich OHNE get (zu unsicher)
die ID der richtigen Strecke übermitteln?
Hier die Codes:
trackmania_upload_form.php:
trackmania_upload_verarbeitung.php:Code:<?php include 'head.php'; ?> <h1>Tracks hochladen und zum download freigeben</h1> <p class="red">Bitte ladet nur ZIP-Dateien hoch!</p> <table> <form method="post" action="trackmania_upload_verarbeitung.php" enctype="multipart/form-data"> <tr> <td> Track Auswählen: </td> <td> <input name="datei[]" type="file" /> </td> </tr> <tr> <td> Ersteller Name: </td> <td> <input name="autorname" type="Input" /> </td> </tr> <tr> <td> E-Mail: </td> <td> <input name="email" type="Input" /> </td> </tr> <tr> <td> Trackname: </td> <td> <input name="trackname" type="Input" /> </td> </tr> <tr> <td> Zeit für Gold: </td> <td> <input name="gold" type="Input" /> </td> </tr> <tr> <td> Beschreibung: </td> <td> <textarea name="beschreibung" style="height: 80px"></textarea> </td> </tr> </table> <input style="float:right;" type="submit" name="sendfiles" value="Hochladen" class="button "/> </form> <?php include 'foot.php'; ?>
Und zu guter Letzt:PHP-Code:<?php
include 'head.php';
include 'sql.inc.php';
// fehlermeldungen {
if (isset($_POST['sendfiles'])) {
if(empty($_FILES['datei']['tmp_name'])) die ("<p class='red'>Bitte wähle eine Datei aus.</p>");
if (empty($_POST['autorname'])) die ("<p class='red'>Bitte gebe deinen Namen an.</p>");
if (empty($_POST['email'])) die ("<p class='red'>Bitte gebe deine E-Mail Adresse ein.</p>");
if (empty($_POST['trackname'])) die ("<p class='red'>Bitte gebe den Namen der Strecke an.</p>");
if (empty($_POST['gold'])) die ("<p class='red'>Bitte gebe die Zahl für die Goldmedaille an.</p>");
if (empty($_POST['beschreibung'])) die ("<p class='red'>Bitte gebe eine Beschreibung zu der Strecke an.</p>");
}
// }
if (isset($_POST["loeschen"])) {
$id = $_SESSION["id"];
echo $id;
$pfad = $_SESSION["pfad"];
mysql_query("DELETE FROM tracks WHERE ID='$id' ;");
if(unlink("tracks/".$pfad)) {
echo "<p class='red'><a href='trackmania_upload_ausgabe.php'>Zurück</a> Die Strecke wurde erfolgreich gelöscht.</p>";
}
//echo '<meta http-equiv="refresh" content="3; URL=trackmania.php?q=alle_tracks&modus=geloescht">';
}
if (isset($_POST['sendfiles'])){ // Sofern auf hochladen geklickt wurde
if(!empty($_FILES['datei']['tmp_name'])){ // Pruefen ob Datei angegeben wurde
$uploaddir = "tracks"; //Verzeichnis in das die Dateien gespeichert werden sollen
foreach($_FILES['datei']['name'] as $key => $value){
// Dateigroesse pruefen => Datei darf nicht groesser als 100 000 Bytes sein (1024 byte = 1 kB)
if ($_FILES['datei']['size'][$key] > 0 && $_FILES["file"]["size"] < 100000){
// Dateityp = zip
if($_FILES["datei"]["type"][$key] == "application/zip" ) {
// definiert wohin die Datei muss
$uploadfile = $uploaddir."/".basename($_FILES['datei']['name'][$key]);
// Datei in angegebenes Verzeichnis verschieben
if (move_uploaded_file($_FILES['datei']['tmp_name'][$key], $uploadfile)){
echo "<p class='red'><strong><a href='trackmania_upload_ausgabe.php'>".$value ."</a></strong> wurde erfolgreich hochgeladen </p>";
$autorname = htmlspecialchars(mysql_real_escape_string($_POST['autorname']));
$trackname = htmlspecialchars(mysql_real_escape_string($_POST['trackname']));
$gold = htmlspecialchars(mysql_real_escape_string($_POST['gold']));
$beschreibung = htmlspecialchars(mysql_real_escape_string($_POST['beschreibung']));
$email = htmlspecialchars(mysql_real_escape_string($_POST['email']));
$userid = htmlspecialchars(mysql_real_escape_string($_COOKIE['userid']));
$ip = $_SERVER["REMOTE_ADDR"];
mysql_query("
INSERT INTO `furien`.`tracks` (
`id` ,
`name` ,
`datum` ,
`gold` ,
`autor` ,
`beschreibung` ,
`pfad` ,
`email` ,
`userid` ,
`ip`
)
VALUES (
NULL , '$trackname', now(), '$gold', '$autorname', '$beschreibung', '$value' , '$email' , '$userid' , '$ip'
);") or die(mysql_error());
}//close verschieben
}//close dateityp
else die("<p class='red'>Die Datei ist keine Zip-Datei!</p>");
}//close dateigrösse
else die("<p class='red'>Die Datei ist zu groß!</p>");
}//close foreach
}//close datei angegeben?
}//close submit
include 'foot.php';
?>
trackmania_upload_ausgabe.php:
Wenn ihr wollt, könnt ihrs auch live testen:PHP-Code:<?php include 'head.php'; ?>
<h1>alle hochgeladenen strecken</h1>
<?php
function convertdate($date) {
$tmp = explode(' ', $date);
$tmp_datum = explode('-', $tmp[0]);
$tmp_zeit = explode(':', $tmp[1]);
return $tmp_datum[2] . '.' . $tmp_datum[1] . '.' . $tmp_datum[0] . ' ' . $tmp_zeit[0] . ':' .$tmp_zeit[1];
}
include 'sql.inc.php';
$abfrage="SELECT id, name, datum, gold, autor, beschreibung, pfad, email, userid FROM tracks ORDER BY (datum) DESC";
$ergebnis=mysql_query($abfrage);
echo "<table>";
echo "<tr class='upper'><td>ID</td><td>Ersteller</td><td>Trackname</td><td>Goldmedaillenzeit</td><td>Beschreibung</td><td>Hochgeladen</td><td>Download</td></tr>";
while($row=mysql_fetch_object($ergebnis)) {
echo "<tr><td>".$row->id."</td><td>".$row->autor."</td><td>".$row->name."</td><td>".$row->gold."</td><td>".$row->beschreibung."</td><td>".convertdate($row->datum)."</td><td><a href='dl.php?track=".$row->pfad."'>Klick</a></td>";
if ($_COOKIE["userid"] == $row->userid) {
$_SESSION['pfad'] = $row->pfad;
$_SESSION['id'] = $row->id;
echo '<td><form method="post" action="trackmania_upload_verarbeitung.php"><input class="button" type="submit" name="loeschen" value="Löschen" class="button"/></form></td>';
}
echo "</tr>";
}
echo "</table>";
include 'foot.php';
?>
Furien Website
- 22.07.2010 16:38 #16Erfahrener Benutzer Meilensteine


- Registriert seit
- 28.06.2008
- Ort
- Kuhkaff in Niedersachsen
- Beiträge
- 246
- Blog-Einträge
- 1
- Renommee-Modifikator
- 0
- 23.07.2010 09:56 #17HTML-Guru Meilensteine


- Registriert seit
- 11.08.2009
- Beiträge
- 1.512
- Renommee-Modifikator
- 3
Übergib die Werte nicht per Session, sondern per POST:
PHP-Code:while($row=mysql_fetch_object($ergebnis)) {
echo "<tr><td>".$row->id."</td><td>".$row->autor."</td><td>".$row->name."</td><td>".$row->gold."</td><td>".$row->beschreibung."</td><td>".convertdate($row->datum)."</td><td><a href='dl.php?track=".$row->pfad."'>Klick</a></td>";
if ($_COOKIE["userid"] == $row->userid) {
/*$_SESSION['pfad'] = $row->pfad;
$_SESSION['id'] = $row->id;*/
echo '<td><form method="post"
action="trackmania_upload_verarbeitung.php">
<input type="hidden" name="pfad" value="' . htmlspecialchars($row->pfad) .'" />
<input type="hidden" name="id" value="' . htmlspecialchars($row->id) .'" />
<input class="button" type="submit" name="loeschen" value="Löschen" class="button"/>
</form></td>';
}
echo "</tr>";
}
- 23.07.2010 14:10 #18Erfahrener Benutzer Meilensteine


- Registriert seit
- 28.06.2008
- Ort
- Kuhkaff in Niedersachsen
- Beiträge
- 246
- Blog-Einträge
- 1
- Renommee-Modifikator
- 0
Aktive Benutzer
Aktive Benutzer
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Ähnliche Themen
-
Ist das so sicher genug?
Von Puccini im Forum PHPAntworten: 6Letzter Beitrag: 21.05.2009, 16:46 -
PHP Dateiupload
Von lucarp im Forum PHPAntworten: 1Letzter Beitrag: 01.09.2008, 19:46 -
<form> Dateiupload und Text gemeinsam?
Von thuemmy im Forum HTML und XHTMLAntworten: 3Letzter Beitrag: 22.07.2008, 15:59 -
Standardverzeichnis für Dateiupload
Von csigg im Forum HTML und XHTMLAntworten: 5Letzter Beitrag: 06.10.2007, 20:39 -
Dateiupload
Von Mario348 im Forum HTML und XHTMLAntworten: 1Letzter Beitrag: 06.05.2007, 16:36



LinkBack URL
About LinkBacks
Zitieren


Lesezeichen