Uploadscript mit MySQL-Eintrag
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
benutzer
bild
byte
code
datei
datenbank
einfache kleine zeile
eintrag
fehler
file
frage
helfen
struktur
tabelle
team
type
url
vermeiden
zahl
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
BITTE
lies Dir deinen Thread nochmals durch bevor du ihn hier postest. Wer soll denn damit was anfangen?
Du willst also ein PHP-basierendes Uploadscript coden? Sicher?
Geb´ uns mal mehr Input; vieleicht können wir Dir dann helfen.
lg JJ -
Er will etwas wie:
Ein Benutzer läd ein Bild hoch, es wird nachdem Upload ein Eintrag in die Datenbank gemacht wird.
Die Tabelle hat die Struktur:
ID => Int, Primary, Auto_Inc
Pic => Varchar
Zumindest hab ich es so verstanden (naja, eher geraten ^^)
@Threadersteller
Ich glaub zum Thema Upload gab es schon mal was:
http://www.lima-city.de/thread/12-1-2010-php-upload/page%3A0/perpage%3A10#851311
Nachdem Upload einfach noch per mysql_query() einen Eintrag in die Datenbank machen
Beitrag zuletzt geändert: 24.1.2010 23:20:26 von stemoo -
Also was arkmeister meint ist.
index.php
<?php if($_REQUEST['Send']) { if($_FILES['userfile']['name']) { echo"Ihre Datei ".$_FILES['Datei']['name']." wurde hochgeladen."; $query = mysql_query("SELECT * FROM user_1 WHERE `id` = '".$_GET['id']."'"); if(mysql_num_rows($query) == 1) { $fetch = mysql_fetch_object($query); if($fetch->bild == '') {mkdir ("uploads/", 0777);} } else { rmdir ("uploads/"); mkdir ("uploads/", 0777); } move_uploaded_file($_FILES['datei']['tmp_name'], "uploads/".$_FILES['Datei']['name']['tmp_name']); $bild = $_FILES['Datei']['name']['tmp_name']; mysql_query("update user_1 Set bild = '$bild' WHERE `id` = '".$_GET['id']."'"); } else{ echo"Bitte geben Sie eine Datei an!"; } }else{ ?> <form action="index.php" enctype="multipart/form-data" method="post"> <input name="Datei" type="file"><br> <input name="Send" type="submit" value="Upload"> <?php } ?>
Ich benutzen den Script selbst und bei mir funktioniert er :-)
Edit: Hab einen kleinen Kopier Fehler gesehen und hab den behoben
Beitrag zuletzt geändert: 25.1.2010 1:40:45 von privatecitypage -
Achtung!
Bei dem Skript ist eine SQL-Injection sehr einfach!
Minimum: Alles per mysql_real_escape_string() formatieren!
Gruß,
dex (qap2-Team) -
Wie meinst du denn das?!
-
Ich bin schon soweit das der Upload mit ner anderen datei geupdatet wird nur meine frage ist ob das normal ist das der 139,519 mysql einträgemacht bei nur 3 bildern die hochgeladen oder geupdatet werden ?
-
umt299 schrieb:
Ich bin schon soweit das der Upload mit ner anderen datei geupdatet wird nur meine frage ist ob das normal ist das der 139,519 mysql einträgemacht bei nur 3 bildern die hochgeladen oder geupdatet werden ?
Das mußt Du doch wissen, das ist doch Dein Code! Wenn Du nicht mal in Ansätzen weißt was da vor sich geht solltest Du den Code vielleicht doch nicht nehmen.
Naja, ich glaub 100.000 MySQL-Einträge sind nicht so normal. -
Naja ich glaube dan suche ich jetzt mal den Fehler wäre aber auch nicht schlimm wenn ich ihn nicht finde da ich ja nicht so bombastisch viele besucher habe geht das größtenteils auch manuell.
-
Nimm Dir doch einfach ein fertiges Dateiverwaltungsscript.
Die gibt es kostenlos zu hunderten im Internet und funktionieren idR wie sie sollen. -
Es wird schon besser mit dem script ich habe es bis jetzt wenigstens geschafft das er keine 100,000 mysql einträge mehr macht.
-
Hallo noch einmal,
der Benutzer privatecitypage fragte, wie ich meinen Beitrag zu SQL-Injections meine.
Ich schreibe es hier offiziell rein, weil jeder auf solche Gefahren aufmerksam gemacht werden sollte!
Beispiel (entnommen aus privatecitypage's Quelltext):
$query = mysql_query("SELECT * FROM user_1 WHERE `id` = '".$_GET['id']."'");
Diese Abfrage kann sehr einfach zu einer SQL-Injection werden.
Wenn der Parameter "id" (Get-Methode) eine Zahl ist, wird nach der ID des Benutzes gesucht.
Folgende SQL-Injection ist möglich:
// $_GET["id"] ist "0'; DELETE FROM user_1 [usw...]" $query = mysql_query("SELECT * FROM user_1 WHERE `id` = '".$_GET['id']."'");
Folgender Query würde ausgeführt werden:
SELECT * FROM user_1 WHERE `id` = '0'; DELETE FROM user_1 [...]
Nun werden alle Benutzer gelöscht.
Durch eine einfache kleine Zeile.
Verstanden, was ich meine?
Absichern!
Gruß,
dex (qap2-Team)
Beitrag zuletzt geändert: 25.1.2010 15:03:05 von qap2 -
qap2 schrieb:
Hallo noch einmal,
der Benutzer privatecitypage fragte, wie ich meinen Beitrag zu SQL-Injections meine.
Ich schreibe es hier offiziell rein, weil jeder auf solche Gefahren aufmerksam gemacht werden sollte!
Beispiel (entnommen aus privatecitypage's Quelltext):
$query = mysql_query("SELECT * FROM user_1 WHERE `id` = '".$_GET['id']."'");
Diese Abfrage kann sehr einfach zu einer SQL-Injection werden.
Wenn der Parameter "id" (Get-Methode) eine Zahl ist, wird nach der ID des Benutzes gesucht.
Folgende SQL-Injection ist möglich:
// $_GET["id"] ist "0'; DELETE FROM user_1 [usw...]" $query = mysql_query("SELECT * FROM user_1 WHERE `id` = '".$_GET['id']."'");
Folgender Query würde ausgeführt werden:
SELECT * FROM user_1 WHERE `id` = '0'; DELETE FROM user_1 [...]
Nun werden alle Benutzer gelöscht.
Durch eine einfache kleine Zeile.
Verstanden, was ich meine?
Absichern!
Gruß,
dex (qap2-Team)
Lässt sich die injection vermeiden, wenn ich "$_POST" anstatt "$_GET" verwende? -
Also irgentwie geht bei mir weder das script von privatpage oder meins der quelltext von mir siht so aus.
irgentwie speichert das teil nicht in meiner gallery tabelle könnt ihr mir sagen warum ?
<?php $max_size = "300000"; $ordner = "speedloader/gallery/bilder"; $dbname =' .......'; $link = mysql_connect(".......",".......",".....") or die("Couldn't make connection."); $db = mysql_select_db($dbname, $link) or die("Couldn't select database"); $max_byte_size = 2097152; $allowed_types = "(jpg|jpeg|gif|bmp|png|zip|rar|)"; if($_POST["submit"] == "Upload") { if(is_uploaded_file($_FILES["file"]["tmp_name"])) { if(preg_match("/\." . $allowed_types . "$/i", $_FILES["file"]["name"])) { if($_FILES["file"]["size"] <= $max_byte_size) { if(copy($_FILES["file"]["tmp_name"], $_FILES["file"]["name"])) { echo "Datei erfolgreich hochgeladen!<br>"; echo "Name: " . $_FILES["file"]["name"] . "<br>"; echo "Größe: " . $_FILES["file"]["size"] . " Byte<br>"; echo "MIME-Type: " . $_FILES["file"]["type"] . "<br>"; echo "Link: <a href=\"" . $_FILES["file"]["name"] . "\">" . $_FILES["file"]["name"] . "</a>"; move_uploaded_file($tempname, "img/userdata/".$name); { mysql_query("INSERT INTO gallery pic = '$name' WHERE `id` = '".$_Post['id']."'"); } } } else { echo "Datei konnte nicht hochgeladen werden."; } } else { echo "Die Datei darf nur eine Größe von " . $max_byte_size . " Byte besitzen."; } } else { echo "Die Datei besitzt keine ungültige Endung."; } } else { echo "Keine Datei zum Hochladen angegeben."; } } else { echo "Bitte benutzen Sie das Upload Formular."; } ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage