Új hozzászólás Aktív témák
-
cucka
addikt
-
cucka
addikt
válasz Lacces #13305 üzenetére
Fát kell építeni és nem bonyolult.
1. Beolvasod az összes menüpont adatait egy tömbbe. Az adatbázisban eltárolod minden elemhez, hogy a struktúra hanyadik szintjén van, így aszerint rendezve tudod lekérdezni. Ezzel biztosítod, hogy egyszer végiglépkedve a tömbön fel tudd építeni a fát.
2. A tömbön végigmész és felépíted a fát. Egy elemet tárolhatsz egy tömb elemeként vagy objektumként is, mindegy, én OOP-t javaslok.
3. Szélességi kereséssel végigiterálsz a fán, kiírod a menüt. Ha OOP-sen építetted fel a fát, akkor a fa elemei "ki tudják írni magukat", szóval egész elegánsan megoldható. -
cucka
addikt
-
cucka
addikt
válasz fordfairlane #13517 üzenetére
Mit jelent az az "összetett programstruktúra", amit a php hiányosan támogat? Tudsz példát?
-
cucka
addikt
válasz fordfairlane #13519 üzenetére
Eleve csak az 5-ös verzióban kapott a PHP tisztességes obejktumkezelő rendszert. Az 5.2-ben jutott el odáig, hogy használható lett a class loadere
Az 5-ös verzió 9 éve jelent meg, az 5.2 pedig 7 éve, szóval ezek már jó ideje lejárt lemezek.aminek az implementációja még mindig egyedi, ezért további szabványosítást igénylő (PSR-0). Az 5.3-tól van csak namespace-kezelés.
A class loadert kezeli a framework, vagy megírod egyszer és jól van. Tény, nem túl elegáns, de azért ez nem akadálya a komoly programok fejlesztésének.
Az 5.3 pedig 4 éve jelent meg, szóval lassan már ez is lejárt lemez. Inkább baj, hogy mennyire bénán implementálták a namespace-eket.Ezen kívül vannak olyan tulajdonságai, ami arra csábítanak, hogy kuplerájt hagyjon maga után a programozó.
Azért ez sem megoldhatatlan probléma egy komoly projektnél. Ha én enterprise szoftvert fejlesztek php-ban, akkor miért kell érdekeljen, hogy a kezdő pistikék szar kódot is tudnak akár írni?Nincs szétválasztva a megjelenítés az alkalmazáslogikától, a PHP egyben template-nyelv is.
Ez mondjuk egy mvc framework dolga, nem a nyelvé. Ha írok egy egyszerű java programot, ami csinál valami számításokat, majd kiírja az eredményt a konzolra, akkor erre sem teljesül az alkalmazáslogika és a megjelenítés szétválasztása. Most ettől rosszabb nyelv lesz a Java?Nincs szabványos URL - metódus mapping, ez nem a PHP futtatókörnyezet része, hanem webszerver- és egyéb komponenesektől függő dolog.
Mert amúgy melyik nyelvben van szabványos URL-metódus mapping? Ezt mindenhol a library-k intézik. (Egyáltalán, hogy kéne elképzelni, hogy ez egy általános célú nyelv része legyen?)Szóval na, ez így távolról sem volt meggyőző.
[ Szerkesztve ]
-
cucka
addikt
Azt, hogy az adott osztályt a gyökér namespace-ben keresse a php.
Amikor hivatkozol egy osztályra, azt mindig az aktuális namespace-ben fogja keresni a php. Tehát ha a kódodat berakod egy saját namespace-be, akkor így szólsz a php-nak, hogy a hivatkozott osztályt melyik namespace-ben keresse.
Ilyen esetekre van a "use", amivel be tudod húzni a "neveket" a saját namespace-edbe. -
cucka
addikt
Kapcsolótáblára akkor van szükség, ha egy bejegyzésnek több szerőzje is lehet.
Tehát ha pl. a közeljövőben szeretnél olyan fícsört, hogy egy bejegyzést több felhasználó is szerkeszthet, és ezt a rendszer nyilván is tartja, akkor készíts kapcsolótáblát.Ha egy bejegyzésnek pontosan egy szerzője van, akkor a többiek által leírt megoldás a nyerő.
-
-
cucka
addikt
válasz Tele von Zsinór #14118 üzenetére
Néhány apróság:
- A PHPUnit egy automatizált teszt framework. Bármilyen típusú teszteket írhatsz benne, nem csak unit tesztet.
- Kétszer is gondold meg, mielőtt belevágsz abba, hogy egy webes UI-ra teszteket írj, mondjuk Seleniummal. Elég sokat lehet szívni a tesztek karbantartásával, TDD is nehézkes, stb. -
cucka
addikt
válasz PumpkinSeed #14214 üzenetére
Ha a continue lefut, akkor nem fogja megnövelni a $asd-t, tehát végtelen ciklusba kerül.
Írd át for ciklusra és jó lesz. -
cucka
addikt
válasz PumpkinSeed #14230 üzenetére
Ha jót akarsz, akkor tényleg kidobod ezt a könyvet, pl. tisztán látszik, hogy register_globals használatára tanít, ami annyira rossz elképzelés volt, hogy az újabb verziókban már a bekapcsolása is fatal error-t ad.
(Amúgy mi az, PHP4 24 óra alatt? Abban voltak ilyen kódok) -
cucka
addikt
válasz PumpkinSeed #14248 üzenetére
Oreilly PHP The good parts elég jónak tűnt. Meg van egy Expert PHP And MYSQL a Wroxtól, szintén nem rossz, meg ha jól rémlik, valami nagyon hasonló cucc az Apress-től is. PHP Fekete könyv szintén nem volt rossz, de nem tudom, van-e belőle friss kiadás.
Magyar nyelven a jó könyvek töredéke jelenik meg, szóval ez nagyon rontja az esélyeidet. Amire még érdemes odafigyelni, hogy friss php verzióval foglalkozzon a könyv. 5.x verziókban elég sok újítás volt, amikkel érdemes tisztában lenni, szóval 2010-2011 előtti könyvre én nem pazarolnám az időmet. A "24 óra alatt" könyveket felejtsd el.
[ Szerkesztve ]
-
cucka
addikt
válasz rgeorge #14489 üzenetére
Kód nélkül nehéz okosat mondani. Most érted, egy ilyen xml gyártás és elküldés nagyjából ugyanúgy néz ki php-ban, mint más nyelvekben, és a megoldási lehetőségek is nagyon hasonlóak. Szerintem a legalószínűbb, hogy a php-s fejlesztők balf*szok, ez ellen meg nem fogsz tudni sokat tenni. Vagy ráveszed őket, hogy csinálják meg, vagy nekiülsz te megcsinálni helyettük.
-
cucka
addikt
Munkahely, valaki? [link] (Tudom, ez nem az állásbörze, nyilván, nem a fejvadász vagyok)
-
cucka
addikt
Szükségem lenne egy ingyenes, könnyen használható webshop rendszerre. Van esetleg ötletetek, hogy melyikkel érdemes próbálkozni? Ha normálisan olvasható/használható a kódja, az mindenképp előny.
-
cucka
addikt
válasz Sk8erPeter #14911 üzenetére
a te kódodon gyönyörűen látszik, hogy hogyan kezd spagettifikálódni a rossz legacy kód, ha új fícsört kell hozzáadni.
-
cucka
addikt
válasz Sk8erPeter #14914 üzenetére
Félreérted. Ez igazából saját tapasztalat meg okosok is mondják, hogy nagyobb módosítások után érdemes refaktorálni. Vagy ha költőien akarod: ha nem teszel ellene, a kód mindig a rendezetlenség (spagettifikálódás) felé tart. Akkor is, ha nagyon ügyes meg hozzáértő vagy.
Meg aztán válaszoltál egy működő megoldással, ennél informatívabb nem lehetett volna, nem értem a felháborodást ezen, nem is gondoltam erre.[ Szerkesztve ]
-
cucka
addikt
válasz CSorBA #14937 üzenetére
A key a tömb belső pointeréhez tartozó kulcsot adja vissza. Lásd next, prev, end, current
pl így tudod kiiratni a kulcsokat.
$tomb["geza"] = array("gyumolcs" => "alma", "szin" => "piros");
$tomb["zsolt"] = array("gyumolcs" => "szilva", "szin" => "lila");
$tomb["agnes"] = array("gyumolcs" => "citrom", "szin" => "sarga");
while (null !== key($tomb)){
print key($tomb)."\r\n";
next($tomb);
}
mod: amúgy használj foreachet. ez a tömb belső pointeres dolog farokság.[ Szerkesztve ]
-
cucka
addikt
válasz Sk8erPeter #14945 üzenetére
Az egész WP kódbázis olyan, mint a f*szom, egy igazi csődtömeg, bottal sem piszkálnám. Szóval ez a linkelt idézet teljesen beleillik a képbe.
-
cucka
addikt
Arra jó, ha olyan függvényt szeretnél írni, ami a paraméteren végez műveleteket és nem tér vissza semmivel. (Vagyis hát visszatérhetsz, de minek szopasd magad még jobban?) . Más szóval a függvényednek mellékhatásai vannak.
Amúgy nem javaslom a használatát, előnyösebb, ha a függvények mellékhatásmentesek.(#14983) fordfairlane
Szerintem nem keverte senki, jól írták. (Referenciatípus az nem is tudom, hogy micsoda amúgy )[ Szerkesztve ]
-
cucka
addikt
válasz fordfairlane #14988 üzenetére
Szerintem nincs félreértés. Annyi van, hogy objektumot csak explicit módon tudsz érték szerint átadni (értsd: manuálisan le kell klónozni, majd a másolattal hívni a kérdéses függvényt/metódust)
-
-
cucka
addikt
válasz DNReNTi #15232 üzenetére
Például olyan metódusokban nem szoktam használni ahol a szerver oldal ad át ellenőrzött paramétert, mondjuk egy user_id-t, azaz garantáltan nem jelent veszélyt.
És mi van, ha újra szeretnéd hasznosítani azt a metódust? Vagy csapatban dolgozol és a másik ember szeretné használni a metódusaidat? És ha mondjuk egy 1 év múlva lesz, amikor már nem emlékszel pontosan, hogy mely metódusokba építettél biztonsági lyukat lustaságból? -
cucka
addikt
válasz trisztan94 #15251 üzenetére
Hogy erted azt, hogy bebugyolaltam egy metodust egy masikbs?
Úgy, hogy a metódusaid többsége semmit sem csinál, csak meghív egy másik metódust. Tehát a kódod nagy része teljesen fölösleges zaj a kódbázisban. -
cucka
addikt
válasz DNReNTi #15266 üzenetére
Az első ciklusban érték szerinti értékátadást használsz a ciklusban. Ez úgy működik, hogy az $uj_tomb[0] értéke a $regi_tomb[0] értékének másolata. Tehát a háttérben egy darab memória tartalmát átmásolja egy másik memóriaterületre.
A második ciklusban referencia szerinti értékátadás történik. Ez úgy működik, hogy az $uj_tomb[0] semmi más, csak egy új név ugyanarra a memóriadarabra, amire a $regi_tomb[0] is mutat. Lényegében ez egy alias. Ha az egyik értékét módosítod, a másik is módosul. A memória, amire mutatnak, csak akkor fog felszabadulni, ha mindkét változót törlöd (unset) - ez fasza memory leak forrás, oda kell rá figyelni.
A harmadik ugyanaz, mint a második, csak for helyett foreach ciklussal. Többnyire ezt érdemes a for ciklus helyett használni.
Ja, és az ne zavarjon meg, hogy a tömbök 0. elemével írtam a példát, a fentiek bármilyen változóra igazak. Továbbá z objektumok érték szerinti átadása totál máshogy működik.
[ Szerkesztve ]
-
cucka
addikt
válasz trisztan94 #15267 üzenetére
Jelszó hash-eléssel kapcsolatban lenne egy kérdésem.
A standard válasz erre, hogy "google bazmeg".
Amúgy ha php 5.5 van, akkor használd a password_hash(), password_validate() függvényeket.
Régebbi verziókhoz itt van megoldás: [link] procedurális és oop implementáció.
Nem kell feltalálnod a meleg vizet.Egy másik gyors kérdés.
Deklaálod globálnak
global $valtozo;
Vagy beannotálod
/**
* @var $valtozo
*/Nem próbáltam ki, de én ezekkel támadnám meg a problémát.
-
cucka
addikt
válasz trisztan94 #15286 üzenetére
Ettől a kódtól kiég a retinám b+
-
cucka
addikt
válasz Sk8erPeter #15293 üzenetére
Csak én vagyok olyan ufó, hogy ha egy technológiával kell dolgoznom, amihez nem értek, akkor előtte elolvasok róla egy könyvet, hogy tudjam, miről van szó, én nem csimpánzként másolgatok össze vissza ismeretlen kódokat reménykedve abban, hogy véletlenül működni fog?
Ennek a topiknak a fele kb. ilyen triviális fasság, amit egy php könyv első 250 oldalának elolvasása után senki se tenne fel. Például biztos minden php könyvben van egy fejezet a filefeltöltésről. Mondjuk 40 oldal. Nem egy nagy kalad, egy délután alatt elolvasható, kitanulható alapszinten. Ehelyett szerintem még mindig azzal a foshalmazzal megy a küzdelem, amit ideposztolt. Nem fér a fejembe. -
cucka
addikt
válasz DeltaPower #15493 üzenetére
Ez mintha egy captcha generátor lenne, azokban szokták ezeket a betűket kihagyni a vizuális hasonlóságuk miatt...
Jelszónál is érdemes. El sem hinnéd, hogy hány 1bites felhasználó van, aki a generált jelszót kézzel írja át, nem kopipészteli.
Amit érdemes kiszedni: 0,1 számjegyek, L, O, I betűk (kicsi és nagy) és p,q betűk.Ez a kód amúgy olyan, mint ha a "legszarabbul megírt jelszógeneráló függvény" versenyre készült volna. Nem működik, olvashatatlan, tesztelhetetlen és legalább még lassú is.
[ Szerkesztve ]
-
cucka
addikt
[link]
ez azért elég kemény -
cucka
addikt
Nem igazán. A bináris fák keresőfák. Tehát pl. az adatbázisodban az indexek így vannak megcsinálva. Meg az adott nyelv implementációja is felhasználhatja.
A valóságban (meg főleg webprogramozásnál) legfeljebb normál fákkal találkozol, de azzal elég gyakran.(#15566) DeltaPower
1 "leágazás" miért nem lehet? Enélkül nehéz elképzelni egy 2 elemű bináris fát.[ Szerkesztve ]
-
cucka
addikt
válasz DeltaPower #15568 üzenetére
Igen. Mondjuk az adatbázis index az konkrétan egy keresőfát épít fel az adott mezőben található értékekből.
Na ha üres a táblám és belerakom az első sort, az egy egy elemű keresőfa lesz. Ha berakom a második sort, akkor egy két elemű keresőfa.(#15562) DNReNTi
Ezzel nálam nem mennél át egy interjún[ Szerkesztve ]
-
cucka
addikt
válasz PumpkinSeed #17229 üzenetére
A php-ban valóban lassúak a függvényhívások, de ez adottság, nem kell vele foglalkozni. Egy tíz meg százezer soros OOP kódhalmazban nem tudsz mit kezdeni ezzel. Ha elég hardkór vagy, itt elolvashatod, hogy miért van pontosan: [link]
Ha olyan szinten vagy, hogy ez a szűk keresztmetszet, akkor használj HHVM-et, de a PHP7-be igért JIT compiler is hozhat javulást. Vagy egyszerűen vegyél még szervert, olcsóbb, mint azért fizetni a programozót, hogy csökkentse a függvényhívások számát.
Arról nem is beszélve, hogy a jó minőségű kód egyik jellemzője, hogy a függvények elég rövidek és pontosan egy dolgot csinálnak. Szóval sok a függvényhívás és jó mély a stack.[ Szerkesztve ]
-
cucka
addikt
válasz DNReNTi #17242 üzenetére
A helyedben inkább az érdekelne, hogy ha a kliens lekérdezi a favicont, az miért eredményezi egy php program futását, ami ráadásul turkál valamit az adatbázisban.
(Gondolom egyrételmű, hogy maga a probléma, hogy szar a htaccess-ed.)mod: most látom, hogy pár hsz-el előbb bemásoltad. Én ebből azt olvasom ki, hogy ha a request se nem egy létező file, sem pedig létező könyvtár, akkor átdobja a kérést a php-nak. A fenti feltételek pont teljesülnek, ha egy nemlétező favicon.ico-t kérek a szerveredtől, ezért fog behívni a php-ba.
[ Szerkesztve ]
-
cucka
addikt
válasz DNReNTi #17244 üzenetére
A kérdésedre a válasz egyértelmű lesz, amint megérted, hogy mit is csinál a htaccess-ed.
Röviden: a mod_rewrite apache modult használod. Ez arra jó, hogy ha bejön egy kérés a webszervernek, akkor azt bizonyos feltételek esetén átváltoztatja egy másik request-é.
Például adott egy ilyen URL, hogy http://itcafe.hu/tema/php_kerdesek_2/hsz_17201-17300.html
Valószínű, hogy ez nem egy létező filera mutat egy szerveren, hanem a mod_rewrite átírja valami hasonlóra:
http://itcafe.hu/forum.php?name=php_kerdesek_2&from=17201&to=17300
Csak példa, nem tudom, hogy működik valójában a RIOS..Alapesetben az Apache webszerver egy adott könyvtárban található fileokat tud kiszolgálni. Tehát fenti esetben ha nem lenne mod_rewrite, akkor a hsz_17201-17300.html nevű filet kerené az URL-ben megadott könyvtárban.
A te esetedben ugyanez történik. Létrehozol egy rewrite szabályt, ami csak akkor teljesül, ha a hivatkozott tartalom nemlétező file és nemlétező könyvtár (ez a két RewriteCond). Az átírási szabály az átdobja a PHP-nek a kérést. (Ez a RewriteRule sor)Namost ez azt eredményezi, hogy MINDEN olyan kérést, ami egy nemlétező filera vagy könyvtárra mutat, azt át fogja dobni a PHP-nak. Ha írok egy szkriptet ami random fileokat kérdezget a szerveredtől, kb. mindegyik kérésem be fog hívni a php szkriptedbe (hacsak nem találom ki randomra egy létező file nevét a szerveren). Remélhetőleg innen te is össze tudod rakni, hogy az általad vázolt plusz szabály miért csak látszólagos megoldás a problémádra.
A valódi megoldást már leírták, ha így akarod használni a mod_rewrite-ot, akkor a PHP le kell tudja kezelni a hibás request-eket is. Pl.
<?php
function isRequestValid(){
//ezt neked kell megirni
}
if (!isRequestValid()){
http_response_code(404);
die();
}
//a program többi alkatrésze..
?>[ Szerkesztve ]
-
cucka
addikt
válasz #68216320 #17264 üzenetére
Ez esetben generáld le a képeket on-the-fly. Nem tudom, minek kell sz*pasd magad a base64-el. PHP-ból ugyanúgy ki tudsz szolgálni egy bináris jpeg filet, mint egy sima html-t, csak be kell állítani a megfelelő header-öket.
(Arra gondolj, hogy ha van egy html oldalad ahol van 100 ilyen generált kép, na az lassú lesz. Ez esetben fizess be egy nagyobb tárhelyre és generáld le előre a különböző verziókat. Esetleg csinálhatsz intelligens cache-elést, ahol a gyakran használt fileokat legenerálod előre, a ritkábbakat meg ad-hoc. Ez van, szarból nem lehet ostort fonni.)[ Szerkesztve ]
Új hozzászólás Aktív témák
- Kihívás a középkategóriában: teszten a Radeon RX 7600 XT
- Modern monitorokra köthető 3dfx Voodoo kártya a fészerből
- Kamionok, fuvarozás, logisztika topik
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Tőzsde és gazdaság
- Filmvilág
- Gray Zone Warfare
- Battlefield 2042
- (nem csak) AMD FX / Ryzen tulajok OFF topikja
- OLED TV topic
- További aktív témák...