IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: propojení dvou systémů

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Martin Suchodol:13.2.2020 9:13

Ahoj, předem bych rád požádal aby jste se vyhnuli komentářům typu a proč to dělat takhle složitě apod.

Již delší dobu si pohrávám s myšlenkou o rozdělení jednoho webu do dvou. Ale tak aby stále fungoval jako celek. Jako příklad použiji zdejší seríál o eshopu.

Takže řekněme že bychom administraci chtěli mít v subdoméně, a zbytek na hlavní stránce. Takže adresy by mohly vypadat např. takto admin.localeshop, a localeshop.

Bude stačit jen zreplikovat adresářovou strukturu s tím že v subdoméně bude vše co se týká admnistrace a ostatní bude v hlavní stránce? A jak následně přistupovat ke třídám v rámci jmenných prostorů? Stačí jen upravit autoloader aby se díval i do složky se subdoménou?

A co jmený prostor, bude stačit jej pak následně používat takto (ano vím že IDE pak automaticky jmenné prostory doplňuje)?

use subdomena\App\Co­reModule\Arti­cles\Controller­s\ArticleContro­ller;
//potažmo
use www\App\CoreMo­dule\Articles\Con­trollers\Arti­cleController;

 
Odpovědět
13.2.2020 9:13
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:13.2.2020 9:40

To mas celkem zajimavy problem. Zdejsi clanky vubec neznam, takze zkusim obecne.

  1. V cms bych vytvoril 2 uzivatele a priradil prava ke strance.
  2. V cms bych vytvoril skupinu, skupinu priradil ke strance, do skupiny priradil seznam uzivatelu. Skupine muzes priradit domenu a tak.
  3. Fyzicky bych udelal 2 slozky pro oddeleni obsahu. Zkopiroval do obou cms. Do kazdeho nastavil jineho uzivatele. Pomoci htaccess bych presmerovaval na prvni nalezenou stranku. Cili, pokud by jeden cms vratil 404, tak bych zkusil druhy. A nebo to presmeroval na nejaky index.php, ktery by vybiral z cms. Vyhoda je, ze bys to mel i fyzicky oddelene.

V moji firme treba provozujeme eleaning. Mame v provozu 5 ruznych moodlu. Protoze jsme chteli fyzicky oddelit a tez nutne potrebujeme mit 1 pro jine mesto u nich na serveru, kvuli rychlosti.
Pak tu mame jeste web, a ten provozujeme na 1 cms. Kazdy v nem ma slozku. K te slozce mam pridazene skupiny uzivatelu, adminy zvlast, editory zvlast. V kazde slozce je dalsi podslozka pro pod-oddeleni. Tam mam take skupiny a dalsi editory. A jeste provozuji EN verzi. Na webove adrese to vypada nejak takto:

elearning.odd1.firma.cz
elearning.odd2.firma.cz
odd1.firma.cz/cz
odd1.firma.cz/cz/pododd1/
odd1.firma.cz/cz/pododd2/
odd1.firma.cz/en
odd2.firma.cz/cz
odd2.firma.cz/en

U nas se jedna o univerzitu, firma = univerzita, odd1 = fakulta prirodnich ved, pododd1 = katedra informatiky.

Cili, nevim, jak je navrhnuty cms v tom clanku, ale urcite by tam mela byt kolonka pro adresarovou strukturu a kolonka pro skupinu uzivatelu. Pokud to tam neni, tak je to prakticky nepouzitelne pro sirokou skalu aplikaci a je to jen jednoduchy cms. A na tve otazky lze odpovedet, ze to nelze udelat. Leda udelat 2 slozky, 2 cms a pracne rozdelit obsah a ridit to pres htaccess.
Aspon hadam, ze nejsi zadny kutil, ktery by si dokazal cms predelat, podle toho dotazu :)

Editováno 13.2.2020 9:42
 
Nahoru Odpovědět
13.2.2020 9:40
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:13.2.2020 9:51

Jo, funguje to teda tak, ze ta skupina ma prava pro celou slozku a podslozku. A pak mame editory oddeleni, kteri maji prava jen pro sve slozky. Sekretarka katedry si edituje jen ve sve slozce. A kdyz potrebuje neco spesl, posle mail a ja s pravy admina ji muzu editovat taky.

Jenze tenhle zpusob vyzaduje sofistikovane rozhrani pro uzivatele. U vetsiny demo prikladu se s tim nikdo nezabyva. Protoze je to asi tyden programovani a vymysleni.
Navic, u nas oba cms mame napojene na ldap. Cili uzivatele se loguji pres sluzbu ldap, ta overi, ze existuji, overi opravneni a pod. Kdyz se uzivatel prvne prihlasi, tak se v cms pro nej vytvori ucet. A ten ucet muzu priradit pak prave do skupin, slozek.
A nebo v druhem systemu je to tak, ze v ldap jsou veskera opravneni (neco jako prace s sql, prihlasvani do sql). Cili, pri editaci se php zepta ldap, zda uzivatele prihlasit, login, heslo, ldap odpovi ano. A zda uzivatel jmeno ma prava pro slozku x/y/z, ldap odpovi ano nebo ne.
Cili, takhle vymakane to asi nemas, v tom demicku, clanku, tady. Takze, jestli chces zazraky, tak je lepsi si stahnout hotovy csm, treba poularni wordpress, joomla, drupal nebo jiny. A prevest si stranky do nej.

 
Nahoru Odpovědět
13.2.2020 9:51
Avatar
Odpovídá na Peter Mlich
Martin Suchodol:13.2.2020 10:39

