Portál AbcLinuxu, 21. května 2024 00:25


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Vložit další komentář
freshmouse avatar 13.3.2008 12:55 freshmouse | skóre: 42 | blog: Bruno Banány
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Odpovědět | Sbalit | Link | Blokovat | Admin
Než já nebo někdo jiný najdu název té funkce, chtěl bych upozornit, že toto řešení (vkládání kódu do obsahu) asi nebude nejlepší...
freshmouse avatar 13.3.2008 12:57 freshmouse | skóre: 42 | blog: Bruno Banány
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Jestli tomu dobře rozumím: ty máš v DB nějakou buňku, která má zhruba tento obsah: "nějaký text nějaký text nějaký text <?php include('něco'); ?>". To opravdu není nejrozumnější.
13.3.2008 13:12 Archman | skóre: 34 | blog: plky
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Věc se má takto: Mám v db řekněme tyto sloupce: Id nadpis text

Po kliknutí na odkaz s ID například 1 se otevře příslušný obsah- Tedy nadpis a text. A právě v tom sloupečku text mám v db vloženo pouze to "include "něco". Jde mi prostě o to, že se do stránky bude vkládat diskuze v PHP a je tedy šumák jestli ji tam vložím tím include, nebo rovnou celý kód. Protože v obou případěch to vyhodí místo zpracovaného kódu ten zápis
freshmouse avatar 13.3.2008 13:37 freshmouse | skóre: 42 | blog: Bruno Banány
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
A co když začneš chtít vkládat jiný soubor s diskuzí? Budeš přepisovat všechny záznamy v DB?
rADOn avatar 13.3.2008 13:43 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Jestli to chapu dobre, reseni by bylo pridat sloupec s oznacenim typu a samotny data potom zpracovavat v zavislosti na typu, nejlepe nejak modularne. Tim nemyslim mit typ "include" ktery by vykonaval externi a potencialne nebezpecny kod ale spis neco ve stylu "diskuse" co by delalo to co xces nebo "redirect" ktery by presmerovavalo na stranku ktera to zaridi poradne. Vecem jako include() nebo eval() nikdy nepodstrkavej primo dynamicky data sic si budujes potencialni bezpecnosti diru zvici macochy.
"2^24 comments ought to be enough for anyone" -- CmdrTaco
Daniel Kvasnička ml. avatar 13.3.2008 18:38 Daniel Kvasnička ml. | skóre: 52 | blog: The Joys and Sorrows of Being an IT Freak | Ostrava
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Mit PHP kod v textu je prasarna ukrutna. Koledujes si o poradnou injektaz. Vytvor si nejaky placeholder a ten pri nacteni stranky zmen za to, co reprezentuje. Napr.:
<p xmlns:archman="http://www.lukas.nazory.cz/"> 
  Lorem ipsum dolor sit amet, consectetur adipisici elit, 
  sed eiusmod tempor incidunt ut labore et dolore magna aliqua. 

  <archman:diskuse />

  Ut enim ad minim veniam, quis nostrud exercitation ullamco 
  laboris nisi ut aliquid ex ea commodi consequat.
</p>
Samozrejme to vubec nemusi byt pres XML. Ale tak je to IMHO nejflexibilnejsi. Nemusis vymyslet zadnou novou syntaxi a mas jistotu, ze vzydcky budou existovat stovky zpusobu a nastroju jak s takovymi daty manipulovat (XSLT, XPath, XQuery). Mam s tim dobrou zkusenost.

