Ralf: bild upload einpflegen

hallo,
ich habe gerade etwas meinen ansatz verloren und bräuchte einmal hilfe.
ich versuche mich gerade mit dem thema datenbanken auseinanderzusetzen und die funktionsweise zu verstehen.
ich bekomme es grob auch schon hin eine datenbanktabelle anzulegen, inhalt einzupflegen und wieder auszulesen.
jedoch würde ich jetzt gerne einen bildupload zu der bestehenden tabelle hinzufügen.
hier einmal meinen derzeitigen stand:

`id` int(11) NOT NULL auto_increment,  
`url` varchar(100) NOT NULL,  
`pictime` date NOT NULL default '0000-00-00',
(isset( $_POST['eintragen'] ))  
{  
    // Maskierende Slashes aus POST entfernen  
    $_POST = get_magic_quotes_gpc() ? array_map( 'stripslashes', $_POST ) : $_POST;  
  
    // Inhalte der Felder aus POST holen  
    $name = $_POST['url'];  
    $name_zusatz = $_POST['img'];  
    $strasse = $_POST['date'];  
  
  
    /* ************************************************************************************************ */  
    /* *** Hier sollten und MUESSEN die Benutzereingaben geprueft werden um Schadcode abzufangen!!! *** */  
    /* ************************************************************************************************ */  
  
    // Sind alle Eingaben durch die Validierung gekommen werden sie in die DB geschrieben  
    // Verbindung oeffnen und Datenbank ausweahlen  
    $conID = mysql_connect( $db_host, $db_user, $db_pass ) or die( "Die Datenbank konnte nicht erreicht werden!" );  
    if ($conID)  
    {  
        mysql_select_db( $db_name, $conID );  
    }  
  
    // Anfrage zusammenstellen der an die DB geschickt werden soll  
    $sql = "INSERT INTO `funtstuecke`  
                (`url`, `img`, `date`)  
            VALUES(  
                '" .mysql_real_escape_string( $url ). "',  
                '" .mysql_real_escape_string( $img ). "',  
                '" .mysql_real_escape_string( $date ). "'  
                )";  
    // Schickt die Anfrage an die DB und schreibt die Daten in die Tabelle  
    mysql_query( $sql );  
    // Pruefen ob der neue Datensatz tatsaechlich eingefuegt wurde  
    if (mysql_affected_rows() == 1)  
    {  
        echo "<h3>Der Datensatz wurde hinzugef&uuml;gt!</h3>";  
        // Hier kann weiterer Code stehen der ausgefuehrt werden soll  
        // wenn ein Eintrag erfolgreich war. z.B. Email an den Admin schicken  
        // der ueber den neuen Eintrag informiert  
    }  
    else  
    {  
        echo "<h3>Der Datensatz konnte <strong>nicht</strong> hinzugef&uuml;gt werden!</h3>";  
        // Hier koennen Massnahmen ergriffen werden die ueber den Misserfolg informieren  
        // wie z.B. den Benutzer darueber zu informieren, dem Admin eine Mail schicken  
        // damit er sich um den Fehler kuemmern kann, etc pp  
    }  
}  
?>  
  
  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
<title>arne-sonnabend.de :: intern</title>  
<link href="css/screen.css" rel="stylesheet" type="text/css" />  
</head>  
  
<body>  
  
    <div id="container">  
      <div id="header">  
        <h1><a class="headline" href="http://zweiwert.de/kundendaten/index.php">Neues Funst&uuml;ck anlegen</a></h1>  
  
      <!-- end #header --></div>  
      <div id="mainContent">  
          <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="formular" id="formular">  
<table width="350" border="0">  
  <tr>  
    <td width="70">URL:</td>  
    <td width="230"><input type="text" name="url" id="url" /></td>  
  </tr>  
  <tr>  
    <td>img:</td>  
    <td><input type="text" name="img" id="img" /></td>  
  </tr>  
  
  <tr>  
    <td>date:</td>  
    <td><input type="text" name="date" id="date" /></td>  
  </tr>  
  
    <tr>  
    <td>&nbsp;</td>  
    <td><input type="submit" name="eintragen" id="eintragen" value="Abschicken" /></td>  
  </tr>  
