Autor Zpráva
verča
Profil *
Ahoj,
maám dotaz na mazání souborů. Vím že se tu už řešilo mnohokrát, mám tento kód, který mi maže soubory, ale problém mám v tom že ho musím mít uložen v adresáři s foto/original aby se mi něco smazalo. Chtěla bych ho ale mít v jiné úrovni společně s ostatními scripty ale pak mi to bohužel nemaže. Problém bude v té cestě ale ať tam zadám jakoukoliv tak to nemaže. Múže mi prosím někdo poradit jakou cestu tam mam mít?


if(strpos($file, "../foto/original") === false && strpos($file, __FILE__) === false && is_file($file)) {
  unlink($file);
}
else {
  echo "Pokus o smazani selhal";echo ($file);
}
Radek9
Profil
verča:
Ukaž, jak to voláš.
verča
Profil *
$id=$_GET["id"];
$query = "SELECT foto FROM foto WHERE id = '$id'";
$vysledek = mysql_query($query, $link) or die("SQL dotaz nešlo provézt");
while ($zaznam = mysql_fetch_array($vysledek))
                    {

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

Moderátor panther: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Radek9
Profil
verča:
Tak před to $file přidej ještě složku, ne?
unlink("foto/original/".$file);
Nebo nějak tak. Musel bych znát strukturu těch složek.
verča
Profil *
to mi také nejde, ale možná to dělám špatně.
Sript který to maže je v adresaři administrace na localhostu administrace/smaz.php
Fotky jsou v adresari
foto/original


Takže by to mělo být takto ne:
unlink("../foto/original/".$file);


Ale to mi vypíše pokus selhal a nesmaže.
Tori
Profil
Má ten adresář foto/original/ správně nastavená přístupová práva? (Tedy rw pro uživatele, pod nímž běží server)
verča
Profil *
je to na localhostu, tak v rom by snad problem byt nemel ne?
Tori
Profil
To nesouvisí s localhost/ostrý server. Pokud jste tu složku vytvořila sama a ne skriptem, tak dost pravděpodobně z ní PHP skripty mohou jen číst, ne zapisovat. Kdybyste to chtěla ověřit skriptem, zkuste:
$dir = '../foto/original'; // upravte dle potřeby
echo (is_writable($dir) ? 'chyba je jinde' : 'skript nema povoleni tady mazat');
ale rychlejší bude asi normálně otevřít vlastnosti složky. :)
verča
Profil *
V tom chyba asi nebude, ted jsem na to zkusila použít funkci
chdir($path);
, kde si zadám cestu k těm fotkám a už to maže, akorát nevím proč mi to nebralo tu cestu u toho
unlink("../foto/original/".$file);


ted to je takto a jde to:

$path="../foto/original"; 
chdir($path); 
$file=$zaznam["foto"];
echo ($file);
if(strpos($file, "$path") === false && strpos($file, __FILE__) === false && is_file($file)) {
  unlink($file);
}
else {
  echo "Pokus o smazani selhal";
  }
Radek9
Profil
verča:
Protože jsi ověřovala jen is_file($file). Takže je logické, že to nefungovalo.

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