A pokud vis, ze v tom textu nebudes mit nic jineho nez ten dynamicky obsah, vykasli se na placeholder a vytvor si sloupec, ktery urci zda je stranka dynamicka ci staticka, napr. tim, ze je bud NULL nebo je v nem identifikator dynamicke komponenty, ktera se ma pouzit (treba zasifrovana cesta k include souboru nebo klic, podle ktereho si to pak dohledas).
FSF: “screw you for not wanting the stuff we produce”, People: “screw you for not producing the stuff we want."
13.3.2008 13:22 maleprase | skóre: 28
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Odpovědět | Sbalit | Link | Blokovat | Admin
co eval ?
13.3.2008 13:27 Archman | skóre: 34 | blog: plky
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Na ten sem taky narazil, ale nepochopil.
freshmouse avatar 13.3.2008 13:35 freshmouse | skóre: 42 | blog: Bruno Banány
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
To je ta funkce, co jsem myslel. Předáš jí řetězec a ona ho bude považovat za běžný kód v PHP (prostě ho provede).
13.3.2008 13:43 hugis | skóre: 7 | blog: hlod | Poprad
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
if(substr($text,0,7) == 'include') eval($text) else echo $text;
13.3.2008 13:52 Baghira
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Ale bacha na to, aby to "include" nedokazal zadat nejaky uzivatel pres formular nebo URL. Jinak by mohlo byt docela veselo...
13.3.2008 14:08 Archman | skóre: 34 | blog: plky
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Takže to vidím spíš na řešení pomocí podmínky.. Když bude ID odpovídat ID sekce Diskuze, otevře se www.odkaz.cz/diskuze.php a je vystaráno
13.3.2008 14:21 Baghira
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
A pokud ma byt kod tehle podminky opravdu ulozeny v databazi, jeste bych to zjednodusil:

header("Location: http://www.odkaz.cz/diskuse.php"); /* Redirect browser */

a nemusi se nic testovat.
13.3.2008 14:40 Archman | skóre: 34 | blog: plky
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
ee. V databázi nebude.. Bude normálně v php scriptu, který generuje menu..
13.3.2008 15:01 Baghira
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Jeste tema k zamysleni: Negenerovat HTML kod pomoci echo...; echo ....; echo...; , ale skladat ho do retezce a ten pak vytisknout najednou. Ma to tu vyhodu, ze kdyz si na spravne misto vrazim HTML komentar <!-- diskuse -->, tak ho pak muzu pomoci str_replace nebo regexpu nahradit kodem one diskuse, ktery si vygeneruji separatne. Obejdu se bez includovani a lepe se to (aspon mne) ladi.
14.3.2008 11:11 LesTR | skóre: 17 | Plzeň
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Nebo pouzit rovnou teleporter, ehm sablonovaci system : ))
Save The World - http://www.worldcommunitygrid.org/ LesTR
14.3.2008 15:38 Archman | skóre: 34 | blog: plky
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
smart?
13.3.2008 13:42 Baghira
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Odpovědět | Sbalit | Link | Blokovat | Admin
pokud se to muze spustit nezavisle na ostatnim kodu, zkusil bych to takhle:

echo file_get_contents('http://.... /diskuse.php);

Ale pripojuji se k nazoru, ze vkladani kodu do databaze je nebezpecny napad.
13.3.2008 15:00 Archman | skóre: 34 | blog: plky
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Odpovědět | Sbalit | Link | Blokovat | Admin
Takže tady je můj script na skládání menu: www.lukas.nazory.cz/menu.txt

Jak do něj zařadit, aby v případě že ID bude 5 hodil jako odkaz "http://www...../diskuze.php"
13.3.2008 15:01 Archman | skóre: 34 | blog: plky
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
13.3.2008 15:12 Baghira
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Je to nevalidni. <a> je inline element, v nem nema <div> jako blokovy element co delat. Patri tam <span> A je docela dobrym zvykem delat menu jako seznam: <ul> <li> <a href=""> polozka </a> </li> </ul>
13.3.2008 15:26 Baghira
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Jak do něj zařadit, aby v případě že ID bude 5 hodil jako odkaz "http://www...../diskuze.php" Jak?
Odstranit ze sveho profilu
Nyní dělám programátora webových stránek
a zkusit o veci trochu zapremyslet.
13.3.2008 15:47 Archman | skóre: 34 | blog: plky
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
hahaha
Josef Kufner avatar 13.3.2008 17:20 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
To neni k smíchu. Má pravdu.
Hello world ! Segmentation fault (core dumped)
14.3.2008 00:50 xyz
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
+1, bohužel
13.3.2008 18:19 depka
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Odpovědět | Sbalit | Link | Blokovat | Admin
jdes na to opravdu uplne blbe skus to neka takto:
if (isset($_GET['id'])) // id clanku
{
	$sql = "SELECT FROM ..... WHERE id = ".intval($_GET['id']);
	$result = mysql_query($sql) or die('nelze vybrat z databaze: '.mysql_error());
	if ($row = mysql_ fetch_assoc($result))
	{              
		echo $row['text'];	// do dataze ukladej pouze text clanku
		require('diskuze.php'); // vlozit kod diskuze pod clanek
	}
	else
		echo 'clanek nenalezen' // nebo error 404 atd....
}
else
	// nebylo zadano id clanku tak treba redirect na homepage
 
13.3.2008 21:49 Archman | skóre: 34 | blog: plky
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Tak aby ste si nemysleli že sem úplnej salát a hňup, tak už sem to vyřešil.. PODMÍNKOU.. (Hodně ve zkratce) Pokud se id=5, echo a href= diskuze.php
Josef Kufner avatar 14.3.2008 00:39 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
No..., ehm,... ne, nic, radši budu ticho ;-)
Hello world ! Segmentation fault (core dumped)
14.3.2008 08:33 Archman | skóre: 34 | blog: plky
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
A co? Funguje? Funguje..
14.3.2008 08:48 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
uvidíme po první změně v DB...
Kuolema Kaikille (Paitsi Meille).
14.3.2008 10:18 Archman | skóre: 34 | blog: plky
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
A co na to má vliv změna db? Teď sem prováděl změny a pořád to funguje tak jak má ;-)
14.3.2008 10:58 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
jak už to tak v podobných případech chodí, tak za pár týdnů se bude tenhle bastl přesouvat jinam a neprovede se dump db, ale bude se to patlat ručně, a protože máš irčitě ID autoincrement, tak it kód "if id==5" najednou přestane fungovat, a ty budeš neštastnej, protože nebudeš vědet proč.

