Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Schimbare bec far VW Touran 1T3

Ce parere aveti de viteza/ modul ...

Love Lies Bleeding - 2024

Cum sterg mails din Promotions
 Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Donez medicamente renale ptr pisica

Ce componenta e asta si ce ziceti...
 Dupa 20 ani de facultate, am uita...

Mobile.de ofera imprumut de bani ...

problema test grila

Digi24 a disparut de pe TV Lg
 Drept de proprietate intelectuala...

Jante noi shitbox

Trinitas TV 4K

Dacia 1316 cu 6 usi ...
 

Yii advanced

- - - - -
  • Please log in to reply
27 replies to this topic

#19
AlleXyS1

AlleXyS1

    Active Member

  • Grup: Members
  • Posts: 1,107
  • Înscris: 05.05.2010
am incarcat actualul site aici : https://ufile.io/mnmlo (+baza de date)

pentru logare :
username : alex
password : 123

mai sunt inca probleme de cod, dar pentru cine are timp rog sa tina cont doar de urmatoarele fisiere : login.php, register.php, profil.php, profiles.php, members.php si cea mai dezvoltata pagina betapp.php. Nu luati in seama comentariile si textul, care sunt o combinatie de romana cu engleza stricata ... chiar nu am tinut cont de astea pana acum.

ce as vrea sa modific, daca nu o sa urmez calea unui framework :

1) formularele toate as vrea sa le duc intr-un folder "forms" pentru a separa cat se poate de mult html-ul de php.
2) scripturile javascript as vrea sa le duc intr-un folder "js" si sa le includ apoi unde am nevoie, la fel ca mai sus, pentru a separa js de restul codului
3) style .... ar trebuie sa scap de orice stil din fisiere si sa creez clase in style.css pe care sa le apelez unde e nevoie de ele.
4) dupa cele 3 operatii de mai sus, ar trebui ca fiecare fisier sa aibe un cod mai "aerisit" si mai usor de inteles

members.php : in lista membrilor, se poate da click pe numele oricarui utilizator si vei ajunge pe profilul acestuia (profiles.php = vizitarea unui profil strain, altul decat cel propriu care se gaseste in profil.php = aici as dori sa stiu daca se poate face un singur fisier din cele doua, probabil ca da, cu ceva functii javascript)

si cel mai important : betapp.php, care sper eu ca va fi destul de complex :

in momentul de fata, betapp.php este doar o simpla functie a intregii aplicatii. Pentru ca am mult mai multe cerinte decat atat, m-am gandit la 2 variante, una mai buna decat cealalta, dar pentru asta as vrea sa stiu daca este posibila :

a) crearea unui folder cu numele aplicatiei, in care sa se gaseasca tot continutul aplicatiei (numarul de fisiere). Aici as avea o problema cu meniul, insa nu intru momentan in mai multe detalii.
Posted Image pastrarea fisierului betapp.php care sa contina toata aplicatia, cu un numar imens de linii de cod in spate, in primul rand cu un sub-meniu imediat sub cel principal. Aici din start inseamna ceva dinamic, si nu stiu cum ar trebui sa incep .... php sau javascript.

O alta intrebare ..... mi se pare inevitabil sa nu amesteci cod php si javascript intr-o pagina .... este atat de rau? Posted Image

structura actuala :

[ https://image.prntscr.com/image/cx6BDZgJQo_dceAAYaWf4A.png - Pentru incarcare in pagina (embed) Click aici ]

pe viitor as fi vrut ca in ROOT sa ramana doar index.php, config.php (DbConnect.php) si folderele. AdminPanel ar trebui sa fie backendul, de care inca nu m-am apucat.

Crezand ca am inteles ce inseamna back-endul (php) si front-endul (html, css, javascript), mie imi pare imposibil ca front-endul sa-l scrii fara php, iar backendul fara html, css si javascript. Ori chiar nu am inteles nimic Posted Image))

Eu le vad ca doua siteuri cu o legatura intre ele (grupul de permisiuni). Frontendul este siteul (sau partea din site) care este accesibila tuturor membrilor si vizitatorilor, iar backendul este siteul (sau partea din site) care este accesibila doar administratorilor sau membrilor cu drepturi de administrare, care pot efectua modificari in baza de date, schimbari de functii, setari, etc. Desi, si din frontend, clientii pot aduce modificari in DB (adaugari/stergeri/modificari de postari, etc), nu au permisiunea de a schimba structura tabelelor.

si ca o auto-verificare ..... ma uitam la Wordpress. fisierele din ROOT inseamna front-end, iar wp-admin este back-endul.

PS : macar de-ar ajunge topicul asta jurnal, asta ar insemna ca invat in permanenta Posted Image

Edited by AlleXyS1, 18 June 2017 - 21:00.


#20
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Ești confuz deoarece ai auzit despre frontend vs backend de la diferite persoane, în diferite contexte.

Unii vorbeau despre ele în context de management și organizare, alții vorbeau strict tehnic.

Fiecare are dreptate în felul său.

#21
AlleXyS1

AlleXyS1

    Active Member

  • Grup: Members
  • Posts: 1,107
  • Înscris: 05.05.2010
Tinand cont ca fisierul betapp.php as vrea sa fie o aplicatie destul de mare, sunt nevoit sa-l pastrez in root, alaturi de index.php si menu.php pentru a nu crea conflict in meniu cu calea catre celelalte fisiere ... as putea crea un folder betapp, in care sa am cate un fisier pentru fiecare functie importanta a aplicatiei, si sa le includ pe toate in root/betapp.php? Asa calea catre intreaga aplicatie ar ramane site.com/betapp.php, iar pagina ar fi una dinamica, folosind ajax pentru schimbarea continutului acesteia (afisarea functiilor dorite de catre utilizator), cu crearea unui submeniu strict pentru aplicatia betapp?

Daca as avea betapp.php in alt folder decat cel cu menu.php s-ar crea conflict in momentul in care as vrea sa ajung pe alta pagina de pe cea cu aplicatia .... sau pot crea un alt meniu in care sa folosesc calea ds intoarcere catre root (desi nu prefer asta) si apoi catre noua pagina.

Adica am nevoie ca in betapp.php butoanele meniului sa fie de forma ../pagina.php, si nu direct pagina.php, pentru ca sunt in foldere diferite. Clar, ajunge jurnal :)))

#22
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
Gandind in termeni de fisiere.php pentru fiecare element de meniu doar te complici degeaba.

Abordarea clasica in mai toate aplicatiile web serioase: toate cererile merg spre un entrypoint (index.php in cazul php), iar acesta le directioneaza mai departe spre procesare.

Daca tot vrei sa fie pagina dinamica, ia urmeaza o abordare si mai curata: foloseste php doar pentru a expune API-uri. Scrii mai intai codul client (html, css, javascript), total separat de .php, iar dupa ce vezi ce apeluri ajax urmeaza sa faci, scrii cod php ce sa nu faca mai mult decat sa ofere raspunsuri la acele cereri AJAX.

#23
lightpoint

lightpoint

    Member

  • Grup: Members
  • Posts: 785
  • Înscris: 16.02.2017

View Postdani.user, on 19 iunie 2017 - 17:41, said:

Abordarea clasica in mai toate aplicatiile web serioase: toate cererile merg spre un entrypoint (index.php in cazul php), iar acesta le directioneaza mai departe spre procesare.
Spune-i omului despre request-dispatcher pattern, care in php este un MVC controller - PHP request dispatcher. Posted Image

Edited by lightpoint, 20 June 2017 - 10:05.


#24
AlleXyS1

AlleXyS1

    Active Member

  • Grup: Members
  • Posts: 1,107
  • Înscris: 05.05.2010

View Postlightpoint, on 20 iunie 2017 - 10:02, said:

Spune-i omului despre request-dispatcher pattern, care in php este un MVC controller - PHP request dispatcher. Posted Image

Sper sa nu sar de la un subiect la altul Posted Image) Am lasat acea pagina dinamica (aplicatia) putin deoparte, pentru a face o reorganizare fisierelor actuale. Si totusi, parca e o oarecare legatura ... pentru ca daca vreau ca aplicatia sa fie intr-un singur fisier, trebuie sa scriu cateva functii bune in Model si Controller Posted Image Cum Yii imi pare al naibii de complicat, am cautat cea mai simpla aplicatie php folosind structura MVC si am facut o afisare de test. De exemplu, am creat o lista de 5 membrii pe care o afisez in fisierul members.php, si se poate vizualiza profilul fiecaruia (cu detalii) dand click pe numele utilizatorului din lista, la adresa profile.php.

Acum structura fisierelor este de genul :

ROOT:/
		 -CONTROLLERS:/
					  - Controller.php
		 -MODELS:/
						 - Model.php
						 - Member.php
		 - VIEWS:/
						 - members.php
						 - profile.php
		 -index.php (gol)
		 -members.php

