Problem mit Unlink

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

  • Problem mit Unlink

    Hi Leute,

    ich probier den ganzen morgen an meinem Upload Skript rum. Das klappt auch alles soweit. Nun bin ich dran, dass man die hochgeladenen Dateien auch wieder löschen kann.

    Das löschen ansich ist kein Problem. Ich habe vielmehr das Problem, dass die hochgeladenen Dateien in eine SQL Datenbank eingetragen werden. Wenn ich jetzt die Datei löschen wollte, dann soll diese aus der SQL Datenbank und vom Server gelöscht werden. Das löschen aus der SQL Datenbank ist kein Problem.

    Ich muss das irgendwie gleichzeitig, oder vielmehr nacheinander machen.

    PHP-Code:
    case "delete_post":
        
            if (
    $user->is_admin || $user->is_manager){
                
    // check the data for correctness
                
    if (is_numeric($data['ID'])){
                    
    // delete the chosen entry
                    
    if (@$db->sql_query("DELETE FROM {$basic->dt['files']} WHERE (ID = '{$data['ID']}')")) {
                    
                        echo 
    $lang['database_updated'];
                        
    redir($url5);
                    }
                    else
                        echo 
    $db->error;
                }
                else
                    echo 
    $lang['hacking_attempt'];
            }
            else
                echo 
    $lang['hacking_attempt'];
            echo 
    "<BR /><BR /><CENTER><A HREF=\"$url\">{$lang['click_here']}</A>{$lang['to_get_passed_on']}</CENTER>";
        break;
        default: 
    Das hier ist genau die Stelle wo gelöscht wird. Ich habe jetzt einfach mal dort noch ein Unlink reingesetzt, also sieht die Geschichte so aus:

    PHP-Code:
    case "delete_post":
        
            if (
    $user->is_admin || $user->is_manager){
                
    // check the data for correctness
                
    if (is_numeric($data['ID'])){
                
                    
    unlink($pfad.''.$filename);
                    
    // delete the chosen entry
                    
    if (@$db->sql_query("DELETE FROM {$basic->dt['files']} WHERE (ID = '{$data['ID']}')")) {
                    
                        echo 
    $lang['database_updated'];
                        
    redir($url5);
                    }
                    else
                        echo 
    $db->error;
                }
                else
                    echo 
    $lang['hacking_attempt'];
            }
            else
                echo 
    $lang['hacking_attempt'];
            echo 
    "<BR /><BR /><CENTER><A HREF=\"$url\">{$lang['click_here']}</A>{$lang['to_get_passed_on']}</CENTER>";
        break;
        default: 
    Wenn ich nun auf löschen klicke dann bekomme ich folgende Fehlermeldung:

    Warning: unlink(files/): Is a directory in /srv/www/htdocs/web64/html/content/upload.php on line 68

    So, d.h. hier fehlt einfach die Datei zum löschen. Schön und gut, aber wie kann ich den Dateinamen übergeben? Denn ich hole an einer anderen Stelle im Skript schon die ganzen Daten aus der Datenbank.

    Bevor es zum löschen der Datei kommt, habe ich nochmal eine Sicherheitsfunktion eingebaut, damit das löschen auch wirklich gewollt ist. Das ganze schaut so aus:

    PHP-Code:
    case "check_delete_post":
            if (
    $user->is_admin || $user->is_manager){
                
    // check the data for correctness
                
    if ($p){
                    echo 
    "    <BR />{$lang['do_you_really_want_to_delete_this_entry']}<BR />\n";
                    echo 
    "    <FORM ACTION=\"$basic->surl_prefix&amp;nav=delete_post\" METHOD=\"post\">\n";
                    echo 
    "        <INPUT TYPE=\"hidden\" NAME=\"url\" VALUE=\"$basic->surl_prefix\">\n";
                    echo 
    "        <INPUT TYPE=\"hidden\" NAME=\"data[ID]\" VALUE=\"$p\">\n";
                    echo 
    "        <INPUT TYPE=\"submit\" VALUE=\"{$lang['confirm']} ($pfad$f)\">\n";
                    echo 
    "    </FORM>\n";
                    echo 
    "<BR /><CENTER> <A HREF=\"$url\">{$lang['back']}</A> </CENTER>";
                }
                else {
                    echo 
    $lang['hacking_attempt'];
                    echo 
    "<BR /><BR /><CENTER><A HREF=\"$url\">{$lang['click_here']}</A>{$lang['to_get_passed_on']}</CENTER>";
                }
            }
            else {
                echo 
    $lang['hacking_attempt'];
                echo 
    "<BR /><BR /><CENTER><A HREF=\"$url\">{$lang['click_here']}</A>{$lang['to_get_passed_on']}</CENTER>";
            }
        break; 
    Bis dahin werden auch noch alle Daten übermittelt die notwendig sind [($pfad$f) da stecken meine Testausgaben drinne].

    Das dumme daran ist, der SQL Eintrag wird über die ID gelöscht, de Dateiname ist aber ein ganz anderer...

    Ich hoffe ihr versteht meine Problematik und könnt mir vielleicht helfen.

    mfg

  • #2
    Super, jetzt hätte ich mir die ganze Schreiberei ersparen können. Habs jetzt hinbekommen.

    PHP-Code:
    case "check_delete_post":
            if (
    $user->is_admin || $user->is_manager){
                
    // check the data for correctness
                
    if ($p){
                    echo 
    "    <BR />{$lang['do_you_really_want_to_delete_this_entry']}<BR />\n";
                    echo 
    "    <FORM ACTION=\"$basic->surl_prefix&amp;nav=delete_post&f=$f\" METHOD=\"post\">\n";
                    echo 
    "        <INPUT TYPE=\"hidden\" NAME=\"url\" VALUE=\"$basic->surl_prefix\">\n";
                    echo 
    "        <INPUT TYPE=\"hidden\" NAME=\"data[ID]\" VALUE=\"$p\">\n";
                    echo 
    "        <INPUT TYPE=\"submit\" VALUE=\"{$lang['confirm']} ($pfad$f)\">\n";
                    echo 
    "    </FORM>\n";
                    echo 
    "<BR /><CENTER> <A HREF=\"$url\">{$lang['back']}</A> </CENTER>";
                }
                else {
                    echo 
    $lang['hacking_attempt'];
                    echo 
    "<BR /><BR /><CENTER><A HREF=\"$url\">{$lang['click_here']}</A>{$lang['to_get_passed_on']}</CENTER>";
                }
            }
            else {
                echo 
    $lang['hacking_attempt'];
                echo 
    "<BR /><BR /><CENTER><A HREF=\"$url\">{$lang['click_here']}</A>{$lang['to_get_passed_on']}</CENTER>";
            }
        break; 
    Ich habe jetzt bei der ACTION Zeile nochmal den Dateiname mit überliefert. ^^

    Naja, thx fürs lesen

    mfg

    Kommentar

    Lädt...
    X