</table>  
  
  
        <!-- end #mainContent --></div>  
      <div id="footer">  
      <p>-----------------------------------</p>  
  
  
  
      <!-- end #footer --></div>  
    <!-- end #container --></div>  
    </body>  
</html>

könnte mir jemand einen ansatz geben wie ich hier noch einen bild einpflegen kan. also ich weiß das ich kein bil din die datenbank bekomme, ich würde gerne einfach den dateinamen speichern, so das ich es wieder auslesen kann.
ich danke euch schonmal für eure hilfe.
viele grüße
ralf

  1. Hi,

    könnte mir jemand einen ansatz geben wie ich hier noch einen bild einpflegen kan. also ich weiß das ich kein bil din die datenbank bekomme, ich würde gerne einfach den dateinamen speichern, so das ich es wieder auslesen kann.

    Und was genau ist jetzt eine Frage?

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. Und was genau ist jetzt eine Frage?

      entschuldigung, ich scheine mich nciht richtig ausgedrückt zu haben.
      ich würde gerne wissen, was für parameter ich an die datenbank übergeben muss. ich habe gelesen, dass die dateiendung und der dateiname in unterschiedlichen spalten gespeichert werden.
      mir fehlt gerade der totale ansatz. wenn jemand ein tutorial für mich hätte wäre das super.
      viele grüße
      ralf

      1. Hi,

        ich würde gerne wissen, was für parameter ich an die datenbank übergeben muss.

        Das solltest du selber am allerbesten wissen.

        ich habe gelesen, dass die dateiendung und der dateiname in unterschiedlichen spalten gespeichert werden.

        Warum, mit welcher Begründung?

        Nicht, dass es pauschal abwegig wäre - aber dein Datendesign sollte auf begründeten und nachvollziehbaren Gedanken aufbauen, und nicht auf "hab ich irgendwo gelesen, also muss das wohl so".

        mir fehlt gerade der totale ansatz.

        Du willst einen Dateinamen in einer Datenbanktabelle ablegen - also mach das doch einfach.
        Neue Spalte anlegen mit geeignetem Datentyp, Queries/Routinen zum Eintragen und Auslesen entsprechend erweitern, fertig.

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
        1. also, ich bin jetzt schon viel weiter.
          es wird eine datei auf dem server gespeichert und auch etwas in die datenbanktabelle geschrieben. nur leider ist das wirres zeug.
          hier die datei:

          <?php  
          include ("checkuser.php");  
            
            
          $db_host = "xxx";  
          $db_user = "xxx";  
          $db_pass = "xxx";  
          $db_name = "xxx";  
            
            
          //###############################  
          //formular  
          //###############################  
            
            
          // Wurde das Formular abgeschickt?  
          if (isset( $_POST['submitbutton'] ))  
          {  
              // Whiteliste Dateiendungen und Ersetzungen  
              $Erlaubte_Dateiendungen = array( "jpg", "gif", "zip", "png" );  
              $Dateiname_bereinigen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_' );  
              // Pruefen ob die hochgeladenen Datei mehr als 0 Byte hat  
              // Hat sie das nicht, wurde auch nichts hochgeladen, logisch, was?! ;)  
              if ($_FILES['datei']['size'] > 0)  
              {  
                  // Dateiendung der hochgeladenen Datei abtrennen  
                  $UploadDateiEndung = array_pop( explode( ".", strtolower( $_FILES['datei']['name'] ) ) );  
                  // Schauen ob die Endung der hochgeladenen Datei in der Whitelist steht  
                  if (!in_array( $UploadDateiEndung, $Erlaubte_Dateiendungen ))  
                  {  
                      die( "Die angeh&auml;ngte Datei hat eine nicht erlaubte Dateiendung!" );  
                  }  
                  // Neuer Dateiname erzeugen indem Umlaute und Leerzeichen umgewandelt werden  
                  $img = strtr( strtolower( $_FILES['datei']['name'] ), $Dateiname_bereinigen );  
                  // UMASK resetten um Dateirechte zu ändern (wird nur fuer Linux benoetigt, Windows ignoriert das)  
                  $umask_alt = umask( 0 );  
                  // Hochgeladenen Datei verschieben  
                  if (@move_uploaded_file($_FILES['datei']['tmp_name'] , "./bilder/" . $img))  
                  {  
                      // Die Datei wurde erfolgreich an ihren Bestimmungsort verschoben  
                      /* ***************************************************************************************** */  
                      /* *** Hier koennte Code stehen um Email zu versenden oder Datenbank-Eintraege zu machen *** */  
                      /* ***************************************************************************************** */  
            
                      // Dateirechte setzen, damit man später die Datei wieder vom FTP bekommt und die UMASK auf den alten Wert setzen  
                      @chmod( $img, 0755 );  
                      umask( $umask_alt );  
                  }  
                  else  
                  {  
                      // UMASK resetten  
                      umask( $umask_alt );  
                      // Hier steht Code der ausgefuehrt wird, wenn der Upload fehl schlug  
                  }  
              }  
          }  
          //###############################  
          //datenbankanbindung  
          //###############################  
            
          if (isset( $_POST['eintragen'] ))  
          {  
              // Maskierende Slashes aus POST entfernen  
              $_POST = get_magic_quotes_gpc() ? array_map( 'stripslashes', $_POST ) : $_POST;  
            
              // Inhalte der Felder aus POST holen  
              $name = $_POST['url'];  
              $name_zusatz = $_POST['img'];  
            
            
              /* ************************************************************************************************ */  
              /* *** Hier sollten und MUESSEN die Benutzereingaben geprueft werden um Schadcode abzufangen!!! *** */  
              /* ************************************************************************************************ */  
            
              // Sind alle Eingaben durch die Validierung gekommen werden sie in die DB geschrieben  
              // Verbindung oeffnen und Datenbank ausweahlen  
              $conID = mysql_connect( $db_host, $db_user, $db_pass ) or die( "Die Datenbank konnte nicht erreicht werden!" );  
              if ($conID)  
              {  
                  mysql_select_db( $db_name, $conID );  
              }  
            
              // Anfrage zusammenstellen der an die DB geschickt werden soll  
              $sql = "INSERT INTO `funtstuecke`  
                          (`url`, `img`)  
                      VALUES(  
                          '" .mysql_real_escape_string( $url ). "',  
                          '" .mysql_real_escape_string( $img ). "'  
            
                          )";  
              // Schickt die Anfrage an die DB und schreibt die Daten in die Tabelle  
              mysql_query( $sql );  
              // Pruefen ob der neue Datensatz tatsaechlich eingefuegt wurde  
              if (mysql_affected_rows() == 1)  
              {  
                  echo "<h3>Der Datensatz wurde hinzugef&uuml;gt!</h3>";  
                  // Hier kann weiterer Code stehen der ausgefuehrt werden soll  
                  // wenn ein Eintrag erfolgreich war. z.B. Email an den Admin schicken  
                  // der ueber den neuen Eintrag informiert  
              }  
              else  
              {  
                  echo "<h3>Der Datensatz konnte <strong>nicht</strong> hinzugef&uuml;gt werden!</h3>";  
                  // Hier koennen Massnahmen ergriffen werden die ueber den Misserfolg informieren  
                  // wie z.B. den Benutzer darueber zu informieren, dem Admin eine Mail schicken  
                  // damit er sich um den Fehler kuemmern kann, etc pp  
              }  
          }  
            
            
            
          ?>  
            
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
          <html xmlns="http://www.w3.org/1999/xhtml">  
          <head>  
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
          <title>arne-sonnabend.de :: intern</title>  
          <link href="css/screen.css" rel="stylesheet" type="text/css" />  
          </head>  
            
          <body>  
            
              <div id="container">  
                <div id="header">  
                  <h1>anlegen</h1>  
            
                <!-- end #header --></div>  
                <div id="mainContent">  
                	<form name="formular" id="formular" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">  
                	  
          <table width="350" border="0">  
            <tr>  
              <td width="70">url</td>  
              <td width="230"><input type="text" name="url" id="url" /></td>  
            </tr>  
            <tr>  
              <td>img</td>  
              <td><input type="file" name="img" id="img"></td>  
            </tr>  
            
              <td>&nbsp;</td>  
              <td><input type="submit" name="eintragen" id="eintragen" value="Abschicken" /></td>  
            </tr>  
          </table>  
            
            
              	<!-- end #mainContent --></div>  
                <div id="footer">  
                <p>-----------------------------------</p>  
                  BenutzerId: <?php echo $_SESSION["user_id"]; ?><br>  
            Nickname: <?php echo $_SESSION["user_nickname"]; ?><br>  
            Nachname: <?php echo $_SESSION["user_nachname"]; ?><br>  
            Vorname: <?php echo $_SESSION["user_vorname"]; ?>  
            
            <a href="logout.php">Ausloggen</a>  
                <!-- end #footer --></div>  
              <!-- end #container --></div>  
              </body>  
          </html>  
          
          

          und hier was rauskommt bei img:
          /var/tmp/phpmZcLHf

          kann sich das jemand erklären und mir weiterhelfen?

          1. Hi,

            // Wurde das Formular abgeschickt?
            if (isset( $_POST['submitbutton'] ))

            Ja - wurde es?

            Ich sehe in deinem Code an keiner anderen Stelle irgendwas, das bewirken könnte, dass sich ein Wert unter dem Index 'submitbutton' in $_POST befinden könnte.

            Und im Formular gibt es auch kein Feld, das dafür sorgen könnte, dass sich im $_FILES-Array ein Eintrag unter 'datei' befindet.

            //###############################
            //datenbankanbindung
            //###############################

            if (isset( $_POST['eintragen'] ))

            Da du hier auf Vorhandensein eines anderen Submitbuttons prüfst, gehe ich davon aus, dass das Sichern der hochgeladenen Datei und der zugehörige Eintrag in die Datenbank in zwei verschiedenen Formular-Requests abgehandelt werden sollen?

            Wenn ja, warum?

            und hier was rauskommt bei img:
            /var/tmp/phpmZcLHf

            kann sich das jemand erklären und mir weiterhelfen?

            Du hast hoffentlich das error_reporting auf E_ALL und display_errors auf on stehen?

            Es sieht so aus, als ob du hier einfach aus zwei Scripten eins gemacht hättest, ohne dabei die Variablen-Bezeichner konsequent anzupassen.

            MfG ChrisB

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.
            1. da hast du leider recht. ich habe ein upload-skript in mein bisheriges eingepflegt. ich werd das alles gleich mal ausprobieren

              Du hast hoffentlich das error_reporting auf E_ALL und display_errors auf on stehen?

              das verstehe ich leider nicht. kannst du mir das noch einmal erklären?
              liebe grüße

              1. Hi,

                Du hast hoffentlich das error_reporting auf E_ALL und display_errors auf on stehen?

                das verstehe ich leider nicht. kannst du mir das noch einmal erklären?

                http://peterkropff.de/tutorials/php_fehler/php_fehler.htm

                MfG ChrisB

                --
                Light travels faster than sound - that's why most people appear bright until you hear them speak.
                1. so, jetzt ist es aktiv.
                  es gibt nur leider keine warnung.
                  ist das skript denn jetzt in ordnung?

                    
                  <?php  
                  include ("checkuser.php");  
                    
                    
                  $db_host = "xxx";  
                  $db_user = "xxx";  
                  $db_pass = "xxx";  
                  $db_name = "xxx";  
                    
                    
                  //###############################  
                  //formular  
                  //###############################  
                    
                    
                  // Wurde das Formular abgeschickt?  
                  if (isset( $_POST['submitbutton'] ))  
                  {  
                      // Whiteliste Dateiendungen und Ersetzungen  
                      $Erlaubte_Dateiendungen = array( "jpg", "gif", "zip", "png" );  
                      $Dateiname_bereinigen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_' );  
                      // Pruefen ob die hochgeladenen Datei mehr als 0 Byte hat  
                      // Hat sie das nicht, wurde auch nichts hochgeladen, logisch, was?! ;)  
                      if ($_FILES['datei']['size'] > 0)  
                      {  
                          // Dateiendung der hochgeladenen Datei abtrennen  
                          $UploadDateiEndung = array_pop( explode( ".", strtolower( $_FILES['datei']['name'] ) ) );  
                          // Schauen ob die Endung der hochgeladenen Datei in der Whitelist steht  
                          if (!in_array( $UploadDateiEndung, $Erlaubte_Dateiendungen ))  
                          {  
                              die( "Die angeh&auml;ngte Datei hat eine nicht erlaubte Dateiendung!" );  
                          }  
                          // Neuer Dateiname erzeugen indem Umlaute und Leerzeichen umgewandelt werden  
                          $img = strtr( strtolower( $_FILES['datei']['name'] ), $Dateiname_bereinigen );  
                          // UMASK resetten um Dateirechte zu ändern (wird nur fuer Linux benoetigt, Windows ignoriert das)  
                          $umask_alt = umask( 0 );  
                          // Hochgeladenen Datei verschieben  
                          if (@move_uploaded_file($_FILES['datei']['tmp_name'] , "./bilder/" . $img))  
                          {  
                              // Die Datei wurde erfolgreich an ihren Bestimmungsort verschoben  
                              /* ***************************************************************************************** */  
                              /* *** Hier koennte Code stehen um Email zu versenden oder Datenbank-Eintraege zu machen *** */  
                              /* ***************************************************************************************** */  
                    
                              // Dateirechte setzen, damit man später die Datei wieder vom FTP bekommt und die UMASK auf den alten Wert setzen  
                              @chmod( $img, 0755 );  
                              umask( $umask_alt );  
                          }  
                          else  
                          {  
                              // UMASK resetten  
                              umask( $umask_alt );  
                              // Hier steht Code der ausgefuehrt wird, wenn der Upload fehl schlug  
                          }  
                      }  
                  }  
                  //###############################  
                  //datenbankanbindung  
                  //###############################  
                    
                  if (isset( $_POST['submitbutton'] ))  
                  {  
                      // Maskierende Slashes aus POST entfernen  
                      $_POST = get_magic_quotes_gpc() ? array_map( 'stripslashes', $_POST ) : $_POST;  
                    
                      // Inhalte der Felder aus POST holen  
                      $name = $_POST['url'];  
                      $name_zusatz = $_POST['img'];  
                    
                    
                      /* ************************************************************************************************ */  
                      /* *** Hier sollten und MUESSEN die Benutzereingaben geprueft werden um Schadcode abzufangen!!! *** */  
                      /* ************************************************************************************************ */  
                    
                      // Sind alle Eingaben durch die Validierung gekommen werden sie in die DB geschrieben  
                      // Verbindung oeffnen und Datenbank ausweahlen  
                      $conID = mysql_connect( $db_host, $db_user, $db_pass ) or die( "Die Datenbank konnte nicht erreicht werden!" );  
                      if ($conID)  
                      {  
                          mysql_select_db( $db_name, $conID );  
                      }  
                    
                      // Anfrage zusammenstellen der an die DB geschickt werden soll  
                      $sql = "INSERT INTO `funtstuecke`  
                                  (`url`, `img`)  
                              VALUES(  
                                  '" .mysql_real_escape_string( $url ). "',  
                                  '" .mysql_real_escape_string( $img ). "'  
                    
                                  )";  
                      // Schickt die Anfrage an die DB und schreibt die Daten in die Tabelle  
                      mysql_query( $sql );  
                      // Pruefen ob der neue Datensatz tatsaechlich eingefuegt wurde  
                      if (mysql_affected_rows() == 1)  
                      {  
                          echo "<h3>Der Datensatz wurde hinzugef&uuml;gt!</h3>";  
                          // Hier kann weiterer Code stehen der ausgefuehrt werden soll  
                          // wenn ein Eintrag erfolgreich war. z.B. Email an den Admin schicken  
                          // der ueber den neuen Eintrag informiert  
                      }  
                      else  
                      {  
                          echo "<h3>Der Datensatz konnte <strong>nicht</strong> hinzugef&uuml;gt werden!</h3>";  
                          // Hier koennen Massnahmen ergriffen werden die ueber den Misserfolg informieren  
                          // wie z.B. den Benutzer darueber zu informieren, dem Admin eine Mail schicken  
                          // damit er sich um den Fehler kuemmern kann, etc pp  
                      }  
                  }  
                    
                    
                    
                  ?>  
                    
                  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
                  <html xmlns="http://www.w3.org/1999/xhtml">  
                  <head>  
                  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
                  <title>arne-sonnabend.de :: intern</title>  
                  <link href="../css/screen.css" rel="stylesheet" type="text/css" />  
                  </head>  
                    
                  <body>  
                    
                      <div id="container">  
                        <div id="header">  
                          <h1>anlegen</h1>  
                    
                        <!-- end #header --></div>  
                        <div id="mainContent">  
                        	<form name="formular" id="formular" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">  
                        	  
                  <table width="500" border="0">  
                    <tr>  
                      <td width="70">url</td>  
                      <td width="430"><input type="text" name="url" id="url" size="35" /></td>  
                    </tr>  
                    <tr>  
                      <td>img</td>  
                      <td><input type="file" name="img" id="img"></td>  
                    </tr>  
                    
                      <td>&nbsp;</td>  
                      <td><input type="submit" name="submitbutton" id="submitbutton" value="Abschicken" /></td>  
                    </tr>  
                  </table>  
                    
                    
                      	<!-- end #mainContent --></div>  
                        <div id="footer">  
                        <p>-----------------------------------</p>  
                          BenutzerId: <?php echo $_SESSION["user_id"]; ?><br>  
                    Nickname: <?php echo $_SESSION["user_nickname"]; ?><br>  
                    Nachname: <?php echo $_SESSION["user_nachname"]; ?><br>  
                    Vorname: <?php echo $_SESSION["user_vorname"]; ?>  
                    
                    <a href="logout.php">Ausloggen</a>  
                        <!-- end #footer --></div>  
                      <!-- end #container --></div>  
                      </body>  
                  </html>  
                  
                  

                  viele grüße
                  ralf

                  1. Hi,

                    so, jetzt ist es aktiv.

                    Überprüft?

                    es gibt nur leider keine warnung.

                    Das ist, wenn die Einstellungen zur Fehlerausgabe aktiv sind, ja schon mal eine gute Nachricht.

                    ist das skript denn jetzt in ordnung?

                    Kommt drauf an - macht es das, was du willst?

                    Wenn nicht - dann fange an, zu debuggen.
                    Kontrollausgaben verwendeter Werte sind der erste, grundlegende Schritt.

                    MfG ChrisB

                    --
                    Light travels faster than sound - that's why most people appear bright until you hear them speak.
                    1. ich habs hinbekommen,
                      aber keine ahnung woran es lag. hab die datei nochmal von vorne zusammengestellt.
                      hier der code:

                        
                        
                      <?php  
                      include ("checkuser.php");  
                        
                      $db_host = "xxx";  
                      $db_user = "xxx";  
                      $db_pass = "xxx";  
                      $db_name = "xxx";  
                        
                        
                        
                      //###############################  
                      //formular  
                      //###############################  
                      // Wurde das Formular abgeschickt?  
                      if (isset( $_POST['submitbutton'] ))  
                      {  
                          // Whiteliste Dateiendungen und Ersetzungen  
                          $Erlaubte_Dateiendungen = array( "jpg", "gif", "zip", "png" );  
                          $Dateiname_bereinigen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_' );  
                          // Pruefen ob die hochgeladenen Datei mehr als 0 Byte hat  
                          // Hat sie das nicht, wurde auch nichts hochgeladen, logisch, was?! ;)  
                          if ($_FILES['datei']['size'] > 0)  
                          {  
                              // Dateiendung der hochgeladenen Datei abtrennen  
                              $UploadDateiEndung = array_pop( explode( ".", strtolower( $_FILES['datei']['name'] ) ) );  
                              // Schauen ob die Endung der hochgeladenen Datei in der Whitelist steht  
                              if (!in_array( $UploadDateiEndung, $Erlaubte_Dateiendungen ))  
                              {  
                                  die( "Die angeh&auml;ngte Datei hat eine nicht erlaubte Dateiendung!" );  
                              }  
                              // Neuer Dateiname erzeugen indem Umlaute und Leerzeichen umgewandelt werden  
                              $img = strtr( strtolower( $_FILES['datei']['name'] ), $Dateiname_bereinigen );  
                              // UMASK resetten um Dateirechte zu ändern (wird nur fuer Linux benoetigt, Windows ignoriert das)  
                              $umask_alt = umask( 0 );  
                              // Hochgeladenen Datei verschieben  
                              if (@move_uploaded_file($_FILES['datei']['tmp_name'] , "./bilder/" . $img))  
                              {  
                                  // Die Datei wurde erfolgreich an ihren Bestimmungsort verschoben  
                                  /* ***************************************************************************************** */  
                                  /* *** Hier koennte Code stehen um Email zu versenden oder Datenbank-Eintraege zu machen *** */  
                                  /* ***************************************************************************************** */  
                        
                                  // Dateirechte setzen, damit man später die Datei wieder vom FTP bekommt und die UMASK auf den alten Wert setzen  
                                  @chmod( $img, 0755 );  
                                  umask( $umask_alt );  
                              }  
                              else  
                              {  
                                  // UMASK resetten  
                                  umask( $umask_alt );  
                                  // Hier steht Code der ausgefuehrt wird, wenn der Upload fehl schlug  
                              }  
                          }  
                      }  
                        
                        
                        
                        
                      if (isset( $_POST['submitbutton'] ))  
                      {  
                          // Maskierende Slashes aus POST entfernen  
                          $_POST = get_magic_quotes_gpc() ? array_map( 'stripslashes', $_POST ) : $_POST;  
                        
                          // Inhalte der Felder aus POST holen  
                          $name = $_POST['url'];  
                          $name_zusatz = $_POST['img'];  
                        
                        
                          /* ************************************************************************************************ */  
                          /* *** Hier sollten und MUESSEN die Benutzereingaben geprueft werden um Schadcode abzufangen!!! *** */  
                          /* ************************************************************************************************ */  
                        
                          // Sind alle Eingaben durch die Validierung gekommen werden sie in die DB geschrieben  
                          // Verbindung oeffnen und Datenbank ausweahlen  
                          $conID = mysql_connect( $db_host, $db_user, $db_pass ) or die( "Die Datenbank konnte nicht erreicht werden!" );  
                          if ($conID)  
                          {  
                              mysql_select_db( $db_name, $conID );  
                          }  
                        
                          // Anfrage zusammenstellen der an die DB geschickt werden soll  
                          $sql = "INSERT INTO `funtstuecke`  
                                      (`url`, `img`)  
                                  VALUES(  
                                      '" .mysql_real_escape_string( $url ). "',  
                                      '" .mysql_real_escape_string( $img ). "'  
                        
                                      )";  
                          // Schickt die Anfrage an die DB und schreibt die Daten in die Tabelle  
                          mysql_query( $sql );  
                          // Pruefen ob der neue Datensatz tatsaechlich eingefuegt wurde  
                          if (mysql_affected_rows() == 1)  
                          {  
                              echo "<h3>Der Datensatz wurde hinzugef&uuml;gt!</h3>";  
                              // Hier kann weiterer Code stehen der ausgefuehrt werden soll  
                              // wenn ein Eintrag erfolgreich war. z.B. Email an den Admin schicken  
                              // der ueber den neuen Eintrag informiert  
                          }  
                          else  
                          {  
                              echo "<h3>Der Datensatz konnte <strong>nicht</strong> hinzugef&uuml;gt werden!</h3>";  
                              // Hier koennen Massnahmen ergriffen werden die ueber den Misserfolg informieren  
                              // wie z.B. den Benutzer darueber zu informieren, dem Admin eine Mail schicken  
                              // damit er sich um den Fehler kuemmern kann, etc pp  
                          }  
                      }  
                        
                        
                        
                      ?>  
                      <html>  
                      <head>  
                      <title>Datei Upload</title>  
                      </head>  
                        
                      <body>  
                      <form name="DateiUpload" id="DateiUpload" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">  
                       <table width="500" border="0">  
                       <tr>  
                          <td width="70">url</td>  
                          <td width="430"><input type="text" name="url" id="url" size="35" /></td>  
                        </tr>  
                        <tr>  
                          <td>img</td>  
                          <td><input type="file" name="datei" id="datei"></td>  
                        </tr>  
                        <tr>  
                        	<td>&nbsp;</td>  
                          <td><input type="submit" name="submitbutton" id="submitbutton" value="Datei hochladen"></td>  
                         <tr>  
                         </table>  
                      </form>  
                      <?php echo $img; ?>  
                      </body>  
                      </html>  
                      
                      

                      danke für den tip mit dem ausschließen und noch einen schönen abend
                      Ralf

            2. // Wurde das Formular abgeschickt?
              if (isset( $_POST['submitbutton'] ))

              hab den fehler behoebn. jetzt sind alle auf submitbutton umgeschrieben

              Und im Formular gibt es auch kein Feld, das dafür sorgen könnte, dass sich im $_FILES-Array ein Eintrag unter 'datei' befindet.

              das verstehe ich leider auch nicht was du damit meinst.

              Da du hier auf Vorhandensein eines anderen Submitbuttons prüfst, gehe ich davon aus, dass das Sichern der hochgeladenen Datei und der zugehörige Eintrag in die Datenbank in zwei verschiedenen Formular-Requests abgehandelt werden sollen?

              das war nur ein versehen

              Wenn ja, warum?

              und hier was rauskommt bei img:
              /var/tmp/phpmZcLHf

              Du hast hoffentlich das error_reporting auf E_ALL und display_errors auf on stehen?

              ichw eiß nicht ob ich dan on oder off hab.

              ich kann es mir einfach nciht erklären.
              viele grüße
              ralf

              1. Hi,

                Und im Formular gibt es auch kein Feld, das dafür sorgen könnte, dass sich im $_FILES-Array ein Eintrag unter 'datei' befindet.

                das verstehe ich leider auch nicht was du damit meinst.

                Genau das gleiche, wie mit dem davor - du greifst lustig auf irgendwie benannte Parameter zu, ohne dich vergewissert zu haben, dass diese überhaupt existieren.
                Und deinem Formular zufolge tut dieser hier es auch nicht.

                Du hast hoffentlich das error_reporting auf E_ALL und display_errors auf on stehen?

                ichw eiß nicht ob ich dan on oder off hab.

                phpinfo() hilft beim Prüfen;
                beim eventuellen einstellen beider Optionen das Handbuch oder Google.

                MfG ChrisB

                --
                Light travels faster than sound - that's why most people appear bright until you hear them speak.