Intrebari :
1. Observati ca am 3 fisiere cu numele members.php. Exista riscul sa fie probleme pe viitor? Pot fi pastrate asa, tinand cont ca sunt in foldere diferite, sau le pot pune un prefix celor din Models si Views?
2. in folderul Controller, mai peste tot am vazut doar un singur fisier ... SiteController.php cu un numar urias de linii de cod (functii). Poate fi divizat in mai multe, in functie de continut? de ex, functiile listaCarti si listaMembrii sa le scriu in controllere diferite.
3. (a se vedea codul de mai jos) pot introduce continutul model/Model.php in model/Members.php pentru a ramane cu un singur fisier?
4. in root, pe langa folderele controllers, models si views ce fisiere ar mai fi indicat sa am? index.php, members.php, connection.php, menu.php? sau ar trebui ca din toate acestea, doar index.php sa se gaseasca acolo?
5. In VIEWS am vazut ca ar trebui sa apara tot continutul siteului, HTML, CSS si JS. As fi bine sa structurez VIEWS in felul urmator ? :
  
-VIEWS:/
					 - JS:/
					 - CSS:/
					 - LAYOUTS:/ menu.php
					 - fisierele views
?????
6. Ma miram ca in Yii in views nu vedeam unde sunt inchise si deschise tagurile html, head, title si body. Am descoperit ca , tot scheletul siteului este in VIEWS/LAYOUTS/menu.php !! Pare o structura destul de buna, de 100 ori mai bine decat codul meu haotic Posted Image ar fi ok de implementat asta?
7. Dpdv al securitatii, este o problema daca fisierul connection.php va fi in ROOT?
8. Dpdv al securitatii, folderele controllers, models si alte fisiere la care nu este dorit accesul din afara, ar trebui sa aibe permisiuni doar de afisare si continutul declarat privat? doar folderul views sa fie vizibil clientului?
9. ca tot suntem la securitate, un prieten mi-a spus "ca nu-i place folosirea metodei Get" in afisarea datelor membrilor ... pentru ca afiseaza datele in link si este vulnerabila. Adevar graieste? Posted Image)) Iar daca da, cum as putea rescrie codul pentru o mai buna securizare? ca eu stiu doar 2 metode pentru asta, Get si Post Posted Image)


Acum, ca o recapitulare pentru mine .... structura aceasta imi pare incomparabila cu ce am facut eu pana acum. E drept, avansez mult mai greu cu aplicatia, dar imi pare extraordinar impartirea limbajelor php si html/css/js in fisiere diferite. Tii evidenta mult mai usor, iar cand vrei sa schimbi stilul/tema siteului, este foarte bine ca modificarile le vei face doar in fisierul html sau css, fara sa afectezi in vreun fel scriptul php.

fisierele actuale :

ROOT/members.php (un fel de index.php)
<?php
include_once("controller/Controller.php");
$controller = new Controller();
$controller->listaMembrii();
?>


ROOT/CONTROLLERS/Controller.php
<?php
include_once("model/Model.php");
class Controller {
public $model;

public function __construct()
{
	 $this->model = new Model();
}
public function listaMembrii() {
if (!isset($_GET['member']))
{
$members = $this->model->getMemberList();
include 'view/members.php';
}
else
{
$members = $this->model->getMember($_GET['member']);
include 'view/profile.php';
}
}
}
?>


ROOT/MODELS/Model.php
<?php
require_once 'connect.php';
$con = DbConnect::getConnection()->getDb();
include_once("model/Member.php");
class Model {
public function getMemberList() {
return array (
"Alex" => new Member("1", "Alex", "[email protected]", "2132"),
"Vasi" => new Member("2", "Vasi", "[email protected]", "214234"),
"Dani" => new Member("3", "Dani", "[email protected]", "32343"),
"Gigi" => new Member("4", "Gigi", "[email protected]", "32343"),
"Adi" => new Member("5", "Adi", "[email protected]", "32343")
);
}

public function getMember($username) {
$allUsers = $this->getMemberList();
if(array_key_exists($username, $allUsers)) {
$user = $allUsers[$username];
} else {
return false;
}
return $user;
}

}
?>


ROOT/MODELS/Member.php
<?php
class Member {
public $id;
public $username;
public $email;
public $salariu;

public function __construct($id, $username, $email, $salariu)
{
	 $this->id = $id;
	 $this->username = $username;
	 $this->email = $email;
	 $this->salariu = $salariu;
}
}
?>


