Chrisman: + (MYSQL) Fileupload mit Abfrage von Userdaten. HILFE!

Hallo,

ich habe folgendes Problem, ich kriege es einfach nicht hin in Perl nen Upload-Script für Bilder zu programmieren, welches auch noch überprüft ob der Username und Passwort übereinstimmen und wenn ja, dann soll hochgeladen werden! Wie geht das?

Versuche das jetzt schon ne Ewigkeit hinzukriegen. Das Bild hochzuladen ist ja kein Problem, habe da einige Freeware-Scripte gefunden, aber das ist auch nicht das Wahre :(

Also das Formular sollte so aussehen:

<form action="..../upload.cgi" method="post" enctype="multipart/form-data">

<input type="text" name="user">
<input type="password" name="pw">
<input type="file" name="upfile">

<input type="submit" value="Hochladen!">

</form>

Im nächsten Schritt soll sozusagen folgendes ausgeführt werden (ist jetzt leicht verkürzt, es ist bei mir natürlich sicherer! WIRKLICH, bei mir gibt es Passwortverschlüsselung, und und und... also bitte jetzt nix wegen Sicherheit sagen!):

$sth = $dbh->prepare("SELECT COUNT(*) FROM usertabelle WHERE user='$param{'user'}' AND pw='$param{'pw'}'");
$sth->execute;
$user_existiert = $sth->fetchrow_array;
if ($user_existiert eq "1")
{

hochladen...

}
else
{
die;
}

Wäre sehr dankbar, wenn mir jemand helfen könnte, da mir bis jetzt noch keiner helfen konnte! Über das Posten des Codes, der in

Hochladen

eingesetzt werden muss, wäre ich am dankbarsten!

Mfg. und vielen dank im voraus
Chrisman

  1. Hallo,

    Versuche das jetzt schon ne Ewigkeit hinzukriegen. Das Bild hochzuladen ist ja kein Problem, habe da einige Freeware-Scripte gefunden, aber das ist auch nicht das Wahre :(

    Fertige Scripte aus dem Netz runterzuladen hat nur dann Sinn, wenn Du genug Ahnung davon hast, wie es auch ohne gehen würde, also selbstgemacht, oder wenn das Script 100% genau das macht, was Du willst, was aber in den seltensten Fällen zutrifft.

    <form action="..../upload.cgi" method="post" enctype="multipart/form-data">

    <input type="text" name="user">
    <input type="password" name="pw">
    <input type="file" name="upfile">

    <input type="submit" value="Hochladen!">

    </form>

    [...]also bitte jetzt nix wegen Sicherheit sagen!):

    Muß ich aber. Hast Du wirklich eine SSL-Seite? Weil sonst wird das Passwort unverschlüsselt übertragen, und dann ist das schon wurscht ob du am Server das alles brav verschlüsselt ablegst oder nicht. Aber das nur am Rande.

    $sth = $dbh->prepare("SELECT COUNT(*) FROM usertabelle WHERE user='$param{'user'}' AND pw='$param{'pw'}'");
    $sth->execute;
    $user_existiert = $sth->fetchrow_array;
    if ($user_existiert eq "1")

    Das hier solltest Du eventuell mal überdenken. Bei diesen Statements kann so viel schief gehen, daß es besser wäre, einmal ein solides Errorhandling zu implementieren. Außerdem finde ich die Ergebnisermittlung, äh wie sage ich es am besten, nun ja, eigenwillig ;-)

    Daher willst Du sicherlich die DBI-Dokumentation nochmals genau lesen.

    {

    hochladen...

    }
    else
    {
    die;

    Ist nun doch etwas brutal, keine Fehlermeldung, kein hinweis, warum es nicht klappte, nur 'die'. Also wirklich. Aber das willst Du sicher noch ändern, oder?

    }

    Wäre sehr dankbar, wenn mir jemand helfen könnte, da mir bis jetzt noch keiner helfen konnte! Über das Posten des Codes, der in

    Hochladen

    eingesetzt werden muss, wäre ich am dankbarsten!

    Code gibts keinen. Aber da Du ja gesagt hast, daß das Bild hochladen kein Problem sei, (Zitat: "Das Bild hochzuladen ist ja kein Problem"), müsste es auch ab sofort einfach sein.
    Außerdem ist aufgrund deines Codefragmentes nicht klar, wie Du zu %param kommst. Verwendest Du CGI.pm, cgi-lob.pl oder etwas anderes, eventuell selbstgemachtes?
    Sollte es CGI.pm sein, so steht in dessen Doku, wie man mit file uploads umgeht. (CREATING A FILE UPLOAD FIELD)
    auch cgi-lib.pl enthält einige Hinweise, wie das damit funktioniert. ist es etwas selbstgestricktes, so mußt Du eben den Source nochmals näher unter die Lupe nehmen.
    Jede dieser Varianten erfordert unterschiedliche Ansatzpunkte, allein schon daher ist auch kein Code zu erwarten. Abgesehen davon bewegst Du dich hier im SELFraum. Und daher ist selbermachen hier das Gebot der Stunde.

    Grüße
      Klaus

    1. Sorry, aber Deine Antwort hat mir gar nichts gebracht! Und wenn Du nicht lesen kannst, ich zitiere mich:
      "ist jetzt leicht verkürzt, es ist bei mir natürlich sicherer! WIRKLICH, bei mir gibt es Passwortverschlüsselung, und und und... also bitte jetzt nix wegen Sicherheit sagen!"

      Ich verstehe deswegen nicht, was Du mich damit vollquatschst! DAS was ich hier gepostet habe, ist NICHT mein Script, sondern etwas, was ich mir hier in 30 Sekunden ausgedacht habe. Es geht mir auschließlich um den Fileupload mit Datenübertragung. Sorry, aber Deine Antwort regt mich echt auf!

      1. Hallo,  <-- Das ist eine Begrüßung, weil soviel Zeit muß sein

        Ich verstehe deswegen nicht, was Du mich damit vollquatschst!
        DAS was ich hier gepostet habe, ist NICHT mein Script, sondern etwas, was ich mir hier in 30 Sekunden ausgedacht habe.

        Tja, was soll ich sagen. Da aber der Inhalt Deines Postings alles ist, was mir für eine Antwort zur Verfügung stand, ist meine Antwort eben so ausgefallen.
        Laß mich auch zitieren:
        <zitat>
        Also das Formular sollte so aussehen:
        <form action="..../upload.cgi" method="post" enctype="multipart/form-data">
        [...]
        </form>
        </zitat>

        Ich hab nirgendwo gelesen, daß das Formular _nicht_ so aussehen wird.
        Aber egal, darum gings ja gar nicht.

        Es geht mir auschließlich um den Fileupload mit Datenübertragung.

        Na gut, und wie soll Aufgrund des Codes irgend jemand außer Dir feststellen, _wie_ Du die Parameter ausliest? Es gibt hier einige, die wirklich gute Detektive zu sein scheinen, aber eindeutig feststellen wird das keiner können.
        Ich habe Dir in meinem Posting einige Hinweise gegeben, wo Du, entsprechend Deines wirklichen Codes, die nötigen Informationen findest.

        Außerdem konnte ich nicht feststellen, wo Dein Problem wirklich ist:
        -- Kommst Du nicht zum Dateiinhalt?
        -- Weißt Du nicht wie man Dateien anlegt und mit Inhalt füllt?
        -- Hast Du keine Ahnung davon wie Du zu einem Dateinamen kommst?
        -- Oder willst Du das sowieso ganz anders machen, und den Dateiinhalt in eine DB schreiben?

        Fragen über Fragen, die aber Du _Dir_ stellen solltest. Und ich bin sicher, wenn Du alle diese Fragen Dir erst mal gestellt hast, dann ist eine Lösung auch nicht mehr weit.

        Sorry, aber Deine Antwort regt mich echt auf!

        Gut, verwende die somit gewonnene Energie im Selbststudium der zur Verfügung stehenden Dokumentationen und Du kannst das Problem im Handumdrehen lösen.
        Und wenn Du schon dabei bist, kannst Du ja mal einen schnellen Blick in </selfaktuell/forum/faq/forumsfaq_2.htm#a3> werfen, es lohn sich.

        Ach ja, wenn Dein Formular so aussieht, wie es ja _nicht_ aussieht, und dann noch jemand den Submit-button nach der Auswahl einer Datei zufälligerweise drückte, dann wird die Datei schon hochgeladen, lümmelt höchstwahrscheinlich irgendwo im Speicher herum und wartet, bis sich das Script endlich dazu bequemt, den ganzen Schlabertatsch auch wirklich permanent irgendwo hin zu schreiben.
        (Ist zwar nicht vollständig korrekt, es fehlen da noch ein paar Details, aber im wesentlich triffts so zu)

        Schönen Abend noch
          Klaus
        (Und das ist eine Verabschiedung, auf dafür sollte Zeit sein)