| Autor | Zpráva | ||
|---|---|---|---|
| Herbert Profil * |
#1 · Zasláno: 12. 7. 2012, 12:21:30
Zdravím,
mam několik souborů ve složce generovaných pomocí PHP a na nich mam daný onclick event na otevření nového okna a zobrazení obsahu těchto textových souborů (pomocí PHP include). Jenže nevím, jak do include napsat cestu k souboru (cestu do složky vím). Jde nějakým způsobem získat název toho souboru na který je přidán onclick event? Díky |
||
| Str4wberry Profil |
#2 · Zasláno: 12. 7. 2012, 12:25:40
Zajisti to tak, že po kliknutí na soubor se otevře adresa ve stylu „
zobrazeni-souboru.php?soubor=slozka/soubor.txt“. Soubor „zobrazeni-souboru.php“ potom jen zajistí přečtení souboru z umístění slozka/soubor.txt (samozřejmě po ověření platnosti adresy).
|
||
| Herbert Profil * |
#3 · Zasláno: 12. 7. 2012, 12:34:24
Asi jste mě nepochopil...
Mě jde o to, jak dostat do proměný to "soubor.txt", jestliže event onclick mam nastavený v PHP na řetězci, který generuje několik souborů, podle toho v jaké jsem složce. Například soubor.txt, soubor1.lit, soubor2.def, soubor3.ext. |
||
| Str4wberry Profil |
#4 · Zasláno: 12. 7. 2012, 12:55:09
Ano, pořádně jsem to nepochopil stále.
Můžeš ukázat živou ukázku? Nebo pospat, co je cílem udělat, co řešíš za problém? |
||
| Herbert Profil * |
#5 · Zasláno: 12. 7. 2012, 13:03:13
Živou ukázku bohužel ne, dělám to na interním serveru...
<?php
$dir=$_GET["path"];
if (!isset($dir)){$dir=$root;}
$last_char=substr($dir, -1);
if(isset($dir)){
if ($last_char != '/')
{$dir=$dir.'/';}}
$pole=array(); /* deklarujeme prázdné pole pro načítání souborů a složek */
if ($handle = opendir($dir)) {
while (false !== ($entry = readdir($handle))) /* procházení adresáře */
{
if ($entry != "." && $entry != "..") /* odstranění . a .. */
if (is_dir($dir.$entry)==true and is_readable($dir.$entry)) /* je to složka a dá se přečíst ? */
{
array_push($pole,"d,".$entry.",".@date ('d.m.Y H:i:s', filemtime($dir.$entry)).",<DIR>");
/* přidej d na začátek, pak název a datum */
} elseif (is_file($dir.$entry)==true) /* je to soubor ? */
{
$filesize=filesize($dir.$entry);
if ($filesize < 1024) $b=$filesize.'B';
elseif ($filesize < 1048576) $b=round ($filesize / 1024, 2).'KB';
elseif ($filesize < 1073741824) $b=round ($filesize / 1048576, 2).'MB';
elseif ($filesize < 1099511627776) $b=round ($filesize / 1073741824, 3).'GB';
else $b=round ($filesize / 1099511627776, 3).'TB'; /* převod B na KB/MB/GB/TB */
if (substr($dir.$entry,-4,1)=="." and stripos($extensions,substr($dir.$entry,-3,3))) /* zobrazuj jen přípony, které jsou v $extensions (definované v externím souboru) */
array_push($pole,"f,".$entry.",".@date ('d.m.Y H:i:s', filemtime($dir.$entry)).",".$b); /*přidej f na začátek, pak název, datum a velikost*/
}
}
closedir($handle); /* až projdem vše (while již končí, uzavři čtení adresáře */
/* pole nyní obsahuje několik řetězců, každý odpovídá jedné složce či souboru*/
}
sort($pole); /* setřídí pole dle abecedy - protože řetzce pro složky začínají "d", jsou jako první */
echo "<table class='tabulka'>";
echo "<caption class='title cesta'><div class='titleover'>Nacházíte se ve složce $dir</div></caption>
<tr class='title'>
<th class='name'>Název</th>
<th class='size'>Velikost</th>
<th class='lastchange'>Poslední změna</th>
</tr>"; /* nadpis a záhlaví tabulky */
$up = preg_replace( '/[^\/]+\/*$/','',$dir );
if ($dir!==$root)
{
echo "<tr>
<td>
<img src='css/back_icon.png'><a href='?menu_id=".$menu_id."&submenu_id=".$submenu_id."&path=$up' class='vys'>[ . . ]</a>
</td>
<td> </td><td> </td>
</tr>";
}
foreach ($pole as $radek) /* procházíme znovu pole od začátku pro každý $řádek z $pole */
{
$polozka=explode(",",$radek); /* každý řádek rozdělí na položky podle oddělovače (čárky) */
/* položka[0] je první částí - obsahuje buď "d" nebo "f" */
/* polozka[1] je druhou částí, obsahuje název souboru či složky */
/* položka[2] obsahuje datum a čas modifikace souboru */
/* položka[3] obsahuje velikost souboru nebo údaj o tom, že je to adresář */
echo "<tr><td class='bunka'>"; /* začíná řádek tabulky */
if ($polozka[0]=="d") /* pokud je to složka, musí to být červený odkaz */
{
echo "<div class='dirover'><img src='css/folder_icon.png'>";
echo "<a class='directory' href='?menu_id=".$menu_id."&submenu_id=".$submenu_id."&path=".$dir.$polozka[1]."/'>";
echo $polozka[1];
echo "</a></div>";
}
else /* pokud není složka, je to soubor, pak modrý text */
{
echo "<div class='fileover'><img src='css/file_icon.png'><a class='file' onclick='odkaz()'>";
echo $polozka[1];
echo "</a></div>";
}
echo "</td><td class='bunka'>".$polozka[3]."</td>";
echo "<td class='bunka'>".$polozka[2]."</td></tr>"; /* v dalším sloupci je datum a čas */
}
echo "</table>";
?>a právě, když dám do includu jen $polozka[1], tak mi to tam nahraje všechny soubory v tý složce... |
||
| Keeehi Profil |
#6 · Zasláno: 12. 7. 2012, 13:26:30
A javascriptovou funkci odkaz si máme vycucat z prstu?
isset($dir) bude vždy true, protože $dir je na 2. řádku definované.
Proč to spojuješ na řádcích 15 a 26 do řetězce, aby jsi to následně na řádku 52 rozdělil do pole? Vždyť to můžeš ukládat rovnou do pole. Nikde tu include není. |
||
|
Časová prodleva: 14 let
|
|||
0