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 |
#2 · Zasláno: 8. 7. 2014, 18:23:38
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 * |
#3 · Zasláno: 8. 7. 2014, 18:39:08
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); $_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 |
#5 · Zasláno: 8. 7. 2014, 19:36:21
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']); 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 |
#6 · Zasláno: 8. 7. 2014, 19:41:20
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 |
#7 · Zasláno: 8. 7. 2014, 20:25:49
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 * |
#8 · Zasláno: 8. 7. 2014, 20:42:32
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 |
#9 · Zasláno: 8. 7. 2014, 20:52:54
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 |
#10 · Zasláno: 8. 7. 2014, 20:53:48
Ste na mňa niaky rýchli :D Opakujem s PHP nie som veľmi pokročilí :D
|
||
Micruss Profil |
#11 · Zasláno: 8. 7. 2014, 20:55:26
Kubo2:
a nevypadá nejlépe www.url.cz/clanek/nazev-clanku ? :D |
||
Dominik Gavril Profil |
#12 · Zasláno: 8. 7. 2014, 20:57:11
Jo to by bolo najlepšie :)
|
||
Kubo2 Profil |
#13 · Zasláno: 8. 7. 2014, 21:00:58
[#11] Micruss:
Tiež som to chcel spomenúť, ale bol som zvedavý, kto s tým príde. :-) |
||
CZghost Profil |
#14 · Zasláno: 9. 7. 2014, 12:10:28
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). |
||
Časová prodleva: 10 let
|
0