- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Innovatív hűtési megoldással állt elő a Red Magic
- Xiaomi 14T Pro - teljes a család?
- Újradefiniálja a Xiaomi 17, milyen egy kompakt csúcstelefon
- Fotók, videók mobillal
- Huawei Watch GT 3 Pro - korlátolt szépség
- Samsung Galaxy S25 - végre van kicsi!
- Milyen okostelefont vegyek?
- Honor Magic6 Pro - kör közepén számok
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
Új hozzászólás Aktív témák
-
Tele von Zsinór
őstag
válasz
Speeedfire #4918 üzenetére
És ha /-el kezdődő url-eket használsz a script meg link tagokban? Így a hosttól kezdi nézni a böngésző.
-
Tele von Zsinór
őstag
válasz
Speeedfire #4914 üzenetére
Amire te gondolsz amiatt van, mert a böngészők mappá(k)nak nézik a te keresőbarát url-ed. Megoldás lehet a statikus dolgoknál az abszolút url, a /-el kezdődő url, vagy a <base> tag.
-
Tele von Zsinór
őstag
válasz
Speeedfire #4909 üzenetére
Mire kell?
-
Tele von Zsinór
őstag
válasz
Speeedfire #4859 üzenetére
Használd az "u" módosítót, ez mondja meg a PCRE-nek, hogy unicode karaktereket használsz.
-
Tele von Zsinór
őstag
válasz
Speeedfire #4850 üzenetére
Nem tudom, mit csinál az intro() függvényed, de így látatlanban a substr()-t hívja. Az oldalad utf8, egy multibyte kódolás, ezért az mb_substr()-t használd, hogy jó legyen.
A hiba abból jön, hogy az utf8 esetenként több byteot használ egy karakter reprezentálására, míg a sima substr() úgy tekinti, hogy egy byte egy karakter. Ezért a tied néha csonkolja.
-
Tele von Zsinór
őstag
válasz
Speeedfire #4807 üzenetére
strlen(), substr()
-
Tele von Zsinór
őstag
válasz
Speeedfire #4804 üzenetére
Próbáld meg úgy, hogy beteszel egy hidden mezőt, és abban továbbítod az id-t. Ha úgyis get-ben megy a formod, jó lesz így is.
-
Tele von Zsinór
őstag
válasz
tgabi333 #4799 üzenetére
Van fordítás: a php először egy bytecodet generál a scriptedből, és azt futtatja utána. Az, hogy nem kézzel kell fordítanod, hanem automatikusan történik a háttérben, más kérdés. Egyes cachelési megoldások, mint az APC, részben arra alapulnak, hogy a bytecodet cachelik, így a fordítást megúszod a következő kéréskor. Sok időt lehet vele nyerni, nem véletlen ajánlja a framewokök többsége, hogy tedd fel és engedélyezd éles szerveren.
Most megnéztem biztosra: php.net szerint valóban nincs különbség abból a szempontból, hogy mikor húzza be az includeolt/requireolt filet, de az include csak E_WARNING-ot, míg a require E_ERROR-t dob hiba esetén, így az utóbbinál ott meg is akad a futtatás.
Utasítás alatt azt érted, hogy nem függvényhívás, hanem nyelvi elem? -
Tele von Zsinór
őstag
válasz
Speeedfire #4794 üzenetére
Ha megnézed a rákövetkező hozzászólásom, látod, hogy plusz három sor az egész. Ez nem bonyolítás, és megfelel a DRY (don't repeat yourself) paradigmának is.
-
Tele von Zsinór
őstag
válasz
Speeedfire #4791 üzenetére
Előbbi file 17-es sorában átadod a kategória id-jét, eddig jó. Most a másodikba kell belerakni, hogy szűrjön is rá:
$sql = "SELECT `kategoria`.`kat`, `tartalom`.`szoveg`, `tartalom`.`datum`, `tartalom`.`url`, `tartalom`.`webcim`, `users`.`nick`
FROM kategoria, tartalom, users
WHERE ((kategoria.sorszam = tartalom.katid) AND (users.id = tartalom.fid) and (tartalom.elfogadva='1') AND kategoria.sorszam='". mysql_real_escape_string($_GET['sorszam'])."') ";
if (isset($_GET["get"])) {
$sql .= "AND tartalom.katid = \"" . mysql_real_escape_string($_GET["get"]) . "\"";
}
$sql .= " ORDER BY `tartalom`.`sorszam` ASC"; -
Tele von Zsinór
őstag
válasz
Speeedfire #4790 üzenetére
A require_once() annyit csinál, hogy a fordítás elején berakja az includeolt filet a hívás helyére, és error szintű hibát generál, ha nem tudja olvasni. Mindemellett megnézi, az a file volt-e már require/include hívás áldozata, és ha igen, akkor kihagyja.
A require és az include között a fontos különbség, hogy a require a fordítás elején húzza be (ezért az error), az include csak akkor, amikor odaér a futtatás (ezért csak warningot dob), utóbbit ezért szokták feltételekbe is rakni, mert csak akkor hajtódik végre, ha muszáj.Ha jól értem, egy egyszerű szűrés kell neked. Nem feltétlen kell új file, ha van olyan oldalad, ahol ezeket már listázod valahogy, abba kell belenyúlnod a következőképp: ahol az adatbázisnak átadott queryt állítod össze, tegyél be egy ellenőrzés: ha a $_GET tömbben van mondjuk egy filter kulcsú elem, akkor annak az értékét berakod a query where záradékába. Mivel a listázásig már csak a szűrt elemek jutnak el, ennyivel megúszod a dolgot.
-
Tele von Zsinór
őstag
válasz
Speeedfire #4784 üzenetére
Csináld úgy, hogy van egy fileod, ami elintézi a kezdeti dolgokat: db kapcsolat, session_start, ilyenek, és require_once-al húzod be. Ekkor biztosan csak egyszer fogsz például sessiont indítani.
"Minden oldal külön fileban" - ez így van nálam is, mondjuk még jobban is szét vannak darabolva. Azonban a wwwrootban egyetlen file van, az úgynevezett front controller, ez dobja szét a megfelelő, kívülről nem látható phpnak a kérést. Innentől nem kell bohóckodni olyanokkal sem, mint ellenőrizni, a db osztályod közvetlen van-e hívva, vagy include()-al.
-
Tele von Zsinór
őstag
válasz
Speeedfire #4778 üzenetére
Ez mi akart lenni, em vagy px?
-
Tele von Zsinór
őstag
válasz
Speeedfire #4780 üzenetére
Azt mondja a php, hogy a $_SESSION tömbben nincs captcha indexű elem. Nézd át mégegyszer a kódot, ami berakná, illetve nézd meg var_dump()-al.
-
Tele von Zsinór
őstag
válasz
Speeedfire #4757 üzenetére
Nézd meg mégegyszer: biztosan utf8 kódolási a fileod? Biztosan utf8-ként próbálja megjeleníteni a böngésző?
-
Tele von Zsinór
őstag
Fejlesztői gépen ajánlott az E_ALL és az E_STRICT együtt, sokat segítenek. Úgy igazán szép a kód, ha így sem warningol.
A noticeok általában elgépelt változót jelentenek, elkerülni egyszerű: isset() a valódi feltétel előtt, a php úgyis lusta kiértékelést használ. Az utóbbi főleg a deprecated hívásokat segít felderíteni. -
Tele von Zsinór
őstag
válasz
Speeedfire #4668 üzenetére
PHP-ból ilyet nem tudsz. Úgy lehet ilyet megoldani, hogy az egyik hostot a másik aliasaként adod meg a regisztrátorodnál.
-
Tele von Zsinór
őstag
válasz
Speeedfire #4653 üzenetére
Meg.
A dolgod annyi, hogy a feltöltés után megnézed, van-e cím megadva, és ha igen (feltételezve helyes php.ini beállításokat) a mail() függvény használatával tudsz levelet küldeni.
Van ezer egyéb mód, de ez a legegyszerűbb. Ha komolyabb kell, akkor Swift mailer, vagy Zend_Mail. -
Tele von Zsinór
őstag
A cookie - mint minden, ami a usertől jön - megbízhatatlan, és ezt most értsd a lejáratra is. A sessionbe érdemes tenni a legutolsó forgalom időpontját, és requestek elején ezt is ellenőrizni, ha szigorú lejáratra van szükséged. Általában elég ezt a php garbage collectorára bízni.
-
Tele von Zsinór
őstag
válasz
Louloudaki #4602 üzenetére
Másról beszélünk.
Az eredeti kérdés arra vonatkozott, hogy lehet több gépről elérhetővé tenni a session adatokat. Alapértelmezésben a php ezeket fileokban tárolja valahol a sys_get_temp_dir() alatt - így másik gépről nyilván nem láthatóak; kell valami megoldás. Neked az lesz a legegyszerűbb, ha adatbázisba rakod, ezügyben nézz utána a session_set_save_handler() függvénynek.
A mostani kérdésed arra vonatkozik, hogy határozod meg, az egyik usernek mire van joga és mire nem. A felhasználók táblában hozz létre egy mezőt a user típusának tárolásához, és bejelentkezéskor tedd ezt a session adatok közé, majd minden oldallekérésnél nézd meg, az aktuális oldalhoz elég-e az, ami épp van.
-
Tele von Zsinór
őstag
válasz
Louloudaki #4600 üzenetére
Annyit, hogy úgy tárold a session adatokat, hogy elérhetőek legyenek másik gépről is.
Hogy ezt mivel oldod meg, a te dolgod - a legegyszerűbb adatbázisba rakni őket, de elterjedt az NFS-en vagy memcached-ben tárolás is. -
Tele von Zsinór
őstag
válasz
Sk8erPeter #4525 üzenetére
PHP-ben az a konvenció, hogy a "mágikus" függvények (__get, __set, __toString, stb.) két alulvonással kezdődnek, gondolom ennek akartak megfelelni. Ezzel együtt viszont az osztálynév kiesik, így lett __construct.
-
Tele von Zsinór
őstag
válasz
PowerBuldog #4518 üzenetére
Mélyebb belenézés nélkül: az acc_check.php-d szintaktikailab hibás volt, nem panaszkodott az értelmező? Fejlesztői gépen a php.ini-ben az error_reporting értéke legyen E_ALL.
Átformáztam, hogy átláthatóbb legyen, megtalálod itt: http://pastebin.com/zita5U2e
Vegyesen használtál php4-es és php5-ös dolgokat - a private, public kulcsszavak php5-ben jelentek meg, de a php4-féle konstruktort használtad (osztályneve függvény), ezt átírtam __construct-ra.
Nem szép osztályon belül hozzányúlni a $_POST-hoz, azokat beraktam inkább az ellenoriz() függvénybe paraméternek, és ezt csak most vettem észre: itt $acc és $pass változókat használtál, $this->acc és $this->pass helyett.
Raktam bele némi SQL injection védelmet is (lásd a mysql_real_escape_string függvényhívások).
Nézz rá, megoldódott-e a problémád. -
Tele von Zsinór
őstag
válasz
PowerBuldog #4514 üzenetére
Ilyen esetben jön jól a pastebin.com
-
Tele von Zsinór
őstag
Igen, lehet. Ha van curl modulod, azzal csináld, valahogy így.
Ha mindenképp fsockopennel akarod, akkor a fejlécek elején GET helyett POST legyen, a küldendő változókat ugyanúgy rakd össze, mint ha get lenne, lehetőség szerint http_build_query()-vel, ez a többi fejléc után egy üres elválasztva írd, és valahová a többi fejléc közé kerüljön be ennek a hossza, mint Content-Length. -
Tele von Zsinór
őstag
-
Tele von Zsinór
őstag
Pedig ha rögtön a táblázatból akarod módosítani, akkor minden sornak külön formot kell csinálnod. Miért ne lehetne ezt autogenerálva?
Így a formba berakod az elsődleges kulcsot (akár a form actionjébe get paraméterben, akár rejtett mezővel), és csak az ahhoz a termékhez tartozó adatokat fogja elküldeni. -
Tele von Zsinór
őstag
válasz
egyjotakaro2 #4398 üzenetére
Direkt erre letölthető script nem hiszem, hogy lesz (önmagában haszontalan), de rengeteg példakódot, tutorialt találni erre. Ne legyél lusta keresni.
-
Tele von Zsinór
őstag
Ahogy te írtad, az "Array" az elvárt működés - mert ez a kimenete az automatikus stringgé alakításnak. Ugyanezért lesz hibás a mysql_real_escape_string() hívás - tömböt nem tud átalakítani.
Függően attól, hogy akarod letárolni adatbázisban, használhatod, amit itt fentebb írtak, ellenben ha sima szövegként le akarod tárolni az értékeket, így a legegyszerűbb:
$sql="INSERT INTO `tablanev` (termekek) VALUES ('" . mysql_real_escape_string(implode(", ", $_POST[termek1])) . "')"; -
Tele von Zsinór
őstag
$sql="INSERT INTO 'tablanev' (termekek) VALUES ('$_POST[termek1]')";
Ez így nagyon rossz. A $_POST tömb elemei a felhasználótól jönnek, ergo megbízhatatlanok. Olvass utána az SQL injection nevű támadásnak.
A legegyszerűbb védekezés ellene az, ha nem közvetlenül adod át a mysqlnek a kapott értékeket, hanem escapeled, például így:$sql="INSERT INTO 'tablanev' (termekek) VALUES ('" . mysql_real_escape_string($_POST[termek1]) . "')";
-
Tele von Zsinór
őstag
Hogy érted? Checkboxok közül melyik van kijelölve?
A böngésző csak azokat küldi el, amik be voltak pipálva, így már egyszerűbb a dolgod. Ha pedig [] jeleket használsz a nevében, akkor a php kódban tömbként tudod használni őket. Például:<input type="checkbox" name="fagyi[]" value="vanilia" />
<input type="checkbox" name="fagyi[]" value="csoki" />
<input type="checkbox" name="fagyi[]" value="eper" />Ez php oldalon a $_POST["fagyi"] változóval elérhető, és egy tömb lesz, ha legalább egy be volt pipálva. Ha egy sem, akkor a $_POST-nak nem lesz fagyi kulcsú értéke.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #4356 üzenetére
Tiltott sütik esetén get paraméterben küldi a sessionidt, automatikusan hozzárakva a, form, stb. tagokhoz (szintén php.ini-ben állítható). Régen alapból engedélyezve volt, nem tudom, frissebb verziókban ez változott-e.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #4350 üzenetére
Mindenki, akinél a use_trans_sid engedélyezve van a php.ini-ben.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #4348 üzenetére
Van egy olyan támadás, hogy session fixation, a be- és kilépéskori sessionid újragenerálás ez ellen egy hatékony védekezés.
-
Tele von Zsinór
őstag
válasz
egyjotakaro2 #4311 üzenetére
Ez csak egy újabb mód a kiírásra. Ettől még nem kap értéket.
-
Tele von Zsinór
őstag
válasz
egyjotakaro2 #4304 üzenetére
Ez egy Smarty template. Abban a kódban kap értéket, ami azt mondja, hogy ezt a templatet renderelje a smarty.
-
Tele von Zsinór
őstag
válasz
egyjotakaro2 #4300 üzenetére
Na, akkor most már biztosra mondom, hogy semmi fogalmad a php-ról
Kezdd az alapoknál, sok jó könyv elérhető ebookban is mindenféle torrentoldalakon. Ha megmaradsz az egyszerű kódoknál, megteszi a "PHP5 24 óra alatt".
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #4299 üzenetére
Tipp, és a kérdésed alatti komment megerősíti: azt hiszi, a { $izé} az rögtön le is kéri az értéket az adatbázisból.
-
Tele von Zsinór
őstag
válasz
egyjotakaro2 #4297 üzenetére
Hibásan adsz értéket a változónak. Mutasd, hogy próbáltad!
-
Tele von Zsinór
őstag
válasz
egyjotakaro2 #4291 üzenetére
Akkor csak kiiratod, de értéket nem adsz neki. Valahogy a mysql-ből át kéne kerülnie az értéknek a php változóba.
Javaslom, kezdd a php-t az alapoknál. -
Tele von Zsinór
őstag
Ha jól nézem, ez valami ingyenes szolgáltató. Ftp-vel jelentkezz be, és a txt fileon állítsd a jogokat 666-ra (rw-rw-rw-).
Másik lehetőség, hogy "w" helyett "w+" módban nyitod meg, és ftp-n törlöd. A pluszjel annyit tesz, hogy ha nem létezik a file, létrehozza.A gondod pontosan az engedély hiányából jön: ftp-n hoztad létre a filet, így az ftp felhasználó (azaz te) lett a tulajdonosa. A webszerver más néven fut (gyakran www-data), így más jogokkal rendelkezik. Jelen esetben nem volt írási joga.
-
Tele von Zsinór
őstag
válasz
egyjotakaro2 #4284 üzenetére
Hogy kap értéket a $ved?
-
Tele von Zsinór
őstag
válasz
DeltaPower #4203 üzenetére
Komolyan veszik
hasznos tag.
-
Tele von Zsinór
őstag
Azért jó látni, hogy nem én vagyok itt az egyetlen symfonys
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #4082 üzenetére
Ne adj neki nevet
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #3961 üzenetére
Pufferelést úgy érted, hogy egy szép nagy stringbe összegyűjtöd a kimenetet, és egy sima echo-val kiiratod? Ez lassabb, mint az általam használt módszer - phpben a stringműveletek relative lassúak, és a te módszereddel rengeteg string-összefűzés lenne a kódban. Kisebb oldalaknál ez nem feltétlen jelent mérhető különbséget, de komolyabb kódbázisnál már érezhető is lesz. Valóban előfordul, hogy egy tömbön többször végig kell menned, de ezek túlnyomó többségét okos joinolással el lehet kerülni.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #3947 üzenetére
Igen, így kérem le. Van benne még rendezés, oldalra szűrés, de a lényeg ez.
Az esetek 90%-ában elég, ha az általad írt módon, a legutolsó módosítás adatai megvannak, ha ez elég a megrendelőnek is, akkor meg is vagy. Ha mégsem lenne, akkor beleraksz még egy verzió (int) oszlopot, és egyesével növelgeted, selectben pedig a legnagyobb verziójút kéred.
Az életem egyszerűsítése kedvéért kapcsolótáblákat kivéve szinte mindenhova pakolok auto_inc elsődleges kulcsot, az _i18n táblába kivétel - itt az ős (itt: tibia_news) tábla auto_inc kulcsa és a nyelv együtt a primary key. Ide külön kapcsolótábla nem kell, egyszerű 1:n relációnk van.
Nem értem pontosan ezt a menüpontokhoz azonosítószámot dolgot. Úgy érted, hogy statikusra csinálod, és a főoldal mondjuk az 1, fórum a 2, stb.? Én maradnék ennél, ahelyett, hogy a menüpont nevét használom kulcsként - ki tudja, mikor kell majd átnevezni később, de az id-je nem fog változni. -
Tele von Zsinór
őstag
válasz
Sk8erPeter #3945 üzenetére
Tulajdonképp ugyanarról beszélünk - van egy pont, ami előtt nincs kiiratás, és ami után nincs komplex logika.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #3942 üzenetére
A __() is saját függvény
Az első paraméterben kapott stringet fordítja a sessionben beállított nyelvre (ha tudja). Szintén saját a slot(), az url_for() meg esetleges egyebek is (nincs most előttem a kód).
Más az alkalmazás- és a megjelenítéslogika, amit ebben a kódban látsz, az utóbbi kategóriába tartozik. Nem nyúl például adatbázishoz vagy sessionhöz, csak olvas az eddigre feltöltött változókból. Épp csak annyi logika van benne, ami kell - máshogy nem is lehetne mondjuk egy táblázat sorait kiírni, vagy feltétel alapján ezeket színezni. -
Tele von Zsinór
őstag
válasz
Sk8erPeter #3938 üzenetére
Ha van benne változó-behelyettesítés, akkor sprintf-et használok. Még valamikor rég mértem, hogy hogy lesz a legjobb, ezt hoztam ki leggyorsabbnak.
Úgy értem, hogy van egy pont, ahol már nem nyúlok adatbázishoz, nem végzek alkalmazáslogikához tartozó dolgokat - phpből is kilépek, sima html jön. Ha mégis phpra van szükség, akkor echoval kiiratok valamit és vissza html módba, vezérlési szerkezeteknél pedig az alternatív szintaktikát használom.
Bár elsőre biztos kusza (részben mert teli van __() hívással a többnyelvűség miatt), de így néz ki egy template nálam. -
Tele von Zsinór
őstag
válasz
Sk8erPeter #3936 üzenetére
Bármi string, amiben előfordul változó-behelyettesítés (legyen az "$változó" vagy "{$var}") lassabb, mint amiben nincs (de itt nincs különbség a ' és a " közt). Ilyen esetekben talán az sprintf() a leggyorsabb.
Külön kezelem a view réteget, így elég kevéssé kell stringekkel játszanom -
Tele von Zsinór
őstag
válasz
vakondka #3905 üzenetére
"Mit kell változtatni" listára egy todo-kezelőt ajánlok, én a remember the milket használom (online, ingyenes).
Elvileg olyat is tud, hogy kiosztasz másnak feladatot, ezt a részét még nem próbáltam."Mit változtattam" listára pedig egy verziókövető kell neked, mint a git vagy az svn.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #3862 üzenetére
Swfupload vagy apc- + ajax.
-
Tele von Zsinór
őstag
válasz
Louloudaki #3859 üzenetére
Gyorsít, nem is keveset, mert a mysql elő tudja készíteni a queryt. Értsd: valamennyit optimalizál rajta, valahogy úgy, ahogy a prepared statement-ek is gyorsabbak, mint ha ugyanazt simán átadod.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #3832 üzenetére
A RewriteBase arra jó, hogy megmondd, a /valami könyvtárban vannak a dolgaid, és ezt vegye figyelembe a többi szabálynál.
Az IfModule-nek annyi szerepe van, hogy nem 500-at kapsz, ha esetleg nem lenne betöltve - mert akkkor a Rewrite* szabályokat nem tudja értelmezni az apache, és jófejségből kapsz egy internal server errort.
Jellemzően nem szokták kikapcsolni (illetve inkább jellemzően be szokták kapcsolni), ha tudom, hogy x szerveren van mod_rewrite, törölni szoktam az IfModule tagokat, ezzel nyerve egy elhanyagolható sebességnövekedést. -
Tele von Zsinór
őstag
Meg.
Például használhatsz lockfile-t - futás elején ellenőrzöd, megvan-e, ha igen, kilépsz, ha nem, létrehozod, és csinálod, amit akarsz, a végén meg törlöd.
Érdemes a file dátumát is figyelni az elején, és valami értelmes timeoutot használni (bár létezik a file, 15+ perces tehát a folyamat vagy véget ért, vagy valami miatt már úgysem érdekes).
Oda kell figyelni az íráskor, de kis terhelésű rendszereknél jól működik. -
Tele von Zsinór
őstag
válasz
Krszti1660 #3794 üzenetére
Ezt pontosan azért kapod, mert a db.php üres, az előző hsz-dben azt írta, hogy nem tudja létrehozni / módosítani. Kézzel írd bele az ide bemásolt kódból a $db_ változók értékeit, és remélhetőleg megjavul.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #3790 üzenetére
Mit csinál másként a smarty?
A kimenetedet nem php-ben kell megírnod, hanem egy smarty által kitalált nyelvben, alapértelmezetten például a {$asdf} kiírja a megfelelő változót, de tud ifet, foreacht, meg sok egyebet, ami kell, hogy jól tudd használni. Kényelmes, és nem kell php-t tudnia annak, aki a felhasználói felületet készíti.
Ezt a kódot egyébként php-vé fordítja és cacheli, szóval az első lekérést nem számítva minimális az overhead.Egyébként erről az <<< EOFILE és <<< EOPAGE cuccokról miért nem lehet semmiféle leírást találni a php.net-en?
Pedig van
Úgy hívják, hogy heredoc.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #3778 üzenetére
Az nem kerülhető el, hogy echo (vagy azzá fordítódó utasítás például smarty esetén) legyen a megjelenítéslogikádban, de ne ott kapjon értéket, ott már csak kiírva legyen - annyi a lényeg, hogy ha már elkezdtél kiírni, akkor tényleg csak kiírjál.
Ha már includeolok, akkor smartyt is használok, mert így a legegszerűbb megoldani a szétválasztást. Ha template motor nélkül vagy, nem is tudok szép szétválasztási módszert úgy, hogy includeolgatod a külön oldalakat az indexbe - ilyenkor marad a kavarás. Viszont egy olyan vizsgálat kell a legelejére, hogy létezik-e egyáltalán olyan, amit a user kért (ez egy array_search() hívás), mert ha nem, akkor a legelején dobhatjuk is a 404-re. -
Tele von Zsinór
őstag
A header() azért warningolt, mert a hívása előtt már volt kimeneted. Ha jól sejtem, a kódod végez némi feldolgozást (mondjuk blogon írt kommentet ment), ezután akarsz átirányítani (mondjuk a post oldalára).
Akár tüntesd el az összes kiírást az előbbi scriptből (mert úgysem látja a user), vagy tüneti kezelésként az elejére rakj egy ob_start() hívást, amitől meg bár te kiírod, nem küldi el a kliensnek, és a kódodban bárhol mondhatsz header()-t. -
Tele von Zsinór
őstag
válasz
Sk8erPeter #3767 üzenetére
Szerintem félreértesz, és leszúrásnak veszed, amit írtam
Az nem tetszett a kódodban, hogy az egyik pillanatban még html-t írsz, aztán hirtelen jön egy <?php meg némi alkalmazáslogika, majd vissza html-be. Ez a keverés a nagyon egyszerű oldalaktól eltekintve mindig karbantarthatatlan spagettikódot eredményez, ezért próbáltam egy jobb javaslatot tenni.
Azt a doctypeot azért írtam oda, hogy egyértelműbb legyen, mit értek alkalmazás- és megjelenítéslogika alatt -
Tele von Zsinór
őstag
válasz
Krszti1660 #3763 üzenetére
Definiáld, hogy átnézni. Ha auditra gondolsz, csekély valószínűséggel fogsz itt embert találni, még kevésbé olyat, aki ingyen megcsinálná. Inkább az álláshirdetések közé írj, pár mutatóval, mint mondjuk a php kód sorainak, meg az osztályoknak a száma, és talán kapsz pár árajánlatot.
Ellenben ha kérdésed van egy kódrészlettel kapcsolatban, azt nyugodtan felteheted itt. -
Tele von Zsinór
őstag
Továbbirányítanád a felhasználót? Tud ilyet a header(), ha location-t küldesz, tud ilyet a <meta/> refresh, de akár JS-el is tudsz ilyet csinálni. A legjobb a fenti három, valami minimális kimenettel, ahol leírod, hogy továbbirányítod, és raksz linket is, ha a fenti három tiltva lenne.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #3757 üzenetére
Úgy gondoltam, hogy válaszd külön az alkalmazáslogikát a megjelenítéstől - előbbiben semmit nem írsz ki, utóbbiban meg már nem nyúlsz adatbázishoz, sütihez, stb.
Valahogy így:kódod kezdete, session, adatbázis, ilyenek
kapott paraméterek alapján működés, megjelenítéshez szükséges dolgok összeszedése mondjuk a $view változóba, hogy egy helyen legyen
session_write_close(), mysql_close(), ilyenek
-határ-
kiírás, kezdve a doctype-al, mert eddig ugyebár semmi nem ment el a kliensnek, esetleges http fejléceken kívülHa egyszerűbben karbantartható kódot akarsz, akkor használj valami template motort, legnépszerűbb talán a smarty, ami kevés tanulás és megszokás után már remekül használható.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #3755 üzenetére
Ez így elsőre működő megoldásnak tűnik, de ha belegondolsz, messze nem jó - nézd például azt az esetet, hogy ?kv=/bin/false-al hívom meg. Is_file == true, aztán includeoláskor minimum a warning.
Jobb az, ha egy tömbben fel van sorolva az, hogy mik a valid értékek, és isset($tomb[$kv])-val nézed, másrészt: _nagyon_ nem jó a logikád a megjelenítéssel keverni. -
Tele von Zsinór
őstag
válasz
Krszti1660 #3751 üzenetére
Kérdezz, aztán meglátjuk.
-
Tele von Zsinór
őstag
Új hozzászólás Aktív témák
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Goddess of Victory:Nikke
- Innovatív hűtési megoldással állt elő a Red Magic
- Milyen processzort vegyek?
- Gyúrósok ide!
- Melyik tápegységet vegyem?
- Jövő hónapban érkezik a Sacred 2: Remaster
- Subaru topik
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Allegro vélemények - tapasztalatok
- További aktív témák...
- Western Digital Black 500GB 3,5"-os hdd-k (
- AKCIÓ ÚJ Bontatlan Macbook Pro 14 M4 MAX 14 32GPU 36GB 1TB Magyar billentyűzet Azonnal átvehető Deák
- BONTATLAN Új Ipad 9th 10th 11 gen. Air 6 7 , Ipad Pro Mini 7 IPADEK Azonnal DEÁK Térnél Átvehető.
- BONTATLAN Új iPhone 17 PRO MAX 256-512GGB Független 1év Apple GARANCIA Deák Térnél Azonnal Átvehető.
- Dell Precision 7740 Workstation 17,3", i9-9980HQ, 32GB, RTX3000 6GB
- LG Gram 14 WUXGA IPS i7-1360P 5.0Ghz 12mag 32GB DDR5 1TB SSD Intel Iris XE 10óra Akku Win11 Garancia
- Apple iPhone 14 Pro Max / Kártyafüggetlen / 256GB / 12Hó Garancia / 87% akku
- HP ZBook Firefly 14 i7-1165G7 16GB 512GB Nvidia Quadro T500 4GB 14" FHD 1 év garancia
- Intel Core i5-9500 / i5-9500T / i7-8700 / i7-9700 CPU, processzor - Számla, garancia
- Samsung Galaxy A13 64GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest