Upload-script

hi zusammen,

habt ihr nen tipp für nen gutes und auch sicheres upload script?

danke

mfg

Hi,

mit nem bisn PHP-Erfahrung kannste das schnell selber machen.

Oder nimm den von mir:

<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="datei">
<input type="submit" name="submit" value="Hochladen">
</form>

<?php

if(isset($_POST['submit']))
  {
  $dateigroesse=filesize($_FILES['datei']['tmp_name']);
  $limit="2048";

  if ($dateigroesse<$limit*1024)
    {
    $dateityp=strrchr($_FILES['datei']['name'], ".");

    if (($dateityp==".jpg") OR ($dateityp==".jpeg"))
      {
      if (move_uploaded_file($_FILES['datei']['tmp_name'],"ordner/".$_FILES['datei']['name']))
        {
        echo "Upload erfolgreich";
        }
      else
        {
        echo "Upload gescheitert";
        }
      }
    else
      {
      echo "Datei nicht erlaubt";
      }
    }
  else
    {
    echo "Datei ist zu gross";
    }
  }

?>

Was willste den speziell machen?

ciao, xcube

super, danke, werd ich mal ausprobieren.

was ich machen möchte?

ich möchte nen formular machen in welchem man nen datum und eine veranstaltung, sowie web-adresse eingeben kann und zusätzlich ne einladung/ausschreibung hochladen kann.

in einer weiteren seite möchte ich dies dann automatisch einblenden

mfg tobsp

ist es möglich ein formular zu machen, in welches ich datum, ne veranstaltung, ne webseite und einen anhang hochladen/bzw schicken kann??

also die daten eingeben, und den anhang sollte hochgeladen werden

dass alles sollte in eine datenbank bzw der anhang in einen ordner oder db, je nachdem was besser ist

Hi,

das lässt sich relaisieren. Ich bin gerade selbst dabei so etwas in der richtung zu basteln. Meine Idee dahinter:

Ich setze voraus dass eine Datenbank vorhanden ist, in welcher die Tabelle mit den Spalten Veranstaltung, Datum, Web-Adresse, Datei angelegt wurden.

1. Formular
Veranstaltung [______]
Datum [______]
Web-Adresse [______]
Datei [______] [durchsuchen]
[Senden]

2. Die Auswertung
stelle DB-Verbindung her
trage Veranstaltungen in DB ein
trage Datum in DB ein
trage Web-Adresse in DB ein
lade Datei hoch und trage URL in DB ein.

Das Ganze lässt sich dann noch mit IF-ECHO-ELSE elegant gestalten, um nach dem erfolgreichen Hochladen eine entsprechende Nachricht auszugeben, oder eben eine Fehlermeldung.

das hört sich doch sympatisch an.

das mit dem formular is nicht so dass problem, aber mit der datei hochladen.

//Datenbank verbinden


                        $datum="";
                        $veranstaltung="";
                        $ausschreibung="";
                        $webseite="";
                        $meldung="";


if(isset($_POST['sicherheitscode']))
{
    $code=$_POST['sicherheitscode'];
    $datum=mysql_real_escape_string($_POST['datum']);
    $veranstaltung=mysql_real_escape_string($_POST['veranstaltung']);
    $ausschreibung=mysql_real_escape_string($_POST['ausschreibung']);
    $webseite=mysql_real_escape_string($_POST['webseite']);

    $meldung = "";

if(empty($_SESSION['captcha_spam'] ) || $code != $_SESSION['captcha_spam'])
   $meldung .= "<rot><b>Sicherheitscode falsch eingegeben!</b></rot><br>";
if(empty($datum))
   $meldung .= "<rot><b>Bitte Tag des Turniers eingeben!</b></rot><br>";
if(empty($veranstaltung))
   $meldung .= "<rot><b>Bitte Turniername eingeben!</b></rot><br>";
if(empty($ausschreibung))
   $meldung .= "<rot><b>Bitte Ausschreibung hochladen (nur Word oder PDF)!</b></rot><br>";
if(empty($webseite))
   $meldung .= "<rot><b>Bitte Webseite eingeben!</b></rot><br>";

if(empty($meldung))

{
         $meldung="<p><rot><b>Turnier erfolgreich eingetragen!</b></rot></p>\n";


mysql_query("INSERT INTO turnierkalender
(datum, veranstaltung, ausschreibung, webseite)
VALUES
('$datum', '$veranstaltung', '$ausschreibung', '$webseite')")
or die(mysql_error());

}
}

mysql_close($link);


                echo "<div id=\"box1\">\n";
                echo "<p><b><font size=\"+2\">Turniere eintragen</font></b></p>\n";
                if ($meldung != "") {echo $meldung;}
                echo "<center>\n";
                echo "<form name=\"anmeldungform\" action=\"turniere_eintragen.php\" method=\"POST\">\n";
                echo "<table width=\"10\">\n";
                echo "<tr>\n";
                echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
                echo "<tr>\n";
                echo "<td align=\"left\">Datum des Turniers:</td><td align=\"left\"><input name=\"datum\" type=\"text\" id=\"name\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$datum."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Turniername:</td><td align=\"left\"><input name=\"veranstaltung\" type=\"text\" id=\"vorname\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$veranstaltung."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Ausschreibung:</td><td align=\"left\"><input name=\"ausschreibung\" type=\"text\" id=\"verein\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$ausschreibung."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Webseite:</td><td align=\"left\"><input name=\"webseite\" type=\"text\" id=\"spielklasse\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$webseite."\"";
                echo "></td>\n";
                echo "</tr>\n";

//eingefügt aus www.stoppt-den-spam.info
                echo "<tr>\n";
                echo "<td align=\"left\"><img src=\"captcha/captcha.php\" border=\"0\" title=\"Sicherheitscode\"></td>\n";
                echo "<td align=\"right\">Sicherheitscode vom Bild: <input type=\"text\" name=\"sicherheitscode\" size=\"5\"></td>\n";
                echo "</tr>\n";
//hier ende des einfügens
                echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
                echo "</table>\n";
                echo "<input name=\"formposten\" type=\"submit\" value=\"Abschicken\" class=\"button\" onclick=\"this.value='Bitte warten...';this.enabled=false;\"></center><br>\n";
                echo "</form>\n";
                echo "</center>\n";
                include "aktualisierung.php";
                echo "</div>\n";

Das hochladen selbst ist ziemlich simpel. Bei mir sieht es wie folgt aus:
Das sollte eigentlich selbsterklärend sein. Dort wo ‘datei’ steht muss an den Wert angepasst werden, den du im entsprechenden Formular-Feld eingegeben hast.

$hochladen = "zielordner/";
$hochladen = $hochladen . basename( $_FILES['datei']['name']) ;
if(move_uploaded_file($_FILES['datei']['tmp_name'], $hochladen))
{
echo "Die Datei wurde hochgeladen.";
}
else {
echo "Ein Fehler ist beim Hochladen aufgetreten.";
}

und wie verknüpf ich dass dann jetzt am besten mit meinem formular?

tut mir leid dass ich da jetzt so blöd frage

Was hast du denn bisher fertig?
Was fehlt noch?
Löst du das alles in einer Datei, oder hast du Formular und das eigentlich Script getrennt?

ich würde gerne alles in eins machen, wenn möglich

[quote]Was hast du denn bisher fertig?
Was fehlt noch?[/quote]

ich hab das formular nur ohne das mit dem hochladen.

was fehlt, wie ich das hochladen jetzt genau in meinem formular unterbringen kann, dass es funktioniert

In deinem Formular musst du ja ein Feld für die Datei haben. Ich lass jetzt mal die FORM-Tags weg und nenne nur das was relevant ist.

Und am Ende des formulars solltest du einen SUBMIT-Button haben, der das Ganze mittels des im Form-Tag angegebenen method=“POST” an eine Datei sendet.

Und den Teil für die Auswertung habe ich ja bereits vorhin gepostet. Da müsstest du allerdings noch einen Abgleich machen, ob die Datei auch doc oder pdf ist.

den teil für die datei habe ich jetzt:

echo "<td algin=\"left\">Ausschreibung:</td><td><input type=\"file\" name=\"file\"></td>";

für was brauch ich den abgleich? und was ist dies?
quasi sowas?

if (($dateityp==".doc") OR ($dateityp==".pdf"))

und den button teil habe ich ja schon im formular:

echo "<input name=\"formposten\" type=\"submit\" value=\"Abschicken\" class=\"button\" onclick=\"this.value='Bitte warten...';this.enabled=false;\"></center><br>\n";
echo "</form>\n";

Genau so.

Den abgleich dachte ich als Überprüfung. Du hast ja geschrieben dass nur DOC und PDF benutzt werden sollen. Und ein solcher Abgleich hilft dir dabei.

irgendwie packt er das mit dem hochladen nicht, was mache ich noch falsch?

//Datenbank verbinden

                        $datum="";
                        $veranstaltung="";
                        $ausschreibung="";
                        $webseite="";
                        $meldung="";


if(isset($_POST['sicherheitscode']))
{
    $code=$_POST['sicherheitscode'];
    $datum=mysql_real_escape_string($_POST['datum']);
    $veranstaltung=mysql_real_escape_string($_POST['veranstaltung']);
    $ausschreibung=mysql_real_escape_string($_POST['ausschreibung']);
    $webseite=mysql_real_escape_string($_POST['webseite']);

    $meldung = "";

if(empty($_SESSION['captcha_spam'] ) || $code != $_SESSION['captcha_spam'])
   $meldung .= "<rot><b>Sicherheitscode falsch eingegeben!</b></rot><br>";
if(empty($datum))
   $meldung .= "<rot><b>Bitte Tag des Turniers eingeben!</b></rot><br>";
if(empty($veranstaltung))
   $meldung .= "<rot><b>Bitte Turniername eingeben!</b></rot><br>";
if(empty($ausschreibung))
   $meldung .= "<rot><b>Bitte Ausschreibung hochladen (nur Word oder PDF)!</b></rot><br>";
if(empty($webseite))
   $meldung .= "<rot><b>Bitte Webseite eingeben!</b></rot><br>";

if(isset($_POST['submit']))
  {
    if (($dateityp==".doc") OR ($dateityp==".pdf"))
      {
      if (move_uploaded_file($_FILES['datei']['tmp_name'],"dateien/turniere/".$_FILES['datei']['name']))
        {
        echo "Die Datei wurde hochgeladen";
        }
      else
        {
        echo "Ein Fehler ist beim Hochladen aufgetreten";
        }
  }
  }

if(empty($meldung))

{
         $meldung="<p><rot><b>Turnier erfolgreich eingetragen!</b></rot></p>\n";


mysql_query("INSERT INTO turnierkalender
(datum, veranstaltung, ausschreibung, webseite)
VALUES
('$datum', '$veranstaltung', '$ausschreibung', '$webseite')")
or die(mysql_error());

}
}

mysql_close($link);


                echo "<div id=\"box1\">\n";
                echo "<p><b><font size=\"+2\">Turniere eintragen</font></b></p>\n";
                if ($meldung != "") {echo $meldung;}
                echo "<center>\n";
                echo "<form name=\"anmeldungform\" action=\"turniere_eintragen.php\" method=\"POST\">\n";
                echo "<table width=\"10\">\n";
                echo "<tr>\n";
                echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
                echo "<tr>\n";
                echo "<td align=\"left\">Datum des Turniers:</td><td align=\"left\"><input name=\"datum\" type=\"text\" id=\"name\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$datum."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Turniername:</td><td align=\"left\"><input name=\"veranstaltung\" type=\"text\" id=\"vorname\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$veranstaltung."\"";
                echo "></td>\n";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td algin=\"left\">Ausschreibung:</td><td><input type=\"file\" name=\"file\"></td>";
                echo "</tr>\n";
                echo "<tr>\n";
                echo "<td align=\"left\">Webseite:</td><td align=\"left\"><input name=\"webseite\" type=\"text\" id=\"spielklasse\" size=\"70\" maxlength=\"50\" class=\"eingabe\"";
                echo " value=\"".$webseite."\"";
                echo "></td>\n";
                echo "</tr>\n";

//eingefügt aus www.stoppt-den-spam.info
                echo "<tr>\n";
                echo "<td align=\"left\"><img src=\"captcha/captcha.php\" border=\"0\" title=\"Sicherheitscode\"></td>\n";
                echo "<td align=\"right\">Sicherheitscode vom Bild: <input type=\"text\" name=\"sicherheitscode\" size=\"5\"></td>\n";
                echo "</tr>\n";
//hier ende des einfügens
                echo "<tr><td colspan=\"2\">&nbsp;</td></tr>";
                echo "</table>\n";
                echo "<input name=\"formposten\" type=\"submit\" value=\"Abschicken\" class=\"button\" onclick=\"this.value='Bitte warten...';this.enabled=false;\"></center><br>\n";
                echo "</form>\n";
                echo "</center>\n";
                include "aktualisierung.php";
                echo "</div>\n";

Erhälst du eine Fehlermeldung? Hast du error-reporting eingebaut? Gerade in der Entwicklung sollte das immer vorhanden sein. Was passiert denn genau?

so error_reporting(E_ALL); habe ich eingebaut, kommt aber keine meldung.

ich trage datum ein, veranstaltung, wähle die pdf datei aus, gebe webseite an und gebe den sicherheitscode ein. dacnach klicke ich auf absenden.

dann erschein nur meine eigene meldung die ich definiert habe

if(empty($ausschreibung))
$meldung .= "<rot><b>Bitte Ausschreibung hochladen (nur Word oder PDF)!</b></rot><br>";

mein datum steht noch im feld, meine veranstaltung auch, und die webseite auch, nur das dateifeld ist leer

Hast du den Ordner wo das Zeug hinsoll auch erstellt? Und hast du dort entsprechende CHMOD-Rechte gesetzt?

ja hab ich