PHP se stále učím, a systém vytvořený jako základ pro eshop jsem už z více než 50% předělal a doplnil některé věci které tam původně nebyly (samozejmě s ohledem na moji úroveň, takže např. systém pro autorizaci uživatele do několika úrovní není tak dbrý jako kdybys ho třeba dělal ty). Zajímalo mě to protože všechny změny které jsem navrh a přidal jsou součástí, hlavního jádra. Kolem kterého je pak obalený např. již zmíněný eshop. Tudíž jádro a jeho pohledy atd. umístit do subdomény, jelikož zde se bude odehrávat většina věcí, jako článkový kontroler, správa uživatelů, ale třeba i přidávání produktů apod. s tím že eshopové jádro je umístěné v hlavní sekci tedy složka www přičemž, by zde byly využívány prvky hlavního jádra tedy, užvatelská sekce (typicky přihlášení, registrace a úprava osobních údajů), ale i nějaké další věci.

Každopádně díky za odpověď, defakto jsi mi potvrdil to co jsem si myslel. Akorát jsem si tím nebyl moc jistý.

 
Nahoru Odpovědět
13.2.2020 10:39
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:13.2.2020 14:53

Aha. Tak to jsem netusil, ze to bastlili do jedne slozky. Tady vidim 2 moznosti. Pro kazdou sql tabulku udelat spesl slozku a do ni dat ostatni veci. A nebo udelat nekolik ostatnich slozek a do nich dat ty hlavni.

admin/uzivatel.php
admin/produkty.php
user/uzivatel.php
tpl/uzivatel_list.php
uzivatel/uzivatel.php
uzivatel/tpl/uzivatel_list.php
uzivatel/html/uzivatel_list.htm
produkty/produkty.php
produkty/tpl/produkty_list.php
produkty/html/produkty_list.htm

Ja bych strukturoval slozky podobne, jako kdyz vytvaris class. Vsechno, co se tyka uzivatelu, dat do jedne slozky.
Ta druha moznost je rozdelit to po jednotlivych slozkach, abys treba sablony vsechny mel pohromade. A kdyz budes chtit zmenit css, treba, tak aby to stacilo resit v jedne slozce.
Ja ted mam poslednim projektu strukturu asi takovouto: (ale z toh si neber priklad, jsem amater, bez vs-it vzdelani :), dneska se to zkratka dela jinak, ja to delam spis intuitivne. )

css/
js/
files/ (slozka pro prilohy nahravane uzivateli)
form/ (php prevezme data, zpracuje, vygeneruje stranku do htx sablony)
form/uzivatele.php
htx/ (html sablony)
htx/uzivatele_list.htx
htx/uzivatele_add.htx
inc/
inc/func.php
inc/class_permitions.php
inc/class_pdo.php
inc/class_ldap.php
inc/class_html2pdf.php (class pro prevod html kodu na pdf)
inc/class_file.php (class pro upload/download souboru)
inc/class_page_render.php
cfg/config.php - zde mam nastavena prava tak, aby to neslo prepsat phpckem, ani cist z webu

Je to zalozene na 3 projektech, ktere jsem delal driv, tak jsem kopiroval jejich strukturu. V podstate stale delam strukturu i u novych veci tak nejak intuitivne, podle projektu.

 
Nahoru Odpovědět
13.2.2020 14:53
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:13.2.2020 15:08

Mam to resene tak, ze hlavni program si poresi login. A pak si naincluduje jednotlive form/ classy, ulozi do pole a dal uz s tim pracuji jako s polem. Principialne nejak takto:

$app = $this;
$names = array(
'user',
'product',
);
(cyklus) include 'form/$name.php';
(cyklus) $app->forms[$name] = new class$name($app, $sql); // to mam asi jinak
// ?what=user&do=list priklad requestu
$req['what'] = 'user';
$req['do']   = 'list';
(cyklus) $req = $app->forms[$what]->request($req); // class si zkontroluje name, a kdyz odpovida zavola dalsi funkce, jako sql zpracovani, render a vrati zpet request nebo nic
echo $app->page;

Ja jen, proc mam ty form v jedne slozce, ze to takhle pekne prebiram cykly. Includuji vsechny, protoze casto pracuji treba s 5 z 10 naraz. A asi to neni o moc vetsi zatez. Aspon to neni jako fb s miliardami uzivatelu, aby bylo nutne delat optimalizace pro vykon.

Editováno 13.2.2020 15:09
 
Nahoru Odpovědět
13.2.2020 15:08
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:13.2.2020 15:19

A taky je snadnejsi pak zkopirovat pracoviste.php na resitel.php a opravit jen nazev hlavicku class (id, nazve, sql prefix, ..), sql tabulky, jmena sloupcu... Mam to udelane v kodu tak, ze to rychle najdu a tak do 10 min ten php soubor dokaze editovat, vytvaret, mazat, duplikovat zaznamy a zobrazovat seznam zaznamu pro uplne jinou tabulku. Je to vhodne pro editaci ciselniku.
A tez je nutne zkopirovat a upravit htx formy. Proste to mam promyslene :)

Editováno 13.2.2020 15:20
 
Nahoru Odpovědět
13.2.2020 15:19
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.