tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
481
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    cyberking cyberking ist offline Mitglied
    Registriert seit
    Feb 2002
    Beiträge
    11
    heyho...

    ich habe ein kleines problemchen... zuerst erkläre ich am besten mal, was das script leisten soll, und was es bisher kann.

    also, ich habe mir aus x tutorials ein uploadscript zusammengeschnippelt, welches 2 dateien zur selben zeit uploaden soll. hierbei handelt es sich 1. um eine zip datei, und 2. um einen screenshot (es geht um skins...).
    beim upload soll ein neuer ordner erstellt werden, der den namen des skins hat. in diesen ordner sollen nun die beiden dateien upgeloadet werden, also das zip, und der screenshot dazu. weiterhin soll das script eine mail an eine deifinierte e-mail adresse schicken, um über neue uploads informiert zu werden.

    was geht:
    - verzeichnis erstellen
    - e-mail versenden

    was nicht geht:
    - upload

    der code:
    PHP-Code:
    <?PHP
    $addi 
    "contact@growers.de";
    $message "$name [ $email ] hat einen neuen skin upgeloadet.";
    $tellnew "1";
    $mode 0777;
    $skingesamt=$skinname."/".$file_name;
    if (!
    file_exists($skinname))
      {
       
    mkdir ($skinname,$mode);
       
    copy($zip$skingesamt);
       
    copy($screenshot$skingesamt);
       
    unlink($zip);
       
    unlink($screenshot);
      }
    else
      echo 
    "Ein Skin mit diesem namen existiert bereits...";
    if (
    $tellnew == "1")
      {
       
    mail("$addi""Uploaded file""$message");
       exit;
      }
    ?>

    und (wen es interessiert) hier noch der code des dazugehörigen formulares:

    PHP-Code:
    <html>
    <
    head>
    <
    title>scriptSkinupload</title>
    </
    head>

    <
    body>

    <
    center>
    <
    form method="post" action="upload.php">
    <
    table border="0" width="650">
      <
    tr>
        <
    td width="120"><p align="left">(Nick)Name: </p></td>
        <
    td width="12"><font color="red"><b>*</b></font></td>
        <
    td width="500" colspan="2">
          <
    input name="name" size="20">
        </
    td>
      </
    tr>
      <
    tr>
        <
    td width="120"><p align="left">E-Mail Adresse: </p></td>
        <
    td width="12">&nbsp;</td>
        <
    td width="500" colspan="2">
          <
    input name="mail" size="20">
        </
    td>
      </
    tr>
      <
    tr>
        <
    td width="120"><p align="left">Skin-Name: </p></td>
        <
    td width="12"><font color="red"><b>*</b></font></td>
        <
    td width="500" colspan="2">
          <
    input name="skinname" size="20">
        </
    td>
      </
    tr>
      <
    tr>
        <
    td width="120"><p align="left">Skin Zip: </p></td>
        <
    td width="12"><font color="red"><b>*</b></font></td>
        <
    td width="500" colspan="2">
          <
    input name="zip" size="20" type="file">
        </
    td>
      </
    tr>
        <
    tr>
        <
    td width="120"><p align="left">Screenshot: </p></td>
        <
    td width="12"><font color="red"><b>*</b></font></td>
        <
    td width="500" colspan="2">
          <
    input name="screenshot" size="20" type="file">
        </
    td>
      </
    tr>
        <
    tr>
        <
    td width="120" valign="top"><p align="left">Beschreibung: </p></td>
        <
    td width="12" valign="top"><font color="red"><b>*</b></font></td>
        <
    td width="500" colspan="2">
          <
    textarea rows="6" cols="36" name="description" wrap="physical"></textarea>
        </
    td>
      </
    tr>
      </
    tr>
      <
    tr>
        <
    td colspan="4" height="50">
          <
    input type="submit" value="hoch damit">&nbsp;&nbsp;&nbsp;<input type="reset" value="Zurücksetzen">&nbsp;&nbsp;&nbsp;&nbsp;
        </
    td>
      </
    tr>
    </
    table>

    </
    form>
    </
    center>
    </
    body>
    </
    html
    hier die fehlermeldungen:


    Warning: Unable to create 'huhu2/': Is a directory in /var/www/html/uploader/upload.php on line 10

    Warning: Unable to create 'huhu2/': Is a directory in /var/www/html/uploader/upload.php on line 11

    Warning: Unlink failed (Permission denied) in /var/www/html/uploader/upload.php on line 12

    Warning: Unlink failed (Permission denied) in /var/www/html/uploader/upload.php

    wäre dankbar für hilfe
    Geändert von cyberking (22.09.02 um 23:39 Uhr)
     
    <a href="http://www.growers.de">www.growers.de</a> - das Aquaristikportal im Netz

  2. #2
    methodus methodus ist offline Mitglied Platin
    Registriert seit
    Mar 2002
    Ort
    Leipzig
    Beiträge
    543
    Vielleicht solltest du mit $_files["dateinname"] damit könnte es evtl klappen. Die Variable $file_name ist undefiniert, deswegen "glaubt" PHP die Variable $skingesamt sei ein Ordner, da der Wert nur "huhu2/" und nicht wie erwartet "huhu2/huhu2.zip" enthält.
     
    Empirismus, die lieblingsmethode aller mir bekannter Programmierer :]

  3. #3
    cyberking cyberking ist offline Mitglied
    Registriert seit
    Feb 2002
    Beiträge
    11
    hi, habe es nun anders gelöst, bzw besser gesagt korrigiert.

    allerdings gibt es da ein kleines "sicherheitsloch", welches ich noch stopfen müsste... wenn $skinname zum beispiel ../../blabla eingibt, dann wird das verzeichnis halt 2 ebenen höher erstellt. jemand eine idee, wie man das umgehen kann?

    hier noch der aktualisierte "code"

    PHP-Code:
    <?PHP

    $mailto 
    "contact@growers.de";
    $message "$name [ $mail ] hat einen neuen skin namens $skinname upgeloadet. Screenshot: [url]http://www.growers.de/skins/[/url]$skinname/$screenshot_name";
    $tellnew "1";
    $mode 0777;
    $infos " Name: $name\n e-mail: $mail\n Skinname: $skinname\n Skinzip: $zip_name\n Screenshot: $screenshot_name\n URL zum Screenshot: [url]http://www.growers.de/skins/[/url]$skinname/$screenshot_name\n URL zum ZIP-File: [url]http://www.growers.de/skins/[/url]$skinname/$zip_name\n Beschreibung: $description";


    if (
    $name != "" || $description != "" || $skinname != "" || $zip != "" || $screenshot != "")
      {
       if (!
    file_exists($skinname))
          {
           
    mkdir ($skinname,$mode);
            if (
    $zip_name != "" || $screenshot_name != "" || $skinname != "")
             {
              
    copy("$zip"$skinname/$zip_name");
              
    copy("$screenshot"$skinname/$screenshot_name");
          
    touch("$skinname/infos.txt");
          
    $infodatei fopen("$skinname/infos.txt""w");
          
    fputs($infodatei$infos);
          
    fclose($infodatei);
              echo 
    "Danke $name, wir haben den Skin $skinname erhalten.";
             }
              else
               {
                die(
    "Nicht alle Felder ausgefüllt!");
               }
          }
       else
        {
         echo 
    "Ein Skin namens $skinname existiert bereits!";
        }
      }
    else
      {
       echo 
    "Nicht alle felder ausgefüllt!";
      }

    if (
    $tellnew == "1")
      {
       
    mail("$mailto""Neuer Skin""$message");
       exit;
      }
    ?>

    und thx für's helfen.
     
    <a href="http://www.growers.de">www.growers.de</a> - das Aquaristikportal im Netz

  4. #4
    Avatar von Razorhawk
    Razorhawk Razorhawk ist offline Webdesigner und MSP
    Registriert seit
    Aug 2002
    Ort
    Berlin
    Beiträge
    1.363
    Also ich kann dir keinen code bieten, aber ne theoretische Lösung für das Problem.
    Es gibt einen Stringbefehl, der nach dem letzten vorkommen eines Zeichens sucht in einem String.
    eine pfadbezeichung wird ja mit " / " beendet. Dann schreibst du einen code, der dann in diesem string alles löscht bis zum letzten vorkommen des backslashes.
    Reicht das? Ich hoffe!

    Achso noch was die fehler die da ausgegeben werden müssten daher kommen, weil der chmod nicht richtig eingestellt ist von den pfaden, denke ich mal.
    Wenn du nen neuen pfad erstellst, dann musst du uach gleichzeitig per php den chmod ändern, bevor du die file hochlädst.
    dann müssten uach die fehlermeldungen wegbleiben!
     

  5. #5
    methodus methodus ist offline Mitglied Platin
    Registriert seit
    Mar 2002
    Ort
    Leipzig
    Beiträge
    543
    mach am besten nen preg-pattern der punkte und striche einfach entfernt. quasi so:

    $skinname = preg_replace("/(\.\.\/)*/","",$skinname);

    das sucht nach ../ und ersetzt sie durch einen leeren string. ich weiß nicht wie das verhalten ist wenn du nach dem letztvorkommenden / suchst, aber falls es kein / gibt, dürfte er reintheoretisch gar nichts ausspucken, deswegen ist preg-replace besser, da er nur das ersetzt was der pattern findet. im grunde müssteste nur die zeile da oben bei dir einfügen...
     
    Empirismus, die lieblingsmethode aller mir bekannter Programmierer :]

  6. #6
    cyberking cyberking ist offline Mitglied
    Registriert seit
    Feb 2002
    Beiträge
    11
    hi,

    ja, thx, habe es auch so gemacht... bzw ähnlich. ausserdem noch alles ein wenig verkürzt, dank freundlicher hilfe.

    @Razorhawk, der CHMOD wird doch direkt beim verzeichnis erstellen auf 0777 gesetzt:

    PHP-Code:
    <?
    $mode 
    0777;
    mkdir($skinname,$mode);
    ?>
    oder sehe ich das falsch?


    so, und nun letzten endes ist das folgende bei rausgekommen, ich denke, es wäre dann soweit erstmal fertig, zumindest funktioniert es so, wie ich wollte... wenn noch jemandem sicherheitsmängel auffallen, möge er mir bitte bescheidgeben thx

    PHP-Code:
    <?PHP
    $skinname 
    ereg_replace("/" "0" $skinname);
    $skinname ereg_replace(" " "_" $skinname);
    $mode 0777;
    $tellnew "0";
    $mailto "contact@growers.de";
    $message "$name [ $mail ] hat einen neuen skin namens $skinname upgeloadet. Screenshot: [url]http://www.growers.de/skins/[/url]$skinname/$screenshot_name";
    $infos " Name: $name\n e-mail: $mail\n Skinname: $skinname\n Skinzip: $zip_name\n Screenshot: $screenshot_name\n URL zum Screenshot: [url]http://www.growers.de/skins/[/url]$skinname/$screenshot_name\n URL zum ZIP-File: [url]http://www.growers.de/skins/[/url]$skinname/$zip_name\n URL zur infos.txt: [url]http://www.growers.de/skins/[/url]$skinname/infos.txt\n Beschreibung: $description";
    if (
    $skinname != "" and $skinname !="" and $name != "" and $zip != "none" and $screenshot != "none" and $description != "" and !file_exists($skinname) and $screenshot_type == "image/jpeg")
      {
       
    mkdir ($skinname $mode);
       
    copy("$zip"$skinname/$zip_name");
       
    copy("$screenshot"$skinname/$screenshot_name");
       
    touch("$skinname/infos.txt");
       
    $infodatei fopen("$skinname/infos.txt""w");
       
    fputs($infodatei $infos);
       
    fclose($infodatei);
       echo 
    "Danke $name, wir haben deinen Skin ($skinname) erhalten.<br><br>\n";
       echo 
    "Wir werden ihn nach einer kurzen Prüfung in unser Archiv aufnehmen.";
      }
    else
      {
       echo 
    "<font color=\"red\"><h3>Es ist ein Fehler aufgetreten.</h3></font><br><br>\n";
       echo 
    "Entweder existiert bereits ein Skin namens <b>$skinname</b>,<br>\n";
       echo 
    "oder es wurden <b>nicht alle Pflichtfelder</b> ausgefüllt.<br><br>\n";
       echo 
    "Denke bitte auch daran, dass nur <b>*.zip</b> bzw <b>*.jpg</b> Dateien<br>\n";
       echo 
    "hochgeladen werden können...";
       exit;
      }
    if (
    $tellnew == "1")
      {
       
    mail("$mailto""Neuer Skin...""$message");
       exit;
      }
    else
      {
       exit;
      }
    ?>
     
    <a href="http://www.growers.de">www.growers.de</a> - das Aquaristikportal im Netz

Ähnliche Themen

  1. probleme mit uploadscript
    Von breytex im Forum PHP
    Antworten: 9
    Letzter Beitrag: 18.07.06, 08:56
  2. Probleme mit Uploadscript
    Von RageNo1 im Forum PHP
    Antworten: 3
    Letzter Beitrag: 03.07.06, 17:06
  3. Probleme bei Script umsetzung
    Von ulf123 im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 2
    Letzter Beitrag: 16.02.06, 11:19
  4. Eigenes CMS -> Probleme mit Umsetzung
    Von diggity im Forum PHP
    Antworten: 6
    Letzter Beitrag: 11.04.05, 18:52
  5. Probleme bei umsetzung :(
    Von Lykon im Forum Photoshop
    Antworten: 8
    Letzter Beitrag: 11.04.02, 13:10