Autor Zpráva
Dominik Gavril
Profil
Zdravím,

Mám taký menší problém :) Napísal som si script ktorý píše články na web tinyMCE myslím že sa to volá uspešne mi to odošle do databáze a tu som sa zasekol. Potrebuje aby každý článok mal url podľa toho akú som zadal tak napríklad do inputu zadám tomas se hraje a url bude xxxx.sk/clanok.php?tomas-se-hraje.
Kubo2
Profil
Dominik Gavril:

1\ Do inputu zadáš URL vytváranej stránky v akej podobe?
2\ V skripte clanok.php si získaš text, ktorý je v adrese za otáznikom, zo superglobálnej premennej $_SERVER['QUERY_STRING'], ak sa ešte dobre pamätám (robím teraz máličko viac v Pythone).
Petr_
Profil *
Když dokážeš nahrát do DB obsah textarea s textem článku, tak snad není problém do dalšího sloupce tabulky zároveň uložit i název pro URL z jiného inputu, ne? V čem konkrétně máš problém? Pokud ti jde o ošetření řetezce pro jeho použití v URL }nahrayen9 v3eho krom2 p9smen a 49slic poml4kami], tak nejjednodušeji třeba takto:
$url = preg_replace("/[^a-z0-9\-]+/i", "-", $input);
Pak jej můžeš použít i jako identifikátor (který si uložíš do DB) toho článku a z URL (clanok.php?id=tomas-se-hraje) jej získáš z $_GET['id'].
Dominik Gavril
Profil
Tu je code na zápis do databáze

<?php
include 'connect.php';

if (isset($_POST['save'])) {
        $title = $_POST['title'];
        $url = $_POST['url'];
        $description = $_POST['description'];
        $content = $_POST['obsah'];


    mysqli_query($connect, "INSERT INTO articles (article_title, article_content, article_url, article_description) VALUES ('$title', '$content', '$url', '$description')" );
    }
    
 ?>

Rovno z toho ide vyčítať aj polia len neviem ako to spraviť tak že na danej url sa mi zobrazí obsah vyselectovaný z tabuľky ako to na tu url uložiť

EDIT: Skúsim vám niako vysvetliť zámer o čo sa pokúšam snažím sa spraviť to že ak napíšem článok a uložím ho tak podľa toho aku som si zdal url na takej sa mi zobrazi samozrejme sssss.sk/clanky.php?url
CZghost
Profil
Dominik Gavril:
Nechci zpochybňovat tvé programátorské nadání, někteří tu vychvalovali tvé zkušenosti s WordPressem, ale všiml jsem si, že bych mohl SQL injekcí vymazat obsah databáze nebo její části. Raději bych zkusil posty obalit escapovací funkcí:
$title       = mysqli_real_escape_string($_POST['title']);
$url         = mysqli_real_escape_string($_POST['url']);
$description = mysqli_real_escape_string($_POST['description']);
$content     = mysqli_real_escape_string($_POST['obsah']);
Takhle to vidím já. Nyní by stačilo zadat do pole decription toto: ') DROP DATABASE ('jmeno-databaze

A výsledný SQL dotaz pak vypadá takto:
INSERT INTO articles (article_title, article_content, article_url, article_description) VALUES ('titulek', 'obsah', 'url', '') DROP DATABASE ('jmeno-databaze')

To už je trochu nebezpečné, si myslím :-)
Dominik Gavril
Profil
Zabezpečenie som ešte neriešil a je dosť možné že si ma s niekym pletieš :) s WP som skúsenosti ešte nenabral :) PHP se jenom učím :)
Kubo2
Profil
Dominik Gavril:
Prečo nepoužiješ SQL dotaz SELECT?
Najjednoduchšia verzia súboru clanky.php:
<?php

require("connect.php");

if(!empty($_SERVER['QUERY_STRING'])) {
    $url = mysqli_real_escape_string($_SERVER['QUERY_STRING']);
    $res = mysqli_query($connect, "select article_title, article_content, article_description from articles where article_url = '$url'");

    if(mysqli_num_rows($res) === 1) {
        $article = mysqli_fetch_assoc($res);
        // logika pre výpis článku
        // štruktúra poľa $article je nasledovná:
        // array(3) {
        //     [article_title] => "nadpis článku"
        //     [article_content] => "telo/text článku"
        //     [article_description] => "stručné zhrnutie článku"
        // }
    } else {
        // logika pre stránku 404
    }
} else {
    // nejaká logika listovania článkov
}
Petr_
Profil *
Kubo2:
Nepřijde mi moc vhodné používat celý $_SERVER['QUERY_STRING'] pro tento účel. Když už URL s query stringem, tak rovnou přiřazení ?parametr=hodnota. Použít název parametru rovnou jako hodnotu mi osobně nepřijde moc vhodné a do budoucna trochu omezující. Samozřejmě si to pak může parsovat jak chce a přidat tam tak i další parametry oddělené nějakým separátorem, ale... je to takové divné.
Kubo2
Profil
Petr:
Ja som len nasimuloval chovanie popísané Dominikom Gavrilom. Ale je treba si priznať, že adresa /clanky.php?url-clanku asi vyzerá lepšie než /clanky.php?clanok=url-clanku.
Dominik Gavril
Profil
Ste na mňa niaky rýchli :D Opakujem s PHP nie som veľmi pokročilí :D
Micruss
Profil
Kubo2:
a nevypadá nejlépe www.url.cz/clanek/nazev-clanku ? :D
Dominik Gavril
Profil
Jo to by bolo najlepšie :)
Kubo2
Profil
[#11] Micruss:
Tiež som to chcel spomenúť, ale bol som zvedavý, kto s tým príde. :-)
CZghost
Profil
Micruss:
Tvůj komentář má ode mne palec nahoru :-) Ještě by bylo možné to zkrátit: www.url.cz/nazev-clanku (nebo www.url.cz/kod-nazvu-clanku kde by se název článku zakódoval nějakým oboustranným hash algoritmem, klidně i vlastním).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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