ugrás a tartalomhoz

Ékezetes változónevek - 2014

53éves_nagypapa · 2014. Már. 30. (V), 11.35
Nem ! Nem akarok manuálisan ékezetes változóneveket létrehozni !

Tudom volt már ez a téma olvastam is mind, de régiek és részben mást tárgyalnak.
A régi fórumokban azt írják nem ajánlott, bár lehet stb. Ezeket ne mondjátok újra el.


Úgy ütköztem bele ebbe, hogy sql-ből szedek ki szavakat, - egy menu neveit - és a beolvasottakból dinamikusan csinálok változóneveket.

Így aztán lehetnek ékezetesek is.

Most 2014-ben - php5 - mi a helyzet szerintetek?
Lehet ebből valami gubanc ?

Bővebben:
Egy adatbázis alapú ul li menu gyártót és menedzsert készítek.
Sql bol kiolvastam a menük neveit.
Majd azt, hogy mi van almenüként besorolva alájuk./ez is tárolva van/


foreach($beolvasott_menunevek as $sort)
{
$look = ("SELECT `menunevek` FROM `menu_maker` WHERE BINARY `mivanalabesorolva`='$sort' ");
while ($doboz = mysql_fetch_row($tbl_name))
{
${$sort.'_alatt_ezek_vannak'}[] = $doboz; //itt keletkezik ékezetes változónév
}

}


Félreértés ne essék, működni hibátlanul működik eddig.
 
1

Amíg a változónév karakterei

Hidvégi Gábor · 2014. Már. 30. (V), 12.03
Amíg a változónév karakterei benne vannak az ANSI készletben, nem lesz gond. Ha biztosra akarsz menni, érdemes a menüpontokat másképp azonosítani, például egy számmal vagy olyan karaktersorral, amiben csak az angol ABC betűi vannak, hisz még csak a 21. században vagyunk, meg egyébként is számos előnye van ennek a megközelítésnek, de erről már olvastál.
2

Bár lehet olyat mondok, amit

bamegakapa · 2014. Már. 30. (V), 18.39
Bár lehet olyat mondok, amit te szigorúan nem akarsz hallani, de azért leírom. Én a helyedben nem csinálnék ilyet, és nem is javasolnám.

Egyrészt mert lehetnek problémák, ha olyan karakter van az adatbázisban, ami nem felel meg a Gábor által linkelt kritériumoknak. Nem feltétlenül te irányítod, mi kerül az adatbázisba. Másrészt nem egy nagy ötlet a globális névteret szennyezni számtalan automatikusan generált változóval, függetlenül attól, hogy 2014 van vagy sem.

Én a helyedben egy asszociatív tömböt használnék, annak a kulcsai sztringek, abba azt raksz, amit akarsz, nem szennyezi a globális névteret, a kódodon se kell sokat variálni és azt a jól eső érzést is megadja, hogy a szöget kalapáccsal verted be. Még jobb, ha Gábor tanácsát fogadod meg, és numerikus id-ket használsz. Szerintem amikor ilyen dinamikus változóneveket használsz, akkor eleve ott motoszkálhat az érzés, hogy itt valami nem stimmel, kell legyen jobb megoldás.

Annyit tennék még hozzá, mint mindig, hogy vigyázni kéne az SQL injectionre, a mysql_ függvényeket ne használd (PDO, mysqli helyette), valamint biztos vagyok benne, hogy egy lekérdezéssel is meg lehetne oldani, amit itt csinálsz, tudom, nem ez volt a kérdés, azért szóltam :).
5

Nem túl paranoiás ez a félelem

53éves_nagypapa · 2014. Már. 30. (V), 23.19
A betörésektől ?

Kedves bamegakapa.
Olvastalak máshol is, több helyen nagyon ajánlod a biztonságos megoldásokat.
Kérlek, nézz már rá légyszi az általam szerkesztett oldalnak.
Betörés, meg ilyesmi szempontból - ha van kedved.

Három hónapig tanultam a php-t, háromig az sql-t.
Autodidakta. Például itt a weblabor-on is sokat tanultam tőletek.
Aztán raktam össze ezt.



Nincs ott semmi tartalom még. Ezen az oldalon építem össze a megszerzett tudásom.
Nem gond, bármi is történhet az oldallal. Nem lesz kár belőle.

Be lehet törni ?

Lépj be és hozz létre egy új admint.

Akkor elhiszem, hogy nem biztonságos.

nincs mysqli és nincs pdo és nincs egy árva stripslashes se használva.

Van persze más védelem bőven.

Fél évvel ezelőtt raktam össze.
(Ma már máshogy csinálnám, de szerintem nem lehet betörni)
6

Nem vagyok nagy szaki abban,

