2011-03-17 20 views
9

मुझे इस लिंक से PHP सूची निर्देशिका स्क्रिप्ट मिली है http://www.gaijin.at/en/scrphpfilelist.php। मैं डायरेक्टॉय से एक फ़ाइल कैसे हटा सकता हूं? मैंने unlink की कोशिश की, लेकिन उसने उस निर्देशिका से सभी फाइलों को हटा दिया। यह लिंक जो मुझे लिंक से मिला है!php निर्देशिका में एक फ़ाइल को हटाएं

while ($file = readdir ($hDir)) { 
if (($file != '.') && ($file != '..') && (substr($file, 0, 1) != '.') && 
    (strtolower($file) != strtolower(substr($DescFile, -(strlen($file))))) && 
    (!IsFileExcluded($Directory.'/'.$file)) 
    ) { 

    array_push($FilesArray, array('FileName' => $file, 
           'IsDir' => is_dir($Directory.'/'.$file), 
           'FileSize' => filesize($Directory.'/'.$file), 
           'FileTime' => filemtime($Directory.'/'.$file) 
           )); 
} 
} 
$BaseDir = '../_cron/backup'; 
$Directory = $BaseDir; 

foreach($FilesArray as $file) { 
    $FileLink = $Directory.'/'.$file['FileName']; 
    if ($OpenFileInNewTab) $LinkTarget = ' target="_blank"'; else $LinkTarget = ''; 
    echo '<a href="'.$FileLink.'">'.$FileName.'</a>'; 
    echo '<a href="'.unlink($FileLink).'"><img src="images/icons/delete.gif"></a></td>'; 
    } 
} 

सूची निर्देशिका फ़ोल्डर कॉल: बैकअप।
unlink($FileLink) में, जब मैं लिंक होवर करता हूं तो व्यवस्थापक फ़ोल्डर में किसी अन्य फ़ोल्डर में बदल जाता है?

+0

आप कोड आप कृपया की कोशिश की पोस्ट कर सके है? – Harold

+0

आपने लूप के अंदर अनलिंक का उपयोग किया ताकि लूप के अंदर सबकुछ खत्म हो गया हो। –

+0

@experimentX किसी भी विचार को सभी फ़ाइलों को हटाने के बिना 'अनलिंक' को कैसे रखा जाए – tonoslfx

उत्तर

22

unlink('path_to_filename'); एक समय में एक फ़ाइल को नष्ट करेगा।

यदि निर्देशिका से आपकी पूरी फाइलें समाप्त हो गई हैं तो इसका मतलब है कि आपने सभी फाइलों को सूचीबद्ध किया है और एक लूप में एक करके हटा दिया है।

ठीक है आप उसी पृष्ठ में हटा नहीं सकते हैं। आपको दूसरे पेज के साथ करना है। deletepage.php नामक एक पृष्ठ बनाएं जिसमें उस फ़ाइल को 'फ़ाइल' के साथ पैरामीटर के रूप में हटाने और लिंक करने के लिए स्क्रिप्ट शामिल होगी।

foreach($FilesArray as $file) 
{ 
    $FileLink = $Directory.'/'.$file['FileName']; 

    if($OpenFileInNewTab) $LinkTarget = ' target="_blank"'; 
    else $LinkTarget = ''; 

    echo '<a href="'.$FileLink.'">'.$FileName.'</a>'; 
    echo '<a href="deletepage.php?file='.$fileName.'"><img src="images/icons/delete.gif"></a></td>';   
} 

deletepage.php

//and also consider to check if the file exists as with the other guy suggested. 
$filename = $_GET['file']; //get the filename 
unlink('DIRNAME'.DIRECTORY_SEPARATOR.$filename); //delete it 
header('location: backto prev'); //redirect back to the other page 

आप नेविगेट करने के लिए नहीं करना चाहते हैं, तो ajax का उपयोग सुरुचिपूर्ण बनाने के लिए पर।

+0

में बहुत कुछ अपडेट दिखाई देता है;) – tonoslfx

+1

@ boyee077 आपका स्वागत है –

+1

वोला, आपने एक अंतरंग सुरक्षा बनाई है छेद। लोग जो कुछ भी चाहते हैं उसे हटा सकते हैं अगर वे 'फाइल' पैरामीटर के साथ बस खराब हो जाते हैं। – middus

3

unlink आपके उपयोग के मामले के लिए सही PHP कार्य है।

unlink('/path/to/file'); 

अधिक जानकारी के बिना, मैं आपको यह नहीं बता सकता कि आपने इसका उपयोग कब किया था।

1

यदि आप एक फ़ाइल को हटाना चाहते हैं, तो आपको यह पता होना चाहिए कि unlink() फ़ंक्शन का उपयोग करें।

वह फ़ंक्शन आपको पैरामीटर के रूप में पास करने के लिए हटा देगा: इसलिए, यह फ़ाइल पर इसे हटाने के लिए आपके ऊपर निर्भर है कि इसे हटाना होगा।


उदाहरण के लिए, आप कुछ इस तरह का उपयोग करेंगे:

unlink('/path/to/dir/filename'); 
7

http://php.net/manual/en/function.unlink.php

अनलिंक सुरक्षित रूप से एक एकल फाइल को दूर कर सकते हैं; बस सुनिश्चित करें कि फ़ाइल बनाने आप यह वास्तव में एक फ़ाइल और नहीं एक निर्देशिका हटा रहे हैं ('।' या '..')

if (is_file($filepath)) 
    { 
    unlink($filepath); 
    } 
3

स्क्रिप्ट आप सूचियों डाउनलोड किए जाने वाले निर्दिष्ट फ़ोल्डर की सामग्री। आप संभवतः अनलिंक डालते हैं - while में से एक में कॉल करें-जो फ़ाइलों को सूचीबद्ध करता है।

संपादित करें - अब है कि आप अपने कोड पोस्ट:

echo '<a href="'.unlink($FileLink).'"><img src="images/icons/delete.gif"></a></td>'; 

इस unlink समारोह हर बार लाइन लिखा है कहता है, अपनी फ़ाइल को हटाने कर। आपको एक स्क्रिप्ट के लिए एक लिंक लिखना है जिसमें एक डिलीट फ़ंक्शन है और कुछ पैरामीटर पास करें जो आपकी स्क्रिप्ट को हटाना है।

उदाहरण:

<a href="/path/to/script.php?delete='. $FileLink .'">delete</a> 

आप इस स्क्रिप्ट एक फ़ाइल का पथ पारित नहीं चाहिए और द्रोही किया जा रहा है इसका इस्तेमाल हो सकता है बस सब कुछ नष्ट करने के लिए या अन्य बुराई बातें करते हैं, क्योंकि बस इसे हालांकि हटाने के लिए,।

+0

yup इसके अंदर foreach! – tonoslfx

0
<?php 
    if(isset($_GET['delete'])){ 
     $delurl=$_GET['delete']; 
     unlink($delurl); 
    } 
?> 
<?php 
if ($handle = opendir('.')) { 
    while (false !== ($entry = readdir($handle))) { 
     if ($entry != "." && $entry != "..") { 
      echo "<a href=\"$entry\">$entry</a> | <a href=\"?delete=$entry\">Delete</a><br>"; 
     } 
    } 
    closedir($handle); 
} 
?> 

यह यह

4
Simply You Can Use It 

$sql="select * from tbl_publication where id='5'"; 
$result=mysql_query($sql); 
$res=mysql_fetch_array($result); 
//Getting File Name From DB 
$pdfname = $res1['pdfname']; 
//pdf is directory where file exist 
unlink("pdf/".$pdfname); 
संबंधित मुद्दे