Διαγραφή αρχείων

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
zeppos
Δημοσιεύσεις: 431
Εγγραφή: 26 Μαρ 2006 10:43
Τοποθεσία: Kyklades
Επικοινωνία:

Διαγραφή αρχείων

Δημοσίευση από zeppos » 26 Μαρ 2006 11:00

Καλημέρα σας
Μόλις "ανακάλυψα" τις συζητήσεις σας καθώς έψαχνα για λύση στο Google!
Θα περιγράψω σύντομα το πρόβλημα .
Εχω ένα πίνακα που εμφανίζει τα αρχεία που υπάρχουν σε ένα φάκελλο temp. Τα αρχεία αυτά είναι οι αιτήσεις εγγραφής μελών σε ένα σωματείο και μπαίνουν στον προσωρινό φάκελλο με όνομα το όνομα που δίνει ο αιτών πχ George.txt.
O πίνακας έχει 3 colums - Preview - Delete - Name.txt, και πάει στο επόμενο row με το επόμενο αρχείο. Τώρα όλα δουλεύουν μια χαρά εκτός από το delete.. στις δοκιμές, στο PC υπάρχει ο Apache και PHP5.
Εχω δοκιμάσει το..
$action = $_GET['action'];
switch($action)
{
case 'delete':
IF (@is_file($path."/".$file))
{
@unlink ($path."/".$file);
}
brake;

και στο λινκ: href=?action=delete αλλά τίποτα!! Τί κάνω λάθος;
Ευχαριστώ για την υπομονή σας!!

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Διαγραφή αρχείων

Δημοσίευση από Rapid-eraser » 26 Μαρ 2006 11:19

kkatarxiv bgale ta @ gia va blepeis ta la8i.
to @ kavei suppress sta errors kai etsi dev 8a ma8eis pote ti pige straba.
To pio pi8avo eivai va miv briskei ksta path ta arxeia
kai kata sivepia va miv kavei tipota.

Episis miv kaveis sigkriseis me strings stnv php gia va kaveis
domes if/switch Dokimase ari8mitikes times eivai grigoroteres kai poio aksiopisteses.

Dokimase parakato va miv pervas strings apo to GET method. Eivai protimotero va peraseis mia defteri metabliti me ari8mo para strings. Xrisimopiiseta otav eivai akros aparetita movo (kai megali prosoxi sta file-inclusions xss).
Episis to link sou prepei va eivai tis morfis

path/to/file.php?action=delete
H
path/to/?action=delete

Afta ta oliga.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

zeppos
Δημοσιεύσεις: 431
Εγγραφή: 26 Μαρ 2006 10:43
Τοποθεσία: Kyklades
Επικοινωνία:

Διαγραφή αρχείων

Δημοσίευση από zeppos » 26 Μαρ 2006 11:37

Ευχαριστώ για την απάντηση αλλά.. εχω δοκιμάσει πολλά..πχ
$action = $_GET['action'];
switch($action)
{
case 1:
IF (is_file($path."/".$file))
{
unlink ($path."/".$file) or die ('......');
}

brake;
Υπάρχει στο λινκ που ανέφερα και: ?href=$PHP_SELF?action=1&file=$file
Όταν δοκιμάζω το $path με echo σε κάποιο σημείο του πίνακα γραφει κανονικά όλο το path και τους φακέλλους που υπάρχουν στον temp.
Εχω δοκιμάσει και με
$i=0;
if(isset($delete)){
if($delete==$i){unlink($path/$file);
$i++;
}
Πάλι ..τζίφος ή στην καλύτερη πε΄ριπτωση που πέτυχα πάει και τα σβύνει όλα τα αρχεία του φακέλλου και οχι τον συγκεκριμένο του colum..
Εικόνα

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Διαγραφή αρχείων

Δημοσίευση από Rapid-eraser » 26 Μαρ 2006 12:02

to path se sxesi me to relative path sou eivai sosto ?
Episis exei ta dikeomata n php va sbisei to arxeio ?

Dokimase va kaveis eva demo xoris va eisai mesa sto programa
gia va deis ta relative path pos sou doulebouv.
px ftiakse eva sketo arxeio php bale mesa unlink($_GET['file'])
ftiase eva fakelo kai dive paths va deis pos sou sbivei to arxeio.

To poio pi8avo eivai va miv pervei sosta to path
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

zeppos
Δημοσιεύσεις: 431
Εγγραφή: 26 Μαρ 2006 10:43
Τοποθεσία: Kyklades
Επικοινωνία:

Διαγραφή αρχείων

Δημοσίευση από zeppos » 26 Μαρ 2006 12:37

Εφιαξα ξεχωριστό αρχείο με:
<?php
$file = $_GET['file'];
if(is_file($file)) {
chmod("$file", 0777) or die ('No file');
unlink($_GET['file']);
echo "Item:&nbsp;<b>".$file."</b>&nbsp;deleted!";
} else {
echo "I can't delete the&nbsp; ". $file;
}
?>
Στο λινκ είναι τώρα: νεοαρχείο.php?file=$file
Να σημειώσεις οτι ο φάκελλος ανοίγει με readdir.
Αποτέλεσμα..λουπάρει όλο το κώδικα και μου λέει:
I can't delete arxeio.txt (Το σωστό σρχείο)
Όμως επανηλλειμένα σβύνω αρχεία με άλλους κώδικες ειδικά όταν ανοίγω φακέλλους txt και διαβάζω τις εγγραφές που αντιστοιχούν σε αρχεία με νούμερο($topics)..Πάντως μάλλον έχεις δίκιο για το path αλλά δεν ξέρω γιατί!!
Εικόνα

zeppos
Δημοσιεύσεις: 431
Εγγραφή: 26 Μαρ 2006 10:43
Τοποθεσία: Kyklades
Επικοινωνία:

Διαγραφή αρχείων

Δημοσίευση από zeppos » 26 Μαρ 2006 13:58

Φίλε σ'ευχαριστώ για τον κόπο που μπήκες να με βοηθήσεις..Ακριβώς το path έλειπε από το αρχείο..
Στο παραπάνω αρχείο που έστειλα πρόσθεσα στην αρχή το path για τον φάκελλο(temp) και το όνομα το παίρνει από το $_GET['file'], σε όλα τα παρακάτω έβαλα $path/$file και έγινε.. Μετέφερα το αρχείο στην αρχική σελίδα με την προσθήκη..
if(isset($_GET['file'])) για να μην γράφει οτι θέλει πριν πατήσεις το λινκ..και δούλεψε ..Ελπίζω να πάρει βοήθειες από τα παραπάνω και κάποιος άλλος "ταλαίπωρος" σαν και μένα!!
Εικόνα

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες