kostenloser Webspace werbefrei: lima-city


Uploadscript mit MySQL-Eintrag

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    u****9

    Hi liebe Com,

    Ich habe eine frage und zwar wie bekomme ich das hin das wen jemand ein bild hochläd das es passend in meine gallery mysql tabelle kommt , die struktur der tabelle siht etwa so aus könnt ihr mir da helfen ?
    id Pic
    1 Pic1,jpg
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. s****o

    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
  5. privatecitypage

    Kostenloser Webspace von privatecitypage

    privatecitypage hat kostenlosen Webspace.

    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
  6. Das Script ist Smart und Praktisch;
    evtl sollte man eine automatische Umbenennung vornehmen um doppelte Dateien zu vermeiden.

    Beitrag zuletzt geändert: 25.1.2010 0:30:21 von arkmeister
  7. Achtung!
    Bei dem Skript ist eine SQL-Injection sehr einfach!
    Minimum: Alles per mysql_real_escape_string() formatieren!
    Gruß,
    dex (qap2-Team)
  8. privatecitypage

    Kostenloser Webspace von privatecitypage

    privatecitypage hat kostenlosen Webspace.

    Wie meinst du denn das?!
  9. Autor dieses Themas

    u****9

    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 ?
  10. sonok

    Moderator Kostenloser Webspace von sonok

    sonok hat kostenlosen Webspace.

    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. :king:
  11. Autor dieses Themas

    u****9

    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.
  12. Nimm Dir doch einfach ein fertiges Dateiverwaltungsscript.
    Die gibt es kostenlos zu hunderten im Internet und funktionieren idR wie sie sollen.
  13. Autor dieses Themas

    u****9

    Es wird schon besser mit dem script ich habe es bis jetzt wenigstens geschafft das er keine 100,000 mysql einträge mehr macht.
  14. 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
  15. 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?
  16. mit der Funktion
    mysql_escape_string ( $string );
    kann man das MySQL Injectionen verhindern.
  17. Autor dieses Themas

    u****9

    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."; 
    
    } 
    
    ?>
  18. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!