Furien
Mitglied
Hi Leute, ich habe mir einen kleinen Dateiupload mit Mysql Einträgen
und Anzeige gebastelt und wollte euch nun fragen,
ob das ganze auch sicher genug ist.
EDIT: Achja und ich wollte noch fragen, was ich hier noch einfügen muss, um nur .zip und .gbx zuzulassen ;)
EDIT2 : Und eigentlich ist es das löschen, was mit zu denken gibt, aber einfach &modus=l eingeben löscht nichts, zum Glück!
EDIT3 (OH mann): Und ich meine, es gab mal eine Möglichkeit, Fehlermeldungen zu switchen. Wisst ihr was darüber?(Also wenn z.B. im Formular nichts eingegeben wurde)
und Anzeige gebastelt und wollte euch nun fragen,
ob das ganze auch sicher genug ist.
PHP:
<?php
$abfrage="SELECT id, name, datum, gold, autor, beschreibung, pfad, email, userid FROM tracks ORDER BY (datum) DESC";
$ergebnis=mysql_query($abfrage);
if ($_GET["modus"] == "geloescht") {
echo "Die Datei wurde erfolgreich gelöscht!";
}
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>".$row->datum."</td><td><a href='dl.php?track=".$row->pfad."'>Klick</a></td>";
if ($_COOKIE["userid"] == $row->userid) {
echo "<td><a href='trackmania.php?modus=l&q=alle_tracks'>löschen</a></td>";
if ($_GET['modus'] == "l") {
unlink("tracks/".$row->pfad);
mysql_query("DELETE FROM tracks WHERE ID='$row->id' ;");
mysql_query("ALTER TABLE tracks AUTO_INCREMENT=".$row->id);
echo '<meta http-equiv="refresh" content="3; URL=trackmania.php?q=alle_tracks&modus=geloescht">';
break;
}
}
echo "</tr>";
}
echo "</table>";
?>
<?php
}
if ($_GET["q"] == "tracks_hochladen") {
?>
<br />
<a name="2">
<h1>Tracks hochladen und zum download freigeben</h1>
<p>Bitte ladet nur ZIP-Dateien oder .gbx Dateien hoch, alles andere werde ich löschen ;)</p>
<table>
<form method="post" action="" 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
}
?>
<?php
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){
// 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 "<strong><a href='trackmania.php?q=alle_tracks#1'>".$value ."</a></strong> wurde erfolgreich hochgeladen <br />\n";
$autorname = htmlspecialchars(mysql_real_escape_string($_POST['autorname'])); //holen der variable aus dem Name: eingabefeld
$trackname = htmlspecialchars(mysql_real_escape_string($_POST['trackname'])); //hier holen wir die hp
$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']));
mysql_query("
INSERT INTO `furien`.`tracks` (
`id` ,
`name` ,
`datum` ,
`gold` ,
`autor` ,
`beschreibung` ,
`pfad` ,
`email` ,
`userid`
)
VALUES (
NULL , '$trackname', now(), '$gold', '$autorname', '$beschreibung', '$value' , '$email' , '$userid'
);") or die(mysql_error());
}
} // close dateigroesse
}// close foreach
}// close datei angegeben
} // close submit
?>
EDIT2 : Und eigentlich ist es das löschen, was mit zu denken gibt, aber einfach &modus=l eingeben löscht nichts, zum Glück!
EDIT3 (OH mann): Und ich meine, es gab mal eine Möglichkeit, Fehlermeldungen zu switchen. Wisst ihr was darüber?(Also wenn z.B. im Formular nichts eingegeben wurde)
Zuletzt bearbeitet: