Autor Zpráva
Pepinko
Profil *
Ahoj,
Používám formulář pro uploud souboru do adresáře download na servru. A potřeboval bych ještě udělat funkci na smazání tohoto souboru z adresáře.
Používám odkaz pro smazání nazvu z databáze:
$odstran = "odstranit_soubor.php?id=".$zaznam["id"];

odstranit_soubor.php:
<?php
$id=$_GET["id"];
$vysledek=mysql_query("delete from download_soubor where id = $id");
$path = 'http://' . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . '/download.php';      
Header("Location:".$path); 
exit; 
?>

Jak ale udělat odkaz aby mi to smazalo i ten soubor z adresáře?
Našel jsem tento script ale vůbec nevím jak ho použít:
$file = $_GET['file'];
if(strpos($file, "../") === false && strpos($file, __FILE__) === false && is_file($file)) {
  unlink($file);
}
else {
  echo "Pokus o smazani selhal";
}
mckay
Profil
Pepinko:
Ještě před tím, než vymažeš záznam z databáze si ten soubor z databáze vyber a smaž ho. Ošetři to proti sql injection. Mimo to je také nutné aby adresář (tuším i soubor) který mažeš měl chmod (777).
Pepinko
Profil *
Aha ale jak přesně tu funkci mám použít abych ho vymazal, když soubor je třeba: pokus.zip a je v adresáři download?
chmod mám 777, protože do něj ty soubory nahrávám.
Pepinko
Profil *
Takto zkousim takto ale vypise mi to echo: Pokus o smazani selhal

odstranit_soubor.php:
<?php
$id=$_GET["id"];
$query = "SELECT * FROM download_soubor WHERE id = '$id'";
$detail = mysql_query($query, $link) or die("SQL dotaz nešlo provézt");
while ($zaznam = mysql_fetch_array($detail))
                    {
$file=$zaznam["soubor"];

if(strpos($file, "../download") === false && strpos($file, __FILE__) === false && is_file($file)) {
  unlink($file);
}
else {
  echo "Pokus o smazani selhal";
}

$vysledek=mysql_query("delete from download_soubor where id = $id");
$path = 'http://' . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . '/download.php';      
Header("Location:".$path); 
exit; 
?>


Mám to zapsané správně?
AM_
Profil
Pepinko:
Takto zkousim takto ale vypise mi to echo: Pokus o smazani selhal
Mám to zapsané správně?

Těžko říct, ladit to za tebe nebudeme. Zkus si sám, která z těch tří podmínek na řádku 9 neplatí, a zjisti proč.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0