Autor Zpráva
Sobky
Profil
Zdravím, potreboval by som pomoc. Viem ako to Get funguje ale ten link potom vyzerá zvláštne link.sk/?page=ahoj
Je možné to nejako zmeniť na napr, link.sk/ahoj
V .htaccess? Keďže súbory s .php dokáže upraviť tak by mohlo aj toto nie?
Taps
Profil
Sobky:
ano, možné to je, viz Řešení některých častějších problémů (FAQ) » Univerzální obecné pravidlo
Sobky
Profil
Taps:
Nejako tam tomu nechápem...
Taps
Profil
Sobky:
do souboru .htaccess zadáš
RewriteEngine On
#pokud je to zanorene v nejakem adresari, uvedte ho za /
RewriteBase /
#ignoruj vsechny opravdove adresare
RewriteCond %{REQUEST_FILENAME} !-d
#ignoruj vsechy opravdove soubory (php skripty, obrazky, styly)
RewriteCond %{REQUEST_FILENAME} !-f
#vsechno ostatni necha vygenerovat index.php (ten se musi rozhodnout podle promenne url, zda stranka existuje a jaky ma mit obsah)
RewriteRule ^(.*)$ index.php?page=$1 [QSA,L]
a pak upravíš odkaz na
<a href="neco">neco</a>
Sobky
Profil
Aháá, super už to ide :) Ďakujem za pomoc.


A ešte predsa niečo. Ono to teraz nerozozná že danná stránka neexistuje? Lebo ja by som potom aj chcel že ked niekto napíše link.sk/blabla tak vyhodí error že stránka neexistuje. A pri tomto to hodí na index
Fisir
Profil
Reaguji na Sobkyho:
Všechny požadavky (vyjma těch na soubory, které reálně existují), jsou přepsány na index.php a jako parametr page je uvedena požadovaná URL. Co se s ní dále bude dělat (a tedy ošetření případů, kdy stránka neexistuje) má na starosti index.php.
Joker
Profil
Sobky:
Ono to teraz nerozozná že danná stránka neexistuje?
Všechno se přesměruje na index.php a ten existuje.
Co se s tím udělá dál je záležitost toho index.php.
petr 6
Profil
Sobky:
Ono to teraz nerozozná že danná stránka neexistuje?
Predtim to taky nerozeznalo, ze stranka link.sk/?page=blabla neexistuje.
V obou pripadech volas index.php, tudiz to musis resit v index.php
Sobky
Profil
A ako to mám potom docieliť? Aby index rozornal že tá stránka neexistuje?
juriad
Profil
Sobky:
To přece víš ty, zda stránka existuje. Jak se liší stránka index.php?page=ahoj od index.php?page=nazdar?
Když stránka neexistuje, pošleš hlavičku 404 a ukončíš skript.
Corwin
Profil
Sobky:
A ako to mám potom docieliť? Aby index rozornal že tá stránka neexistuje?

tady záleží na tom, jakou architekturou máš stránky řešené. include podle GET[page] => file_exists na souboru. soubor neexistuje => neexistuje stránka, načteš 404 šablonu a pošleš 404 hlavičku. výběr z dababáze podle GET[page] => neexistuje záznam v db => neexistuje stránka.
Joker
Profil
Sobky:
Úplně striktně řečeno se nikdy nestane, že stránka neexistuje. Všechno obsluhuje index.php, který existuje. Nicméně vrací různý obsah na základě parametrů adresy.

To jen pro lepší pochopení, že místo neexistující stránky se teď řeší nesmyslná hodnota parametru (nebo kombinace hodnot parametrů).

Ten index.php na základě parametrů nějak určí, jakou stránku zobrazí. Logicky musí umět i určit, že pro dané parametry žádnou stránku nemá a v tom případě vrátí chybovou stránku s kódem 404.
Sobky
Profil
Dalo by sa to troško podrobnejšie z tej databázy vysveliť?
Tomáš123
Profil
Sobky:
Do databázy uložíš obsah, ktorý chceš zobraziť užívateľovi (články, štatistiky, tabuľky, hocičo) a v inom stĺpci ho pomenuješ. Ak na stránku potom prepojíš (napríklad index.php?page=clanok), súbor index.php sa napojí do databázy a prehľadá stĺpce, v ktorých sa nachádza pomenovanie článku. Ak pomenovanie nájde, zobrazí obsah uložený v inom stĺpci, v opačnom prípade zistí, že požadovaný obsah neexistuje a je na tebe, čo sa rozhodneš v takejto situácii robiť. Najčastejšie sa vypisuje chyba 404.

