Autor | Zpráva | ||
---|---|---|---|
Tomáš123 Profil |
#1 · Zasláno: 22. 11. 2014, 18:22:50
Pekný podvečer,
Potreboval by som aktualizovať články v navigácii. Malo by ísť o niečo ako systém noviniek. Pokúsim sa vysvetliť o čo mi ide: Namiesto nutnosti pridania odkazu na dokončený článok manuálne, by som chcel, aby sa po pribudnutí súboru v kategórii a znovu načítaní stránky načítal sám a ako názov v odkaze sa uviedol údaj v priloženom textovom súbore s názvom rovnakým ako je názov nového súboru. Štruktúra súborov je podobná tejto: 1. html 2. pg1.php 2. pg1.txt 2. pg2.php 2. pg2.txt 2. html.php (ak nie je špecifikovaný článok) 1. css 1. index.php (skript) 1. default.php (domovská stránka) 1. error.php (chybové hlásenie o neexistujúcej stránke) Odkaz na článok by v tomto prípade mal vyzerať nejako takto: <a href="index.php?cat=html&page=2">Názov novo pribudnutého článku</a> Vedeli by ste mi pre začiatok pomôcť odkazmi na funkcie, ktoré na niečo také budú potrebné? Hlavne, ako zistiť, či pribudol v danom adresári pribudol nejaký súbor? Je potrebné ukladať stavy a počty súborov do iného súboru, alebo sa to dá aj pohodlnejšie? Ďakujem vopred veľmi pekne za odpovede |
||
Hando Profil |
#2 · Zasláno: 22. 11. 2014, 18:30:47
Proč, proboha, tak složitě?
Co ti brání v použití databáze? Uložit si článek, název, kategorie a všechno potřebné (včetně třeba rozlišení dokončený/nedokončený článek) a následně si to pohodlně vydolovat dotazem na databázi, to je asi nejpohodlnější řešení. Nebo k tomuhle řešení máš nějaký důvod? |
||
Tomáš123 Profil |
Hando:
„Nebo k tomuhle řešení máš nějaký důvod?“ Neviem pracovať s databázou. Už mi príde trápne si stále stáť za názorom, že sa chcem najprv naučiť PHP a až potom začať s MySQL. Nejedno mnou vytvorené vlákno už bolo kritizované za zbytočnú zložitosť. Poznáte nejaký kvalitný zdroj na tému ako spustiť MySQL? Posledne som to vzdal, kvôli nemožnosti pripojenia sa do PhpMyAdminu. |
||
Fisir Profil |
#4 · Zasláno: 22. 11. 2014, 18:51:00
Reaguji na Tomáše123:
Stáhni si nějaký balíček WWW serveru a MySQL (VAMP, XAMPP, Vertrigo, …). |
||
lionel messi Profil |
Tomáš123:
„Neviem pracovať s databázou.“ Chápem, úplné začiatky sú fakt náročné, ale oplatí sa to, viem o čom hovorím. „Poznáte nejaký kvalitný zdroj na tému ako spustiť MySQL?“ Dobré české zdroje sú na itnetwork.cz: Databáze v PHP pro začátečníky — vysvetľuje, ako v PHP pracovať s MySQL + základy jazyka SQL MySQL databáze krok za krokem — pravdepodobne najpodrobnejší český zdroj o SQL, nevenuje sa práci s db pomocou PHP Čo sa týka anglických zdrojov o SQL, mám dobrú skúsenosť s učebnicami od vydavateľstva O'Reilly (bohužiaľ nepoznám CZ/SK názvy, čítal som anglické originály): Russel Dyer: MySQL in a Nutshell (prehľad funkcii SQL jazyka, nevenuje sa práci s db pomocou PHP) Alan Beaulieu: Learning SQL (veľmi podrobná učebnica SQL jazyka s príkladmi, nevenuje sa práci s db pomocou PHP) Čo sa týka inštalácie ťa dobre nasmeroval Fisir. |
||
Alphard Profil |
#6 · Zasláno: 22. 11. 2014, 19:30:31
Tomáš123:
„Už mi príde trápne si stále stáť za názorom, že sa chcem najprv naučiť PHP a až potom začať s MySQL.“ Jen tak pro informaci, byť je použití databáze v tomto případě nejjednodušší, zkusit si naprogramovat to přes soubory by bylo (pro budoucího programátora) užitečné také. Až se dostanete k tomu, že budete chtít stránkovat apod., bude to už horší, ale současný požadavek vidím cca na 10 řádků kódu. |
||
jenikkozak Profil |
#7 · Zasláno: 22. 11. 2014, 19:31:34
Tomáš123:
Pokud bych z nějakého důvodu nechtěl nebo nemohl využít databázi, uložil bych si údaje o všech souborech do jediného dokumentu, abych při automatickém sestavování menu nemusel prohledávat adresář a číst v něm spoustu .txt souborů. To znamená, že všechny názvy stránek a odkazy na soubory by byly umístěné v jediném souboru, kde by byly oddělené třeba středníkem. |
||
Tomáš123 Profil |
Alphard:
„zkusit si naprogramovat to přes soubory by bylo (pro budoucího programátora) užitečné také.“ Takto som to myslel. Som rád, že sa na to niekto pozerá aj z môjho pohľadu. Viem, že databáza je veľmi užitočná, ale keďže ešte poriadne neovládam ani PHP, nechcem skákať do príliš hlbokej vody. Už som zistil, že programovanie je oveľa iné ako kódovanie, preto by som na to rád pomaly a postupne. „Až se dostanete k tomu, že budete chtít stránkovat apod., bude to už horší, ale současný požadavek vidím cca na 10 řádků kódu.“ Vôbec nemusíme riešiť, čo ešte nie je. Všetky tieto zadania si vytváram sčasti ako praktické skúšky (keďže väčšina odkázaných stránok vyžaduje poznať príkazy a funkcie, mám iba malú šancu splniť to) a sčasti ako naozaj potrebné skripty. Času mám dosť, a rád si vytvorím skript aj na trikrát ak to bude potrebné. Mohli by sme sa teda presunúť k pôvodnej otázke [#1]. Nechcem riešenie, chcem sa potrápiť, vytvoriť si niečo sám a potom riešiť chyby. Dúfam, že pre nikoho nie je môj prístup otravný. jenikkozak: „uložil bych si údaje o všech souborech do jediného dokumentu“ Pomocou funkcií *_dir ?
Teda overovať existenciu adresárov a súborov a ak existujú zapisovať ich do iného súboru? |
||
Alphard Profil |
#9 · Zasláno: 23. 11. 2014, 11:55:47
V náznaku
$files = ['a.php', 'b.php', 'c.php']; // tohle pole získáte třeba funkcí glob() foreach ($files as $file) { $headerFile = str_replace('.php', '.txt', $file); $header = file_exists($headerFile) ? file_get_contents($headerFile) : 'Neznamy titulek'; echo '<a href="'.$file.'">'.$header.'</a><br>'.PHP_EOL; } Ještě sem hodím verzi seskupující soubory stejného názvu do pole, takový algoritmus se taky často hodí $files = ['a.php', 'b.php', 'a.txt', 'b.txt', 'c.php', 'c.txt']; $menu = []; foreach ($files as $file) { $lastDot = strrpos($file, '.'); $menu[substr($file, 0, $lastDot)][substr($file, $lastDot+1)] = $file; } foreach ($menu as $item) { echo '<a href="'.$item['php'].'">'.$item['txt'].'</a><br>'.PHP_EOL; } jenikkozak zřejmě myslel vytvořit soubor s popisky a.php::O revoluci b.php::Vliv djpw na moderni spolecnost c:php::Hledejme rezervy sami v sobe a pak ho jen vypsat $items = file('headers.txt', FILE_IGNORE_NEW_LINES); foreach ($items as $item) { list($file, $header) = explode('::', $item); echo '<a href="'.$file.'">'.$header.'</a><br>'.PHP_EOL; } |
||
Tomáš123 Profil |
Alphard:
„V náznaku“ Vaše kódy sú priveľmi zložité. Ten ktorý ste napísali v mene jenikakozaka sa mi celkom páči, ale musel by som pridať článok a potom do súboru pridať popis (s mojimi znalosťami si nemôžem veľmi vyberať, ale predsa som to skúsil). Rozmýšľal som, ako to zautomatizovať a napadlo mi vytvárať články priamo na webe. V náznaku: HTML: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Pridávanie článkov</title> </head> <body> <form action="processing.php" method="POST"> <table> <tr> <td align="right"><b>Nadpis článku v odkaze:</b></td> <td><input type="text" name="headline"></td> </tr> <tr> <td align="right"><b>Kategória:</b></td> <td><select name="cat"> <option value="html">HTML</option> <option value="css">CSS</option> <option value="about">O webe</option> </select></td> </tr> <tr> <td></td> <td><textarea name="content"></textarea></td> </tr> <tr> <td></td> <td><input type="submit"></td> </tr> </table> </form> </body> </html> PHP: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Pridávanie článkov</title> </head> <body> <?php if (isset($_POST['headline'], $_POST['cat'], $_POST['content'])) { $headline = $_POST['headline']; $cat = $_POST['cat']; $content = $_POST['content']; $file = "content/data.txt"; $dir = $cat."/".$headline.".txt"; if (!file_exists($dir)) { if ($fp = fopen($dir, 'w')) { fwrite($fp, $content); fclose($fp); echo "<p>Obsah článku bol úspešne zapísaný.</p>"; if ($fp = fopen($file, 'a+')) { $data = $cat."::".$headline .PHP_EOL; fwrite($fp, $data); fclose($fp); echo "<p>Údaje boli úspešne zapísané.</p>"; } else { echo "<p>Nepodarilo sa zapísať údaje o článku.</p>"; } } else { echo "<p>Nepodarilo sa uložiť článok.</p>"; } } else { echo "<p>Súbor s daným názvom už existuje.</p>."; } } else { echo "<p>Ak chcete pridať článok, musíte vyplniť všetky formulárové polia.</p>"; } ?> </body> </html> Informácie o článkoch mi to zapisuje do dvoch súborov. Do jedného kategóriu a nadpis a do druhého samotný obsah z textarey . Takto by sa dal celý proces natoľko vylepšiť, že HTML stránky, by sa generovali zo súborov podľa kategórii a nadpisu článku a obsahu:Odkaz na stránku je napríklad index.php?cat=css&page=float . Skript by prešiel súbory a v prípade, že by našiel zhodu (ako už podotkol jenikkozak, asi by bolo lepšie držať všetko v jednom súbore, no neprišiel som na riešenie), vypísal by sa do pripravenej šablóny (štruktúra, hlavička, menu a päta sa nemení) požadovaný text zo súborov.Pravdepodobne je toto riešenie nad moje sily (na ostrú prevádzku bude potrebná minimálne zabezpečenie registrácie a súborov => všetko vedie ku databázam), ale aj tak by som si to chcel skúsiť na neoficálnô. Bol by som rád, ak by ste naviedli na správnu cestu. Je podľa vás možné vytvoriť niečo podobné s mojimi aktuálnymi vedomosťami? Akým spôsobom oddeliť jednotlivé články ak by boli uložené v jednom súbore (alebo bude lepšie články uložiť akoby boli webové stránky s tým, že vymením príponu za .txt )?
Vopred ďakujem. |
||
Časová prodleva: 5 dní
|
|||
Tomáš123 Profil |
#11 · Zasláno: 29. 11. 2014, 16:57:23
Za tých 5 dní, čo sem nikto neprispel, sa mi podarilo vymyslieť, ako vyššie uvedený problém aspoň sčasti vyriešiť.
Pozrite si živú ukážku stránky a skúste si do niektorej kategórie pridať súbor a následne zobraziť. Ak chcete vidieť súbor, z ktorého budem ťahať údaje na vykreslenie menu, po zobrazení vymeňte názov súboru za reťazec "data.txt". Súbor s týmto názvom sa nachádza v každej kategórii, ktorá disponuje aspoň jedným článkom (vytvorí sa, až keď je potrebný). S výsledkom som celkom spokojný, ale má pár otázok:1) Keďže názov súboru nemôže obsahovať diakritiku, mením ho cez funkciu str_replace() (pozrite kód dole). Síce som videl kód ako z reťazca odstrániť všetky znaky s diakritikou, ale Jan Tvrdík píše, že to s kódovaním UTF-8 fungovať nebude (predposledný ad). Ako teda odstrániť diakritiku z nadpisu článku?
2) Druhý problém sa týka kódovania novo vytvoreného súboru. Diakritika sa nevykresľuje. Aj tuším v čom je problém, ale nenapadá ma elegantnejšie riešenie, ako na začiatok reťazca, ktorý je obsahom súboru natvrdo pridať hlavičku s kódovaním. V budúcnosti budem chcieť obsah súboru vypísať do stránky. Tam by problém nemal pretrvávať, keďže hlavička tam už bude, ale nenapadá mi, ako načítať súbor do vopred pripraveného obsahu. PHP kód vyzerá takto: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Pridávanie článkov</title> </head> <body> <?php if (isset($_POST['headline'], $_POST['cat'], $_POST['content'])) { $headline = ($_POST['headline']); $name = str_replace(" ","-", $_POST['headline']); $cat = $_POST['cat']; $content = $_POST['content']; $path = $cat."/".$name.".php"; if (!file_exists($path)) { if ($fp = fopen($path, 'w')) { if (fwrite($fp, $content)) { echo "<p>Súbor bol úspešne nahraný. Chcete ho <a href=\"".$path."\">zobraziť</a>?</p>"; } else { echo "<p>Do súboru ".$name." sa nepodarilo zapísať obsah.</p>"; } fclose($fp); } $data = $cat."|".$name."|".$headline .PHP_EOL; $file = $cat."/data.txt"; if ($fp = fopen ($file, 'a')) { if (fwrite ($fp, $data)) { echo "<p>Súbor bol úspešne aktualizovaný.</p>"; } else { echo "<p>Do súboru sa nepodarilo zapísať údaje.</p>"; } fclose($fp); } else { echo "<p>Súbor sa nepodarilo otvoriť.</p>"; } } else { echo "<p>Súbor s názvom ".$name." už existuje v kategórii ".$cat.".</p>"; } } else { echo "<p>Musite vyplniť všetky formulárové polia.</p>"; } ?> </body> </html> Taktiež budem rád, ak kód skritizujete, ale to len okrajovo. Vopred veľmi pekne ďakujem. |
||
Marschmallow Profil |
#12 · Zasláno: 29. 11. 2014, 19:56:27
Tomáš123:
Mám několik připomínek: - Ošetřuj vstupy pomocí htmlspecialchars, mně se třeba podařilo vytvořit stránku s tímto názvem (XSS útok). - Do textu stránky jsem mohl vložit i PHP kód s echem ( <?php echo "Ahoj"; ?> ) a bez problému se mi vypíše.
- Pokud soubor pojmenuji s diakritikou, s diakritikou se také uloží. Neměl by. - Hlavičku s kódováním je zbytečné vkládat již nyní. Stačí, až se soubor bude vypisovat do stránky, které má už kódování definované. Doufám, že přidávání stránek bude v zaheslované administraci. |
||
Tomáš123 Profil |
Marschmallow:
„(XSS útok)“ Všimol som si, že niekto to tam skúšal JavaScriptom... „Pokud soubor pojmenuji s diakritikou, s diakritikou se také uloží. Neměl by.“ Áno, na to som sa o niečo vyššie pýtal [#11]. „Doufám, že přidávání stránek bude v zaheslované administraci.“ Aj ja. Takúto verziu by som samozrejme nezverejnil, ale administrácia je beh na dlhšiu trať. Je skript zraniteľný aj pri zadaní JavaSkriptu do textarey? Na ňu totiž nemôžem aplikovať funkciu htmlspecialchars() , lebo potrebujem, aby sa mi HTML značky normálne prejavili, nie len vypísali.
Pribudli ďalšie pokusy s JS a som si istý, že v tvojej réžii. Ako dopadli? |
||
Časová prodleva: 3 dny
|
|||
Tomáš123 Profil |
Zdravím, včera sa mi podarilo dokončiť skripty, na vytváranie a editáciu článkov. Ešte ich upravím, aby presnejšie vyhovovali potrebám a celkovo tam upracem, dá sa to aj krajšie. Mám však otázky, ktoré sa týkajú hotového riešenia:
Štruktúra môjho webu bude nasledovná: 1. html 2. nadpis_bez_diakritiky_a_medzier_pre_prvy_clanok.php 2. nadpis_bez_diakritiky_a_medzier_pre_druhy_clanok.php 2. nadpis_bez_diakritiky_a_medzier_pre_treti_clanok.php 2. html.php (ak nie je špecifikovaný článok) 1. css 2. nadpis_bez_diakritiky_a_medzier_pre_prvy_clanok.php 2. nadpis_bez_diakritiky_a_medzier_pre_druhy_clanok.php 2. css.php /*Niekoľko iných kategórii s rovnakou štruktúrou*/ 1. administration 2. add 3. nejaky_skript.php 2. edit 3. nejaky skript.php 1. index.php (skript) 1. default.php (domovská stránka) 1. error.php (chybové hlásenie o neexistujúcej stránke) # 1. Generovanie odkazov, vzhľadom na zvolenú kategóriuChcel by som automaticky generovať navigáciu pri danej stránke. Mala by sa tvoriť, na základe súborov v danej kategórii. Skrátka všetky súbory, ktoré sa nachádzajú v špecifikovanom adresári. Väčším problémom je, že nemôžem použiť názov článku na obidve časti odkazu. Na zobrazenú časť by som potreboval text s diakritikou. Nechcem to ukladať do databázy, riadim sa Alphardom [#6]. Za normálnych okolností, by som v každom adresári vytvoril súbor s informáciami o danej kategórii. Ale vraj je toto riešenie pomalé... Platí to aj v prípade, že bude vopred špecifikovaný adresár? Nikdy nebude generovaný odkaz viesť z jednej kategórie do druhej, čiže skript nebude musieť hľadať kam sa odkazujem. Bude mu stačiť, iba nájsť údaje o požadovanom článku v súbore a zariadiť, aby sa načítal. Keďže ešte nie som tak ďaleko, (stránky nemám napojené na finálnu verziu), možno sú moje predstavy o zbytočnosti jedného súboru mylné. Ak sú vedeli by ste mi poradiť, kam bude najlepšie ukladať informácie o článkoch?# 2. Zamedzenie prístupu do zložiek v Vraj jediným spoľahlivým spôsobom ako ochrániť obsah webu založenom na súboroch je zakázanie prístupu pomocou |
||
Marschmallow Profil |
2.) Zákaz přístupu do dané složky „zvenčí“ jde samozřejmě pomocí .htaccess. Stačí ho vložit do složky, kam chceš zakázat přístup a vložit do něj jediný řádek:
deny from all . Více se dozvíš v tomhle článku.
3.) Tak nepoužívej relativní odkazování (../adresar/soubor.php), ale odkazování absolutní. Tím myslím třeba http://domena.cz/adresar/soubor.php. |
||
Tomáš123 Profil |
#16 · Zasláno: 2. 12. 2014, 18:40:41
Marschmallow:
„tak nepoužívej relativní odkazování“ Nepáči sa mi, že si môže užívateľ prečítať, kam vedie odkaz. Ak by viedol do temnôt administrácie a užívateľ by bol jeden zo skúsenejších, mohol by som to oľutovať. |
||
Marschmallow Profil |
Tomáš123:
„Nepáči sa mi, že si môže užívateľ prečítať, kam vedie odkaz.“ A proč by jako nemohl? Vždyť se to po kliknutí stejně dozví... Nebo jsi spammer :D - ... jen spammeři mají důvod zakrývat skutečný cíl odkazu. |
||
Tomáš123 Profil |
Marschmallow:
„Vždyť se to po kliknutí stejně dozví“ Asi áno, ale nebude mi to fungovať všade. Dané riešenie bude závisieť od domény a ak ju budem meniť, čo s najväčšou pravdepodobnosťou budem, budem musieť aj prepisovať celý skript. Ja chcem vytvoriť univerzálne riešenie. „Nebo jsi spammer“ Myslím, že toto s tým momentálne absolútne nesúvisí. Odkázaný článok je určený na iné použitie. 3. Pokročilé odkazovanieNapadlo mi, pozmeniť štruktúru, aby bol počet úrovní všade rovnaký. V hre sú dve alternatívy (platná môže byť iba jedna z nich): 1. Všetky obsahové adresáre, teda všetko okrem administrácie hodiť do adresáru categories. 2. Všetky podadresáre adresáru administration vyhodiť (add, edit) a nechať ich spolu v adresári administration (mohlo by byť výhodou pri odkazovaní na súbor s informáciami). Ktoré riešenie je lepšie? |
||
Tomáš123 Profil |
Ahoj, rád by som vypísal obsah adresárov, ale akosi to nejde podľa mojich predstáv. Vypísať súbory s príponou
.php z konkrétneho adresára podľa parametru v adrese mi celkom ide, kód vyzerá takto:
<?php $files = scandir($_GET['section']); foreach ($files as $file) { $new_file_name = str_replace ('.php', '', $file); echo "<li><a href=\"index.php?section=".$_GET['section']."&page=".$new_file_name."\">".$file."</a></li>"; } ?> Problém je, že na začiatok výpisu sa mi stále pridajú dve položky s hodnotami " . " a ".. ". Neviem ako sa toho zbaviť.
Čo sa mi však nedarí vôbec je výpis (iba) adresárov na hlavnej úrovni. Skúšal som to pomocou funkcie glob() . Ako teda vypísať všetky adresáre na úrovni? Nepomohol mi ani parameter GLOB_ONLYDIR . Chcel by som do poľa uložiť názvy všetkých adresárov na hlavnej úrovni a podľa nich vytvárať odkazy (pričom využijem, že predvolený súbor, ktorý sa načíta ak nie je vyplnený druhý parameter v adrese má rovnaký názov ako je názov adresára v ktorom sa nachádza). Viete mi nejako pomôcť, čítal som Alphardov článok i dokumentáciu ku daným funkciám.
|
||
Fisir Profil |
#20 · Zasláno: 4. 12. 2014, 20:26:28
Reaguji na Tomáše123:
„na začiatok výpisu sa mi stále pridajú dve položky s hodnotami " . " a ".. ". Neviem ako sa toho zbaviť.“
Podmínkou? foreach ($files as $file){ if($file !== '..' or $file !== '.'){ $new_file_name = str_replace ('.php', '', $file); echo "<li><a href=\"index.php?section=".$_GET['section']."&page=".$new_file_name."\">".$file."</a></li>"; } } . označuje aktivní adresář a .. nadřazený.
|
||
Tomáš123 Profil |
#21 · Zasláno: 4. 12. 2014, 21:21:16
Fisir:
Ďakujem, vedel by si mi ešte napísať, ako vypíšem iba adresáre na hlavnej úrovni? |
||
Fisir Profil |
#22 · Zasláno: 5. 12. 2014, 19:28:12
Reaguji na Tomáše123:
Adresáře? Ne soubory? if(!strpos($file, '/') and is_dir($file)) |
||
Tomáš123 Profil |
#23 · Zasláno: 5. 12. 2014, 21:04:34
Fisir:
„Ne soubory?“ Súbory vhodné pre odkázanie tam vlastne ani nemám [#1]. Nerozumiem uvedenej podmienke (môžeš prosím napísať slovami, o čom tam ide?)... Nepoužívam funkciu glob() , čiže uvedené lomítko sa tam neukáže nikdy, či nie? Alebo práveže mám začať používať glob() ?
|
||
Kubo2 Profil |
Tomáš123:
To s tým lomítkom máš pravdu, stačí použiť samostatne is_dir() (Fisir strpos() zrejme použil kvôli zníženiu časovej náročnosti skriptu a uvedenú skutočnosť prehliadol).
scandir() ti k uvedeným veciam nestačí? Čo som pozeral k nej dokumentáciu, zdá sa, že ti vráti iba odtlačok zadaného adresára, odkiaľ si zanorené adresáre vyfiltruješ už jednoducho.
|
||
Tomáš123 Profil |
Kubo2:
„že ti vráti iba odtlačok zadaného adresára“ Vráti iba názvy súborov v adresári. Potreboval by som získať názvy adresárov na hlavnej úrovni s tým že odkaz <a> by vyzeral nejako takto:
echo "<a href=\"".$nazov_adresara."/".$nazov_adresara.".php\">".$nazov_adresara."</a>"; |
||
Fisir Profil |
#26 · Zasláno: 6. 12. 2014, 15:21:56
Co se týče lomítka, je to blbost, protože jsem si myslel, že
scandir() vypíše i zanořené objekty. Což nedělá. Takže strpos() se z podmínky může vyhodit. Funguje to teda, jak má, nebo ne? Já to totiž moc nechápu. Tomáši123, načrtni prosím ukázkovou stromovou strukturu a označ, co z toho chceš vytáhnout.
|
||
Tomáš123 Profil |
Fisir:
„načrtni prosím ukázkovou stromovou strukturu“ Iste: URL adresa na hlavnej úrovni vyzerá takto: www.mojadomena.sk , za adresou sa nenachádza žiadny parameter. Spolu s indexom sa na tejto úrovni nachádza ešte niekoľko adresárov, viď nasledujúcu štruktúru:
css > súbory css.php html > súbory html.php php > súbory php.php index.php error.php default.php /html/html.php , ale index.php?category=php . Skript v indexe sa stará o to, aby v sa v situácii keď nie je uvedený druhý parameter (plná adresa vyzerá index.php?category=kategoria&page=nazov-stranky ) odkázal na súbor, ktorý má taký istý názov ako je názov kategórie. Ak neexistuje, načíta sa error.php .
Potrebujem vlastne generovať odkazy z hlavnej stránky na podkategórie. |
||
Fisir Profil |
#28 · Zasláno: 6. 12. 2014, 17:39:22
Reaguji na Tomáše123:
Takže takhle ( index.php )?
$items = scandir(__DIR__); foreach($items as $item){ if(($item !== '..' or $item !== '.') and is_dir($item)){ echo('<a href="/?category='.urlencode($item).'">'.htmlspecialchars($item).'</a>'); } } Nebylo by od věci použít databázi. |
||
Marschmallow Profil |
#29 · Zasláno: 6. 12. 2014, 17:47:17
Fisir:
„Nebylo by od věci použít databázi.“ Tomáš123 se zatím chce naučit hlavně práci se soubory. Proto si vytváří také svůj vlastní RS. |
||
Tomáš123 Profil |
#30 · Zasláno: 6. 12. 2014, 18:04:30
Fisir:
Ďakujem, všetko mi funguje. Chcel by som sa opýtať, načo si použil htmlspecialchars() a urlencode() , keď minimálne to prvé nie je potrebné. Veď zložky pomenúvam ja a html značky tam nedávam. Urlencode() je pre mňa nová funkcia, teda som si o nej prečítal v manuáli... Jej úlohou je všetky znaky okrem - a _ previesť na entity, nie. Ako to, že ju tam nepotrebujem?
|
||
Téma pokračuje na další straně.
|
0