ROOT/VIEWS/members.php
<html>
<head></head>
<body>
<table>
<tr><td>Mbr.Pos</td><td>Username</td><td>Email</td></tr>
<?php
foreach ($members as $username => $member)
{
echo '<tr><td>'.$member->id.'</td><td><a href="members.php?member='.$member->username.'">'.$member->username.'</a></td><td>'.$member->email.'</td></tr>';
}
?>

</table>
</body>
</html>


ROOT/VIEWS/profile.php
<html>
<head></head>
<body>
<?php

if($members) {
echo "<u>Acum vezi profilul utilizatorului <b>" . $members->username ."</b> :</u><br /><br />";
echo 'id: ' . $members->id . '<br/>';
echo 'username: ' . $members->username . '<br/>';
echo 'email: ' . $members->email . '<br/>';
echo 'salariu: ' . $members->salariu . ' lei<br/><br/>';
} else {
echo "Membrul cu numele respectiv nu exista! Incearca din nou!<br /><br />";
}
echo '<a href=members.php>Inapoi la lista membrilor.</a>';
?>
</body>
</html>


Pentru afisarile cerute, imi par destul de multe fisiere .... adica, pentru o lista de 5 membrii, cu afisarea datelor fiecaruia, au trebuit scrise 6 fisiere. Dar, ma gandesc ca, pentru viitoarele "afisari/cereri" nu va exista multiplicator de 6(fisiere) Posted Image

Edited by AlleXyS1, 22 June 2017 - 12:00.


#25
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
Progresezi

#26
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Sunt multe de spus, dar nu cred ca cei cu experienta ar sta sa dea review la bloburi de cod aruncat pe forumuri.

Eu as zice sa inveti sa folosesti git, si sa il publici pe github.

Fa commituri mici, si cred ca voi mai putea rupe cate 5 minute sa iti scriu niste comentarii.

Prin "invata sa folosesti git" nu ma refer doar la comenzi, ci si la cum sa construiesti commit-uri self-contained cu mesaje de commit corespunzatoare.

#27
AlleXyS1

AlleXyS1

    Active Member

  • Grup: Members
  • Posts: 1,107
  • Înscris: 05.05.2010
Am creat acel test commit, dar din lipsa timpului nu am inteles mare lucru si n-o sa insist acum.

Am divizat structura in mai multe subfoldere, sper sa nu abuzez, am insa o hiba, din cauza fisierelor .php care le creez in root, daca sunt in regula, sau daca pot scadea securitatea in vreun fel.

<code>
Root/
     /controllers/ (controlerele ce includ actiunea ceruta de client)
     /models/ (aici am pastrat doar declararea variabilelor si constructorii)
     /services/ (aici am mutat din Models, tot ce tine de baza de date, queryurile)
     /views/ (aici este partea front, html, css, meniul). Exemplu : members.php
     /fisierele .php , exemplu members.php
</code>
Citisem despre DAO si VO, cam asta ar fi la mine Model si Services (sper :))

Dilema mea este cu fisierul members.php din root, si fisierul views/members.php. Sa spun si ca din .htaccess am exclus (Deny from all), continutul folderelor controllers, models si services.

Si cum am gandit eu legatura intre toate aceste subfoldere si fisiere :

1. Root/members.php afiseaza tabelul (designeul) din views/members.php si creeaza obiectul
2. Din root/members se ajunge in controller (obiectul de la pct1)
3. Controllerul apeleaza service'ul pentru preluarea datelor din db
4. Serviceul, la randul sau apeleaza modelul pentru a sti tipul datelor

Se prea poate ca termenii care ii folosesc sa fie gresiti, dar pasii, in logica mea, acestia ar fi :D

Edited by AlleXyS1, 25 June 2017 - 18:46.


#28
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
O structura sigura este sa ai doar index.php in DocumentRoot, restul in afara.

Uite una dintre favoritele mele (am taiat din detalii):

[ https://i.imgur.com/6VJ1cvT.png - Pentru incarcare in pagina (embed) Click aici ]

Tot ce tine de Mysql tii in Storage/Mysql, tot ce tine de web tii in Plugin/Ui/Web, etc.

Nu ai voie sa le amesteci.

Componentele comunica implementand interfete publice, si in index.php doar la legi una de alta intr-o aplicatie web.

Important de notat: web-ul e doar un plugin.

Esenta aplicatiei, domeniul, e implementat independent de pluginuri precum cele de storage (mysql) sau de distributie (web), in directorul MyApp/Domain/

Stiu ca iti da peste cap structura pe care ai deprins-o din articolele scrise fie de novici pe web, fie de anumiti vendori care incearca sa te lege de tehnologia lor si sa te faca dependent de ea. ;)

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate