Autor Zpráva
hrac
Profil *
4aute prosímvás mám udělán script na vípis souborů ale když kliknu na otevřát adresář tak to začne psát chyby :( ale poprvé nic kod ma tady
<?php
if($dir=="")
$dir="./";
$nas_sou="admin.php";
$handle=opendir("$dir"); 
$i=0;
$j=0;
while (false!==($file = readdir($handle))) 
{ 
    if ($file!="."&&$file!=".."&&!is_dir($file)&&$file!=$nas_sou) 
    { 
        $soubor[$i]="$file";
        $velikost[$i]=filesize ($file);
        $zmena[$i]=date("H:i:s d.m.Y ",filemtime($file));
        $i++;
    } 
    if ($file != "." && is_dir($file))
    {
       $adresar[$j]="$file";
       $j++;
    }
}
closedir($handle); 
function vypis($s,$v,$z)
{
       echo "<table>\n";
       for($i=0;$i<count($s);$i++)
       {
        echo "<tr><td width=150>";
        echo '<a href="'.$s[$i].'">'.$s[$i].'</a>';
        echo "</td><td width=60>$v[$i]";
        echo "</td><td>$z[$i]";
        echo "</td></tr>\n";
       }
       echo "</table>\n";
}
function vypis_slozek($s,$v,$z)
{
       echo "<table>\n";
       for($i=0;$i<count($s);$i++)
       {
        echo "<tr><td width=150>";
        echo '<a href="?dir='.$s[$i].'">'.$s[$i].'</a>';
        echo "</td><td width=60>$v[$i]";
        echo "</td><td>$z[$i]";
        echo "</td></tr>\n";
       }
       echo "</table>\n";
}
echo "Adresáře:\n";
vypis_slozek($adresar,"","");
echo "Soubory:\n";
vypis($soubor,$velikost,$zmena);
?>

nevím čím to může bžýt prostě kliknu na složku a bum chyby :(díky za radu
Joker
Profil
Mám nápad, udělám si šablonu a budu jí kopírovat.

Dotaz na problém s kódem- ocitujte prosím následující text a odpovězte na otázky:
1. Co očekáváte, že daný kód udělá (co by měl dělat)?

2. Jak se liší skutečné chování od očekávaného? Pokud je výsledkem chybová hláška, zkopírujte text hlášky.
hrac
Profil *
no ten kod udělá to že vypíše soubory a složky a na složky udělá odkaz aby to šlo dal otevírat
chyb kod je
Warning: filesize(): Stat failed for edit.gif (errno=2 - No such file or directory) in /3w/wz.cz/b/blogcz/admin/vypis_souboru.php on line 13

Warning: filemtime(): Stat failed for edit.gif (errno=2 - No such file or directory) in /3w/wz.cz/b/blogcz/admin/vypis_souboru.php on line 14

Warning: filesize(): Stat failed for alert.gif (errno=2 - No such file or directory) in /3w/wz.cz/b/blogcz/admin/vypis_souboru.php on line 13

Warning: filemtime(): Stat failed for alert.gif (errno=2 - No such file or directory) in /3w/wz.cz/b/blogcz/admin/vypis_souboru.php on line 14

Warning: filesize(): Stat failed for ukaz.gif (errno=2 - No such file or directory) in /3w/wz.cz/b/blogcz/admin/vypis_souboru.php on line 13

Warning: filemtime(): Stat failed for ukaz.gif (errno=2 - No such file or directory) in /3w/wz.cz/b/blogcz/admin/vypis_souboru.php on line 14

Warning: filesize(): Stat failed for smaz.gif (errno=2 - No such file or directory) in /3w/wz.cz/b/blogcz/admin/vypis_souboru.php on line 13

Warning: filemtime(): Stat failed for smaz.gif (errno=2 - No such file or directory) in /3w/wz.cz/b/blogcz/admin/vypis_souboru.php on line 14

Warning: filesize(): Stat failed for info.gif (errno=2 - No such file or directory) in /3w/wz.cz/b/blogcz/admin/vypis_souboru.php on line 13

Warning: filemtime(): Stat failed for info.gif (errno=2 - No such file or directory) in /3w/wz.cz/b/blogcz/admin/vypis_souboru.php on line 14

Warning: filesize(): Stat failed for error.gif (errno=2 - No such file or directory) in /3w/wz.cz/b/blogcz/admin/vypis_souboru.php on line 13

Warning: filemtime(): Stat failed for error.gif (errno=2 - No such file or directory) in /3w/wz.cz/b/blogcz/admin/vypis_souboru.php on line 14


a to píše u všech souborů
Joker
Profil
hrac:
No prosím, hned je to jasnější: Soubor nenalezen.

Problém je v tom, že cesta k souboru není $file, ale $dir."/".$file - možná bez toho lomítka uprostřed, podle toho, jestli v $dir je název adresáře s lomítkem nebo bez.
hrac
Profil *
hrac:
No prosím, hned je to jasnější: Soubor nenalezen.

Problém je v tom, že cesta k souboru není $file, ale $dir."/".$file - možná bez toho lomítka uprostřed, podle toho, jestli v $dir je název adresáře s lomítkem nebo bez.

No prosímtě teď sem tě nepochopil mohl bys mi ten kód opravit prosím :)
hrac
Profil *
prosím nevíte jak to myslel já sem něco skoušel ale nevyšlo mi to :(
Alphard
Profil
Myslel to tak, že např. na řádku
  $velikost[$i]=filesize ($file);

předkládáte funkci filesize název souboru, ale už ne celou cestu k němu.
Zkuste:
 $velikost[$i]=filesize ((substr($dir, -1)=="/"?$dir:$dir."/").$file);
hrac
Profil *
díky to mi jde ale nejde to další prosím jak mám udělat i to
$soubor[$i]="$file";
$zmena[$i]=date("H:i:s d.m.Y ",filemtime($file));
Alphard
Profil
hrac:
Úplně stejně, trochu vlastní iniciativy (stačí to zkopírovat).
hrac
Profil *
tak už jen to
$soubor[$i]="$file";
hrac
Profil *
tkj skusím nějak tak stejně :-D
hrac
Profil *
jo ale vážně nevím jak udělat aby se mi zobrazilo jméno toho souboru a odkaz na něho byl i celí a ne jen to jméno :( jakože jméno je file.php a odkaz by byl slozka/file.php
Alphard
Profil
Tak to uděláme jinak:
while (false!==($file = readdir($handle))) 
{ 
    $cesta = (substr($dir, -1)=="/"?$dir:$dir."/").$file;
    if ($file!="."&&$file!=".."&&!is_dir($cesta)&&$file!=$nas_sou) 
    { 
        $soubor[$i]=$file;


V $file máte název a v $cesta celou cestu, stačí?
hrac
Profil *
udělal sem to tak jak ste napsal a píše to
Parse error: parse error in /3w/wz.cz/b/blogcz/admin/vypis_souboru.php on line 10

a to je toto
 $cesta = (substr($dir, -1)=="/"?$dir:$dir."/").$file);

celí kód je
<?php
if($dir=="")
$dir="./";
$nas_sou="admin.php";
$handle=opendir("$dir"); 
$i=0;
$j=0;
while (false!==($file = readdir($handle))) 
{ 
    $cesta = (substr($dir, -1)=="/"?$dir:$dir."/").$file;
    if ($file!="."&&$file!=".."&&!is_dir($cesta)&&$file!=$nas_sou) 
    { 
        $soubor[$i]=$file;
        $souboro[$i]=$cesta;
        $velikost[$i]=filesize ($cesta);
        $zmena[$i]=date("H:i:s d.m.Y ",filemtime($cesta);
        $i++;
    } 
    if ($file != "." && is_dir($file))
    {
       $adresar[$j]="$file";
       $adresaro[$j]="$cesta";
       $j++;
    }
}
closedir($handle); 
function vypis($s,$v,$z,$o)
{
       echo "<table>\n";
       for($i=0;$i<count($s);$i++)
       {
        echo "<tr><td width=150>";
        echo '<a href="'.$o[$i].'">'.$s[$i].'</a>';
        echo "</td><td width=60>$v[$i]";
        echo "</td><td>$z[$i]";
        echo "</td></tr>\n";
       }
       echo "</table>\n";
}
function vypis_slozek($s,$v,$z,$o)
{
       echo "<table>\n";
       for($i=0;$i<count($s);$i++)
       {
        echo "<tr><td width=150>";
        echo '<a href="?dir='.$o[$i].'">'.$s[$i].'</a>';
        echo "</td><td width=60>$v[$i]";
        echo "</td><td>$z[$i]";
        echo "</td></tr>\n";
       }
       echo "</table>\n";
}
echo "Adresáře:\n";
vypis_slozek($adresar,"","",$adresaro);
echo "Soubory:\n";
vypis($soubor,$velikost,$zmena,$souboro);
?>
Alphard
Profil
Ta poslední závorka byla navíc, opravil jsem váš kód [#14].
hrac
Profil *
:-D teď zase to píše toto
Parse error: parse error in /3w/wz.cz/b/blogcz/admin/vypis_souboru.php on line 16

a to je toto
$zmena[$i]=date("H:i:s d.m.Y ",filemtime($cesta);
Alphard
Profil
$zmena[$i]=date("H:i:s d.m.Y ",filemtime($cesta));


Tady zase jedna závorka chybí. Skutečně není snadné psát tady na diskusi kódy bez obarvení a dalších funkcí IDE. Ale parse errory by měli být tazatelé schopní opravit sami. Ušetřil byste si skoro hodinu, než jsem se vrátil k PC.
hrac
Profil *
jj už dávno sem to opravil :-D jenom my to zlobí koukněte sám http://www.blogcz.wz.cz/admin/vypis_souboru.php?dir=./
když kliknete na podřazenou složku pořád to připisuje k tomu dir takže když je dir=../ tak když kliknu na složku dir=../slozka/ a když kliknu zase ne ../ tak dir=../slozka/../
Alphard
Profil
Buď si to musíte sám parsovat, nebo by možná šlo použít realpath() nebo něco příbuzného. Z absolutní adresy se pak už dá docela lehce udělat relativní. Ale tenhle kód už se mi psát nechce :-).
hrac
Profil *
:-D nevadí ale moc díky aspoň tak

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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