Bildupload, warum geht das nicht?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bildupload, warum geht das nicht?

    Hallo,

    ich habe ein upload-Script geschrieben, aber es geht nicht
    richtig und ich habe keine Ahnung warum.

    Ich möchte das für jeden User im Verzeichnis "images" ein
    Unterverzeichnis mit seinem Loginnamen erstellt wird und
    dann darin das Bild abgelegt wird. Das Unterverzeichnis
    erstelle ich mit mkdir und das funzt auch. Nur wenn das Bild
    upgeloadet wird erscheind es nicht im Unterverzeichnis
    sondern im Verzeichnis "images" und wird "umbenannt".
    Wenn zu Beispiel der Loginname user ist und das Bild test.jpg
    dann heisst das Bild im Verzeichnis "images" usertest.jpg
    obwohl das Unterverzeichnis erstellt wurde und auch über
    die richtigen Rechte (777) verfügt.

    Hier mal das Script:

    //Erstellung Unterverzeichnis

    PHP-Code:
    <?php session_start();
     include(
    "./installation.php");
     
    $uid=$_SESSION['userid'];
     
    $sqlv="SELECT login_name From user WHERE usr_id='$uid'";
     
    $resultv=mysql_db_query($db_name,$sqlv,$connect);
     
    $log=mysql_fetch_array($resultv);
     
    $logn=$log['login_name'];
     
    $pfad "images/$logn";
     
     if (!
    file_exists("$pfad"))
       {
       
    $sqlp="SELECT login_name From user WHERE usr_id='$uid'";
       
    $resultp=mysql_db_query($db_name,$sqlp,$connect);
       
    $log=mysql_fetch_array($resultp);
       
    $logn=$log['login_name'];
       
    mkdir("images/$logn");
       
    chmod ("images/$logn"0777);
       }
     
    $sizeabfrage "yes";
     
    $filesize "10000";
     
    $sizeanzeige "yes";
     
    $extend "jpg|gif";
     
    $max_hoehe 61;
     
    $max_breite  101;
    ?>
    //upload

    PHP-Code:
    <? 
     if(isset($_POST ['anz_senden']))
     {
     $Anzeige=$_POST ['Anzeige'];
     $datum=date('Y-m-d');
     $such_biet=$_POST['such_biet'];
     $Kategorie=$_POST['Kategorie'];
     $alt_bild='./images/kein_bild_gif.gif';
     $alt=$alt_bild;
     }
     $fehler = FALSE;
     if ($anz_senden){
          if ($bild_name == "") {
          $fehler = true;
          $sql= "insert into anzeigen Values ('','$uid','$Kategorie','$such_biet','$Anzeige','$alt','','','$datum','')";
          mysql_db_query($db_name,$sql,$connect);
          echo "<script language='JavaScript'>eingeloggt();</script>";
        }
     if ($bild_name != "") {
         $bild_name_ja=$bild_name;
         }
     if (!$fehler)
          if (file_exists("$pfad$bild_name_ja")) {
          $meldung="Dieser Dateiname .....";
          $file=$pfad."/".$bild_name_ja;
          $fehler = TRUE;
          }
     if (!$fehler)
          if ($sizeabfrage == "yes") {
          if (($file_size > $filesize)&&($file_size!=0)) {
             $meldung="Das Bild .....";
             $fehler = TRUE;
             }
          }
     if (!$fehler)
          if (!eregi("($extend)$", $bild_name_ja)) {
          $meldung="Das Bild......";
          $fehler = TRUE;
          }

     $datei_info=GetImageSize($_FILES['bild']['tmp_name']);
         $breite    = $datei_info[0];
         $hoehe     = $datei_info[1];
         
     if (!$fehler)
         if($hoehe >$max_hoehe){
         $meldung="<br>Das Bild .......";
         $fehler = TRUE;
         }
     if (!$fehler)
         if($breite >$max_breite){
         $meldung="<br>Das Bild ......";
         $fehler = TRUE;
         }
     if (!$fehler) {
         if (copy($bild,"$pfad$bild_name_ja")) {
         $fehler = FALSE;
         $file_name2 = "$pfad$bild_name_ja";
         echo "<script language='JavaScript'>eingeloggt();</script>";
         }
         else {
         $meldung="<br>Datei nicht hochgeladen!<br><br>";
         $fehler = TRUE;
         }
      if(file_exists($file_name2)) 
         {
         chmod ("images/$logn", 0777);
         $datei_info=GetImageSize("./images/$logn/" . $_FILES['bild']['name']);
         $breite    = $datei_info[0];
         $hoehe     = $datei_info[1];
         $fileName = $_FILES['bild']['tmp_name'];
         $datei_name_neu= "./images/$logn/"  . $_FILES['bild']['name'];
         move_uploaded_file($_FILES['bild']['tmp_name'], $datei_name_neu);
         $sql= "insert into anzeigen Values ('','$uid','$Kategorie','$such_biet','$Anzeige','$datei_name_neu','$breite','$hoehe','$datum','')";
         mysql_db_query($db_name,$sql,$connect);
         } 
     elseif(! file_exists($file_name2)) 
         { 
         $meldung="<br>Die Datei ist nicht vorhanden!<br><br>"; 
         } 
         }
         }

     if ($fehler || !$anz_senden) {

    ?>
    Ich bin echt am Verzweifeln, wäre wirklich klasse wenn ihr mir helfen
    könntet. Habe schon alles gesucht aber leider nichts passendes gefunden.

    Vielen Dank schon mal
    Indra

  • #2
    hi,

    PHP-Code:
     if (copy($bild,"$pfad$bild_name_ja")) { 
    gib mal bitte das ziel per echo aus.

    der code erscheint mir recht konfus.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      PHP-Code:
      if (copy($bild$pfad."".$bild_name_ja)) { 
      oder
      PHP-Code:
      if (copy($bild$pfad."/".$bild_name_ja)) { 
      [COLOR=darkblue]Manuals:[/COLOR] [COLOR=green]HTML[/COLOR]/[COLOR=indigo]CSS[/COLOR]/[COLOR=orangered]PHP[/COLOR]/[COLOR=blue]MySQL[/COLOR]/[COLOR=red]Apache 2[/COLOR]
      [COLOR=orangered]Archive: JavaScript/Flash/PHP/OpenSource-Lösungen[/COLOR]
      [COLOR=seagreen]Tutorials: Flash/Photoshop[/COLOR]
      [COLOR=red]Problem? Lösung 1 - Lösung 2[/COLOR]

      Kommentar


      • #4
        dann aber mittels move_uploaded_file()
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Hallo,
          erst einmal möchte ich mich für die raschen
          Antworten bedanken.

          Ich habe auch noch was ausprobiert.
          Wenn ich
          {
          PHP-Code:
          if (!$fehler) {
          if (
          copy($bild,"$pfad/$bild_name_ja")) {
          $fehler FALSE;
          $file_name2 "$pfad/$bild_name_ja";
          echo 
          "<script language='JavaScript'>eingeloggt();</script>";
               } 
          gehts nur einmal dannach kommt die Fehlermeldung:

          Warning: copy(): SAFE MODE Restriction in effect. The script whose uid is 1065 is not allowed to access /www/...../......./htdocs/..../..../images/user owned by uid 65534 in /www/..../...../...../...../.../anzeige_neu.php on line 184

          Warning: copy(images/user/loeschen.jpg): failed to open stream: No such file or directory in /www/..../..../...../....../....../anzeige_neu.php on line 184

          heisst das nicht, das keine Rechte vergeben worden sind?
          Aber warum gehts dann einmal?


          mit move_uploaded_file() habe ichs auch mal getestet, dabei wird das bild wohl nicht umbenannt, aber es ist immer noch im Verzeichnis images und nicht im Unterverzeichnis. Helft mir doch nochmal bitte, ich habe wirklich keine Ahnung wie das gehen soll.

          if (move_uploaded_file($_FILES['bild']['tmp_name'],"images/$logn". $_FILES['bild']['name'])) {



          mit dem echo vor dem if oder wie meinst du das?

          mit freundlichem Gruss
          Indra
          Zuletzt geändert von indra; 29.06.2004, 15:16.

          Kommentar

          Lädt...
          X