Nebo když tvůj "manažer" rohodne, že diskusi chce i pod ID 6, 7, a 88, tak ty budeš patlat tunu ORů na produkčním systému, že?

Pochop, že se ti tu většina lidí snaží říct, že to co děláš, není Dobré Řešení (TM).

Ale co už, není pravděpodobné, že to po tobě někdy budu opravovat já, takže si dělěj co chceš, ale nediv se pak, až se objevíš na nějakém TheDailyWTF ;)
Kuolema Kaikille (Paitsi Meille).
freshmouse avatar 14.3.2008 11:14 freshmouse | skóre: 42 | blog: Bruno Banány
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Zdrcující. :-)
14.3.2008 15:40 Archman | skóre: 34 | blog: plky
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
No samozřejmě tohle moje řešení je POUZE PRO SOUKROMÉ ÚČELY a na soukromé testovací stránky.. Nevím co se do mě všichni navážíte.. Každý někdy začínal.. Je to 2 měsíce zpátky, co jsem ani nevěděl, jak se data ukládají do databáze a začal jsem se PHP učit.
14.3.2008 16:01 s0 | skóre: 32 | blog: nejchytřejší kecy | prágl
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
cyve, kdybych se do tebe opravdu začal navážet, tak tě lapne Chocholoušek (podle toho, jak si přecitlivělej). Jsem v tom dobrej.

Místo toho, abys tady výše přispívajícím klukům zlíbal ruce, že ti zadarmo dávají rady, na který teď budeš přicházet za cenu krve, potu a bolesti, je zdupeš? Každy byl začátečník a nikdo nezná všechno, jenže je rozdíl mezi tím, že si sedneš a začneš se učit správné věci a tím, že začneš cpát tlustý do tenkýho.

