Autor | Zpráva | ||
---|---|---|---|
tomak Profil * |
#1 · Zasláno: 14. 5. 2012, 18:41:30
Dobrý den,
potřebuji menší radu ohledně přepsání adresy pomocí mod_rewrite. Prostudoval jsem asi 20 článků zabývající se touto problematikou, ale zatím jsem to úplně nepochopil. Proto prosím o radu. Na webu mám odkazy typu: neco.cz/index.php neco.cz/index.php?sekce=sekce1 neco.cz/index.php?sekce=sekce1&clanek=clanek1 A chtěl bych to přepsat jako neco.cz/hlavni-strana.html neco.cz/nazev-sekce/ neco.cz/nazev-sekce/nazev-clanku.html Jak by vypadalo? Děkuji opravdu moc za rady. |
||
Davex Profil |
#2 · Zasláno: 14. 5. 2012, 20:16:21
Adresu předáš PHP skriptu, kde si jí rozložíš a převedeš podle potřeby - Řešení některých častějších problémů (FAQ) » Univerzální obecné pravidlo.
|
||
Taps Profil |
#3 · Zasláno: 15. 5. 2012, 07:02:35
tomak:
doporučuji http://mike.treba.cz/mod_rewrite-a-hezke-url-dil-ii/ |
||
tomak Profil * |
#4 · Zasláno: 15. 5. 2012, 16:05:37
Jestli to tedy dobře chápu, tak když vložím do .htaccess tohle:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/?$ ?parametr=$1 a v index.php budu mít tohle: <?php if($_GET["parametr"] == NULL){ // zde bude kód pro index } else{ $dotaz="SELECT * FROM clanky WHERE url = " . intval($_GET["parametr"]) . ""; $vysledek = MySQL_Query($dotaz); while ($zaznam = MySQL_Fetch_Array($vysledek)){ $textclanku=$zaznam["textclanku"]; echo "<p>".$textclanku."</p>"; } $dotaz="SELECT * FROM sekce WHERE url = " . intval($_GET["parametr"]) . ""; $vysledek = MySQL_Query($dotaz); while ($zaznam = MySQL_Fetch_Array($vysledek)){ $idsekce=$zaznam["id"]; $nazevsekce=$zaznam["nazevsekce"]; echo "<h1>".$nazevsekce."</h1>"; //dalsi dotaz pro zobrazeni clanku v sekci } } ?> Chápu to správně? |
||
Davex Profil |
#5 · Zasláno: 15. 5. 2012, 19:08:11
V podstatě ano, ale konkrétně v této ukázce se článek hledá podle čísla na začátku adresy, což je asi špatně.
|
||
tomak Profil * |
#6 · Zasláno: 15. 5. 2012, 19:14:17
Co takhle?:)
$url = $_GET["page"]; $dotaz="SELECT * FROM clanky WHERE url = \"".$url."\""; |
||
Kajman Profil |
#7 · Zasláno: 15. 5. 2012, 19:22:22
Takhle je to náchylné na sql injection. Pro stringy použijte mysql_real_escape_string. Místo while zkuste využít if a na konci nezapomeňte na návratový kód 404 a chybovou zprávu pro případ neúspěsného nalezení.
|
||
tomak Profil * |
#8 · Zasláno: 15. 5. 2012, 19:38:24
Co takhle?
$url = mysql_real_escape_string($_GET["page"]); if ($dbclanky = MySQL_Fetch_Array(MySQL_Query("SELECT * FROM clanky WHERE url = \"".$url."\""))){ $clanky_clanek=$dbclanky["clanek"]; echo "<p>".$clanky_clanek."</p>"; } elseif ($dbsekce = MySQL_Fetch_Array(MySQL_Query("SELECT * FROM menu WHERE url = \"".$url."\""))){ $idsekce=$dbsekce["id"]; $nazevsekce=$dbsekce["nazev"]; echo "<h1>".$nazevsekce."</h1>"; //dalsi dotaz pro zobrazeni clanku v sekci } else { echo "nebyla nalezena zadna shoda!"; } |
||
Časová prodleva: 12 let
|
0