Teoreticky je to s databázou jednoduchšie lebo je pripravená na veľké množstvo obsahu. Môžeš sa ale vybrať aj cestou súborov. V tomto prípade si vytvoríš v kmeňovom adresári priečinok (aby sa to neplietlo s hlavnými súbormi), v ktorom bude obsah. Úlohu pomenovania bude niesť názov súboru. Pomocou funkcie file_exists() overíš, či sa parameter v adrese zhoduje s názvom nejakého súboru, ak áno, načítaš ho, ak nie, 404.

Databáza má niekoľko výhod, ako napríklad jednoduchosť vkladania titulku stránky (samozrejme, dá sa to aj druhým spôsobom, ale je to o niečo zdĺhavejšie).
Joker
Profil
Sobky:

Možná lepší než když se my domýšlíme, jak asi plánujete ty stránky zobrazovat, by bylo lepší to udělat obráceně: Pro začátek, jak plánujete ty stránky v index.php zobrazovat?
Sobky
Profil
Takto mám to že to vypíše orčený článok, al eneviem kde vložiť to, že ak nieje...
<?php
    $page = $_GET['page']; 
    $webquery = "SELECT * FROM webpage WHERE url ='". mysqli_real_escape_string($webmysqli, $page)."'";
    $webresult = mysqli_query($webmysqli, $webquery);
        while($webpage = mysqli_fetch_array($webresult)) {
            echo('<div class="new">');
            echo('<div class="title-headname"><a>'.$webpage['headname'].'</a>');
            echo('<a class="title-headname-postedby">Posted by: '.$webpage['author'].' ');
            echo date('d m Y', strtotime($webpage['date']));
            echo('</a></div>');
            echo('<div class="title-core"><a>'.$webpage['content'].'</a>');
            if(!empty($webpage['image'])){
                echo '<img class="title-image" src="'.$webpage['image'].'">';
            }
            echo('</div>');
            echo('</div>');
}
?>
Joker
Profil
Sobky:
Proč tam je while, kolik těch stránek pro jednu URL v databázi může být?

Spíš bych očekával if a v tom případě by se nenalezení stránky řešilo v části else.

Ale jestli tam ten while cyklus má nějaký smysl, dá se třeba definovat $found = false; před cyklem a uvnitř cyklu nastavit $found = true; a za cyklem by byl blok if (!$found) a v něm ten kód pro chybovou stránku.
Sobky
Profil
a potom ako by to vyzeralo s if?


mohlo yb to vyzerať takto?? A čo potom dať do toho else?
$page = $_GET['page']; 
    $webquery = "SELECT * FROM webpage WHERE url ='". mysqli_real_escape_string($webmysqli, $page)."' ORDER BY date DESC";
    $webresult = mysqli_query($webmysqli, $webquery);
    $webpage = mysqli_fetch_array($webresult);
    if($webpage['url'] == $page){
        echo('<div class="new">');
        echo('<div class="title-headname"><a>'.$webpage['headname'].'</a>');
        echo('<a class="title-headname-postedby">Posted by: '.$webpage['author'].' ');
        echo date('d.m. Y', strtotime($webpage['date']));
        echo('</a></div>');
        echo('<div class="title-core"><a>'.$webpage['content'].'</a>');
        if(!empty($webpage['image'])){
           echo '<img class="title-image" src="'.$webpage['image'].'">';
        }
        echo('</div>');
        echo('</div>');
    }else{
    }
Kajman
Profil
<?php
    $page = $_GET['page']; 
    $webquery = "SELECT * FROM webpage WHERE url ='". mysqli_real_escape_string($webmysqli, $page)."'";
    $webresult = mysqli_query($webmysqli, $webquery);
    if($webpage = mysqli_fetch_array($webresult)) {
            echo('<div class="new">');
            echo('<div class="title-headname"><a>'.$webpage['headname'].'</a>');
            echo('<a class="title-headname-postedby">Posted by: '.$webpage['author'].' ');
            echo date('d m Y', strtotime($webpage['date']));
            echo('</a></div>');
            echo('<div class="title-core"><a>'.$webpage['content'].'</a>');
            if(!empty($webpage['image'])){
                echo '<img class="title-image" src="'.$webpage['image'].'">';
            }
            echo('</div>');
            echo('</div>');
    }
    else
    {
            header("HTTP/1.0 404 Not Found");
            die('Page Not Found');
    }
    
?>
Sobky
Profil
Ahá takto, ďakujem vám, presne takto som to potreboval :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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