Sziasztok!
Többek között PHP-val ügyködöm, teljesen amatőr szinten. Amit eddig akartam, azt le tudtam kódolni, más kérdés, mennyire "ütésállóra". Folyton keresem az eddigi megoldásaimnak a hatékonyabb, szebb, jobb formáit, és ebben a keresésben most nem tudok tovább lépni, a tapasztaltabbak segítségét kérem.
1. Kerestem és nem találtam azt a fórumot, ahol a felhasználó beléptetését úgy javasolta megoldani valaki, hogy egyetlen login.php végzi el a műveletet, majd a további php oldalakat ez hívja meg (valami ilyesmire emlékszem). Ez elegánsnak látszik, hiszen a felhasználó böngészőjében mindig csak a login.php látszik, elrejti a többi oldalt. Na de ezt mégis hogyan kellene kivitelezni? Tudna valaki erre példát vagy tutorial-t adni?
2. Írok éppen egy könnyed kis keretrendszert, beléptetem a felhasználót, ott művel valamit, az eredményt adatbázisban tárolom, stb. Külön framework-öt nem használok (kellene? melyiket?), a munkamenet kezelésére az alábbi módszert használom:
...
session_start();
if (isset($_SESSION['userID'])) {
...
Van ezzel gond, vagy hasonlóan egyszerű módszer? (Ennél a projektnél nincs szükség HTTPS szintű védelemre)
3. JS oldal jquery segítségével .ajax() függvény használatával adatokat küld és fogad a PHP oldalnak/tól. Létrehoztam egy központi php oldalt, amit minden ajax() meghívhat, az első paraméter az adja meg, hogy a php-ban mi történjen. A php-n belül egy switch-case szerkezettel különítem el a feladatokat, ~100 külön kérés kiszolgálásánál a case ág meglehetősen nehezen karban tartható. Kérdem én: hogyan legyen ez másként?
Köszönöm!
Cözi
Hozzászólások
1. "a felhasználó böngészőjében mindig csak a login.php látszik"
Az nem jó, ha mindig a login.php látszik, keresők nem tudják indexelni a weblapot és a kedvencekhez adás is nehézkessé válik. Itt útválasztással oldják meg, nézz utána a clean url kifejezésnek (url rewrite, rewrite engine). Egyébként jó helyen tapogatóztál
2. "Írok éppen egy könnyed kis keretrendszert"
Keretrendszerből tengersok van, ráadásul abban az értelemben könnyedek is, hogy csak azokat a modulokat töltik be memóriába, amit éppen használni szándékozol. Ne pazarold ilyenre az időd. Amit megírsz, azt még tesztelni is kell, ezek pedig jó eséllyel hiba nélkül teszik a dolgukat (feltételezem nagy naívan). A session kezelés is meg van oldva bennük, ha érdekel, meg tudod nézni, de elég az is, ha az elvét érted. Pár példa: Zend Framework, Phalcon, Symfony, stb.
3. Ajax hívásoknál én inkább libeket használnék, külön metódussal, a switch case fölösleges hibaforrás (lemarad egy break pl).
Keretrendszereknél tuti fel fog merülni az MVC, azt mindenképp tanuld meg.
-----------
"Pontban 0:00-kor nem nagyon szoktak véletlen dolgok történni"
Libek, keretrendszerek megírása olyan szempontból hasznos lehet, hogy ha saját maga áll neki megoldani a problémákat amik felmerülnek, jobb képe alakulhatk ki a dolgokról. Nem teljesen haszontalan, persze sok idő. Nodehát ha kedve van hozzá, miért ne?
Igazából ez egy zárt rendszer lesz, nem igazán életszerű a kedvencek használata vagy a keresőmotorok indexelése.
clean url, url rewrite - ezekre rákeresek, köszönöm!
Más gondot is okozhat, konkrétan nem tudom, hogy mit, mert sosem fejlesztettem még így, de ha érkezik egy hiba, hogy a login.php oldal nem működik, akkor nehezebb lesz a debug.
-----------
"Pontban 0:00-kor nem nagyon szoktak véletlen dolgok történni"
Én azt javasolnám, ha kezdő vagy, ne "rontsd el" magad php-vel, utána sokkal nehezebb lesz.
A miértekről itt egy cikk: http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
Használj inkább tulajdonképpen bármi mást. node.js, python, java, c#, ruby, és rengeteg egyéb választási lehetőséged van.
+1
--
blogom
Nem teljesen kezdő vagyok, Java, JS, PHP ismerősek nekem. Nem főállásban programozom, igazából ez csak amolyan kompetencia-bővítmény nálam.
PHP most csak azért jött elő, mert ezt ismertem ebből a felhasználási szempontból, meg korábban csináltam hasonló aprómunkákat benne.
Természetesen nyitott vagyok és szívesen olvasom a hozzászólásokat!
Köszönöm, Cözi
Amit írtak az igaz, de alapvetően el lehet lenni a php-vel is, persze olyan amilyen...
És a topicindítóra, már ha nem vették el mások a kedved ettől a "megoldástól".
1. Én nem login.php-val csinálnám, hanem index.php-val.
A session vizsgálat és az autentikációt most hagyjuk, tfh minden aloldalon van egy "wtf" nevű változód ami alapján eldöntöd, hogy mit is kéne betölteni. Az action pedig mindig az index.php, aminek a "bele" kb. így nézne ki:
Ez fapad és egyszerű, nyilván van millió kultúráltabb megoldás is.
Ha bookmark-olhatóra akarod akkor mehet GET-tel is.
2. Előrebocsátom, és no offense, de az "írok éppen egy könnyed kis keretrendszert" remélem csakis magadnak, szigorúan localhost-on csinálod, és nem production környezetbe akar menni. Így is van elég rommátört website, és a kérdéseid alapján még eléggé kezdő vagy ahhoz, hogy egy n+1.-et gyárts a netre...
Adatbázissal kapcsolatban: sql injection-re figyelni, a "little bobby tables" szituációkat el kell kerülni, illetve a bejövő form adatokat is validálni és escape-elni kell.
Framework alatt nem tudom mire gondolsz, de kb. a session_start-ot megoldásra épül minden.
"HTTPS szintű védelemre" pedig mindenhol szükség van, ahol autentikációs vagy - bármilyen szempontból is - érzékeny adat mehet keresztül. Egy self signed cert vagy egy startssl nem akkora nagy erőfeszítés, hogy ezt ne tegyük meg, szerintem legalábbis...
3. Pl. az 1-es pontban vázolt megoldás? Azaz egy tömbben felveszed az elfogadható paramétereket, és ha a bejövő paraméter megfelel ezeknek akkor betöltöd (include, require) az ehhez tartozó php kódot külön file-ból?
"Framework alatt nem tudom mire gondolsz, de kb. a session_start-ot megoldásra épül minden."
No offense, de ez azert fajt.
-----------
"Pontban 0:00-kor nem nagyon szoktak véletlen dolgok történni"
No offense, de tényleg nem tudom mire gondolsz.
Ez volt a topicindítóban a kérdés: " Külön framework-öt nem használok (kellene? melyiket?), a munkamenet kezelésére az alábbi módszert használom:
session_start()"
Tényleg érdekelne, hogy milyen módszerek vannak még session kezelésre ezen kívül.