Autor | Zpráva | ||
---|---|---|---|
gardener Profil |
#1 · Zasláno: 16. 4. 2009, 21:40:09
Zdravím,
Měl bych jeden dotaz, chtěl bych odstraňovat více souborů naráz pomocí checkboxů, Vytvořil jsem si tedy něco viz níže: Problém je v tom, že nevím pomocí jakého cyklu bych měl zpracovat mazání souborů, while co tam mám nyní asi není dobrá volba, jelikož vytváří nekonečný cyklus.. Napadlo mě foreach ale ten zas nevím, jak bych zde zapsal.. Chtěl bych se tedy zeptat, jaký způsob myslíte, že by byl nejlepší? Díky za jakoukolliv radu. <table border="1"> <tr> <th>Název souboru</th> <th>Smazat</th> </tr> <? $cesta="./data"; $adresar=opendir($cesta); while($jmenosouboru = readdir($adresar)) { if ($jmenosouboru != "." && $jmenosouboru != "..") echo "<tr>"; echo "<td>".$jmenosouboru."</td>\n"; echo "<td><input type=\"checkbox\" name=\"delete[]\" value=\"$jmenosouboru\"></td>"; echo "</tr>\n"; } echo "</table>\n"; closedir($adresar); //DELETE SELECTED ITEMS if ( isset( $_POST['submit'] ) AND is_array( $_POST['delete'] ) ) { while(is_array($_POST['delete'])) { unlink("$cesta"."/"."$jmenosouboru"); } } //END DELETE SELECTED ITEMS ?> |
||
AM_ Profil |
#2 · Zasláno: 16. 4. 2009, 22:07:14 · Upravil/a: AM_
V první části je while naprosto správně. Druhá část si skutečně říka o foreach;
foreach ($_POST['delete'] as $filetodelete){ $filetodelete = preg_replace('/[\\/\\\\]/', '', $filetodelete); //melo by odstranit oba typy lomitek, aby se hacker nedostal do jinych adresaru unlink ("$cesta/$filetodelete"); } |
||
gardener Profil |
#3 · Zasláno: 16. 4. 2009, 22:27:42
Díky za vysvětlení.
|
||
Časová prodleva: 15 let
|
0