Ale co se tu vůbec angažuju...
Kuolema Kaikille (Paitsi Meille).
14.3.2008 16:23 Archman | skóre: 34 | blog: plky
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Nenarážim na ty co mi tu radí. Ale na toho co mi radil tohle:
Jak?
Odstranit ze sveho profilu
Nyní dělám programátora webových stránek
14.3.2008 16:59 Radek
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
ano, odstranit to by bylo vhodne
14.3.2008 21:06 Baghira
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Jo, snazil jsem se taky trousit dobre rady. Ale dotaz
Jak do něj zařadit, aby v případě že ID bude 5 hodil jako odkaz "http://www...../diskuze.php"
a
eval(): Na ten sem taky narazil, ale nepochopil.
je fakt silny kafe. Je to 2 měsíce zpátky, co jsem ani nevěděl, jak se data ukládají do databáze a začal jsem se PHP učit.
v kombinaci s
Nyní dělám programátora webových stránek,
je tragikomicka kombinace. Jen to dava klacek do ruky jednomu mistnimu oblibenci s jeho uhrovatymi pubertaky™.
14.3.2008 23:15 Archman | skóre: 34 | blog: plky
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Co je na tom špatného? Prostě mám zaměstnavatele, který mě zaměstnává a nechává učit věci "za letu"
freshmouse avatar 14.3.2008 23:33 freshmouse | skóre: 42 | blog: Bruno Banány
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Nepotřebuje ještě někoho? :-)
14.3.2008 23:35 Baghira
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Dozvidame se stale zajimavejsi veci. Protoze se neda predpokladat, ze by tve programovani pro zamestnavatele bylo sofistikovanejsi nez to řešení je POUZE PRO SOUKROMÉ ÚČELY a na soukromé testovací stránky, hrozi ti, ze se brzy budes opravdu ucit ZA LETU.

Proto doporucuji - nehadat se tu a radeji googlit. Ukolu mas nepocitane: validni HTML, bezpecnost webovych aplikaci, kvalitni navrh databazi a kodu vubec... (mam pokracovat?).

Pro zacatek doporucuju treba interval.cz
freshmouse avatar 14.3.2008 23:14 freshmouse | skóre: 42 | blog: Bruno Banány
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Nikdo se ti nesměje, že tomu nerozumíš. Každý nějak začínal (a většina webovými stránkami).

Ale informace o tom, že děláš programátora, přičemž nerozumíš ani základům algoritmizování i konkrétního jazyka, to je opravdu smutná kombinace.
Dalibor Smolík avatar 14.3.2008 16:14 Dalibor Smolík | skóre: 54 | blog: Postrehy_ze_zivota | 50°5'31.93"N,14°19'35.51"E
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Určitě by alespoň pomohlo, kdyby "rozlišovací" kód nebyl právě ten samovzrůstající, ale krátké označení názvu v samostatném sloupci, pak by nebezpečí přesunu kódu nehrozilo. Něco jako if BV == 1 echo "Právě jsem vypil lahev Buška z Velhartic" :-)
Rozdíly v řeči a ve zvyklostech neznamenají vůbec nic, budeme-li mít stejné cíle a otevřená srdce.
15.3.2008 00:18 Baghira
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Hm, a kdyz se budu chtit poblejt po necem jinem, pridam dalsi sloupec do tabulky? Dalsi podminku do kodu? Predelam vsechny selecty?

Proto jsou preci databaze relacni, aby se to nemuselo resit takovymhle zpusobem.
Josef Kufner avatar 15.3.2008 01:15 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Záleží na povaze řešeného problému. Někdy se hodí spíš příznak, jindy nějaké to písmenko označující typ, někdy je potřeba další tabulka...

Pokud jde o to, že stránka má diskusi, tak tam příznak může stačit, ale spíš to bude chtít ID té diskuse. Jakmile však přijde ke slovu ještě třeba galerie fotek nebo něco podobného, tak už je lepší se zamyslet nad nějakým sofistikovanějším přístupem k systému jako celku. Třeba zavédst univerzální "objekty", které půjde nějak spojovat dohromady a budou mít společné API.
Hello world ! Segmentation fault (core dumped)
15.3.2008 02:17 Baghira
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
O tom neni sporu. Ale myslim, ze API a objekty jsou v ramci tehle diskuse jiny level.
Josef Kufner avatar 15.3.2008 09:57 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Jo jo, to jen aby Archman měl aspoň tušení, jak to taky může vypadat ;-)
Hello world ! Segmentation fault (core dumped)
15.3.2008 19:45 Baghira
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
To je osklive, takhle ho strasit.
Josef Kufner avatar 15.3.2008 22:20 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
No,... ošklivější je se trápit s blbě napsanýma programama :-(
Hello world ! Segmentation fault (core dumped)
14.3.2008 10:52 Baghira
Rozbalit Rozbalit vše Re: PHP okénko aneb zajímavý problém
Use once, write many. ;-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.