| 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=$1a 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: 14 let
|
|||
0