bamegakapa · 2014. Már. 31. (H), 00.18
Nem vagyok nagy szaki abban, hogy egy oldalra betörjek (jó, egy SQL injectiont valószínűleg ki tudnék használni, ha nagyon kéne). Épp ezért igyekszem a legjobb tanácsokat megfogadni az ilyesmivel kapcsolatban, neked is ezt javaslom. Ha minden oldalamat csak annyira védeném be, hogy én ne tudjak betörni, az elég haszontalan védelem lenne :).

Amúgy a szakik azt mondják, sosem lehetsz elég paranoiás, ha biztonságról van szó :). Amiket én mondok, azok elég alapvető dolgok, nem kell hozzá paranoia.

Ha már mindenképpen ragaszkodsz a mysql_ függvényekhez, akkor használd a mysql_real_escape_string függvényt. De kezdőként jobban járnál a PDO-val vagy a mysqli-vel, illetve a prepared statementekkel.

Én mindenesetre szurkolok, jó tanulást.
8

Buntetojogi

janoszen · 2014. Már. 31. (H), 10.35
Had idezzek:

Aki számítástechnikai rendszerbe a számítástechnikai rendszer védelmét szolgáló intézkedés megsértésével vagy kijátszásával jogosulatlanul belép, vagy a belépési jogosultsága kereteit túllépve, illetõleg azt megsértve bent marad, vétséget követ el, és egy évig terjedõ szabadságvesztéssel, közérdekû munkával vagy pénzbüntetéssel büntetendõ.


Forras: Btk. 300 / C.§

Szerintem senkit ne buzdits arra, hogy probalkozzon feltorni barmit, meg akkor sem, ha a tied.

Ami a biztonsagot illeti, jobban teszed, ha szamtalan szakember sok eves/evtizedes tapasztalatara hallgatsz es elhiszed, hogy nem vagy annyira jo a vedelmi mechanizmusok irasaban, hogy megengedhesd magadnak azt a luxust, hogy nem hasznalsz *real_escape_stringet.

Ami a feltores veszelyet illeti, mindossze egy megharagudott es a tettei kovetkezmenyeit felmerni keptelen tag kell hozza.
3

Nagyon köszönöm ..

53éves_nagypapa · 2014. Már. 30. (V), 22.28
.. hogy válaszoltatok.

Pontosan erről van szó, érzem én, hogy nem teljesen oké ez, de kíváncsi voltam mások véleményére.

Ezt az ékezetes változóneveket nem így terveztem, csak egyszercsak ez lett.
Magam is meglepődtem, hogy működik.

52 évesen vágtam bele egy éve a webprogramozás megtanulásának, tehát kezdő vagyok.
(Annyira élvezem, hogy az asszony el akar költözni. Játékfüggőség élmény, napi 18óra, nem lehet kirobbantani a gép mögül.Válás lesz belőle.)

Minden érdekel és baromi jó dolgokat mondotok.

Eredetileg úgy kezdtem bele ahogy mondod bamegakapa.
Egy lekérdezés, aztán kigyűjtöm ami kell.
Ráadásul minden menunek van saját id-je is.
Az volt a baj, hogy az asszociatív tömbökben eltévedtem valahol, és egyszerűbb megoldást akartam.

Meg is csináltam és működik is -, csak egy idő után esett le hogy ékezetes változónevek is keletkezhetnek - teszt közben ékezettelen volt minden.
Aztán kipróbáltam ékezetekkel és meglepett, hogy még mindíg működött, de éreztem hogy nem frankó ez így, hisz anno megtanultam a változó nevekkel kapcsolatos tudnivalókat.

Külön köszönet hogy felhívtad a figyelmem SQL injection-re, PDO, mysqli -re.
Ezekről semmit nem tudok még, na most van minek utánanéznem.
4

Erről a névtér szennyezésről ....

53éves_nagypapa · 2014. Már. 30. (V), 22.35
... még mondhatnál valamit.

Erről még nem hallottam.
Ez miért baj, ha sok automatikusan generált változó keletkezik ?

Ezek nem semmisülnek meg a következő lapbetöltésnél ?

Nem session változók.

Mit kell erről tudni?
7

Megsemmisülnek a lekérés

bamegakapa · 2014. Már. 31. (H), 00.24
Megsemmisülnek a lekérés végén, igen. A baj az ilyesmivel, hogy egyrészt megnöveli a névütközés esélyét (bár elég egyedi, hosszú neveket használsz), amiből furcsa, nehezen felderíthető hibák származnak, másrészt az olvashatóságot, a program könnyű átláthatóságát rontja.

Fontos, hogy ha mondjuk pár hónapig máson dolgozol, aztán visszatérsz ehhez a projekthez, hogy akkor is átlásd, könnyen megértsd, mi miért és hogyan van. Az ember ilyenkor azt gondolja, úgyis át fogja látni, mert még a fejében van az egész, aztán később jön rá, hogy mégse :). Nekem megvolt ez az élmény, most már igyekszem inkább betartani a "best practice"-eket, illetve csak indokolt esetben áthágni őket.