Kérdések és válaszok

Indította DoomKiller, 2010 augusztus 10, 06:46:54 DÉLUTÁN

Előző téma - Következő téma

NevemSenki

#270
Megfogadtam a tanácsodat, és átvittem az egészet $_SESSION alapokra. A többin még dolgozok, mert az ötlet jó! Köszönöm a választ.

Így oldottam meg:

A conn.php-ban megfogtam egy If-el a $_GET['nyelv'] értékét, majd átadtam a $_SESSION['nyelv'] változónak.
A nyelvek.php-t is átalakítottam, hogy ne a GET-et, hanem a $_SESSION['nyelv'] -et nézze.

conn.php részlet:

<?php
if(isset($_GET['nyelv']))
{
$nyelv $_GET['nyelv'];

$_SESSION['nyelv'] = $nyelv;
}
?>


nyelvek.php
<?php
$nyelvek 
= array(
    
'en' => 'english',
    
'hu' => 'magyar',
);
if (isset(
$_SESSION['nyelv']) AND array_key_exists($_SESSION['nyelv'], $nyelvek))
{
    include 
'./nyelvek/' $nyelvek[$_SESSION['nyelv']] . '.php';
}
else
{
    include 
'./nyelvek/magyar.php';
}
?>


Így csak egy alkalommal kell hozzáadnom a címhez a ?nyelv=xx -et GET-el, amit egy linekkel oldottam meg, a láblécben.

<a href="?nyelv=en" tabindex="100">
Angol (EN)
</a>


Köszönöm a segítséget.

Üdv.: Senki

Ui.: Azért írom le minden egyes alkalommal az összes ide kapcsolódó dolgot, mert ha valaki ezt megnézi, és netán ki szeretné vitelezni, akkor könnyebb legyen megérteni, és a későbbiekben használni, mert nem tudni, hogy az illető, milyen alap tudással jön ide, lehet hogy egy kis részből is megérti, de lehet hogy nem.
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

hunti

#271
A fordító függvényt valahogy így gondolom:
Kód (php) Kijelölés
<?php
function nyelv($be) {
if(
array_key_exists($be,$_SESSION['lang'])) {
return 
$_SESSION['lang'][$be];
}
else {
$be2=mysql_real_escape_string($be);
mysql_query("INSERT INTO `languages` (`nyelv`,`magyar`,`fordit`,`boolean`) VALUES ('".$_SESSION['nyelv']."','".$be2."','".$be2."','1')");//betesszük sql-be, első mező tárolja hogy milyen nyelvű fordítás, második a fordítandó magyar szöveget, harmadikba magyarul betesszük a szöveget, és később ide kell majd beírni a fordítást, a negyedik mező boolean, a fejlesztőknek egy jelzés hogy ezt a bejegyzést még fordítani kell
$_SESSION['lang'][$be]=$be//következő alkalommal így nem akarja újra beszúrni sql-be
return $be;
}
}
?>

és valahogy így működne print(nyelv("Üdvözlök mindenkit weboldalunkon!")); print(nyelv("udv_mindenkinek_a_weboldalon"));

nyelvek.php else ágába nem árt egy $_SESSION['nyelv']="hu";

a nyelvi fájlt pedig fixen be lehetne includolni egyszer, amiben amiben ellenőrzöd hogy be lett-e már töltve a nyelvi adatbázis sessionba, pl $_SESSION['lang']['loaded']==1, aminek persze akkor adsz ilyen értéket amikor betöltöd a nyelvi db-t, illetve betöltéskor így nézne ki a dolog $_SESSION['lang']['Fordítandó szöveg']="Fordított szöveg"
Ezzel már csak az a kérdés hogy így tud-e működni a dolog, mert nem próbáltam soha hogy tömb indexe lehet-e szöveg, írás jelekkel meg minden :)

Közben átgondoltam a dolgot, valószínűleg hülyeséget mondtam, valahogy így kellene megoldani: $_SESSION['lang']['forditando_szoveg_egyszeruen']="Fordított szöveg";

Reconka

#272
szerintem  nem erdemes escapelni a bemenetet.
session helyett cookieba tarolnam  a nyelvi beallitasokat, hogy
miert?
- sima vendeg mikor meglatogatja az oldalt lehetosege legyen  beallitani  a nyelvet (es  ha kilep  es  1 het mulva visszajon akkor is emlekezzen erre [session cookie csak  egy bizonyos ideig hasznalhato])
- ha beloginolt user atallitja nagy nehezen a nyelvet, es belep mas geprol, esetleg kesobb be akar lepni (mikor a session lejar) akkor ujbol a default   nyelvbeallitasokkal talalja szembe  magat..

izles szerint  html5 local storage-t is lehet hasznalni, igy cookie sem kell

+ valami

a forditando  dolgokat  nem session, illetve cookie tombbe  tarolnam: (gondold el, ha tobb ezer szavas tombot kell  atloknod user gepere..  baromsag.. sessionba, vagy cookieba csak a nyelv azonositot tartoljuk, nem magat a tombot) { persze korlatlan net van  es 100 trillio  petabyte-os savszelessegek, de ha mobilrol bongeszik, vagy roamingol az illeto akkor minden kilobyte szamit}

hunti

Escapelés csak a saját megszokásom, minden sql lekérdezésben használom, sokszor sajnos csak megszokásból, mert így biztonságos, de jelen esetben el lehet hagyni.

A nyelv cookieban való tárolása tényleg megoldás, de nem arra hogy minden oldalbetöltéskor a felhasználó gépéről töltsük be (ugyan minimális a mérete, de ahogy te is mondtad spóroljunk a felhasználó sávszélességével). Tehát első lapletöltéskor amikor nincs definiálva sessionban akkor érdemes megnézni hogy cookie-ban van-e, illetve nyelv változtatáskor le kell tárolni cookieba. Ahogy te is mondtad, hosszú távra tényleg csak cookie-ban (vagy lassan érdemes html5 storaget használni). Viszont abban nem volt igazad hogy a session a felhasználó gépén tárolódik, ugyanis a szerver memóriájában (illetve fájlban) tárolódik, épp ezért biztonságosabb mint a cookie (cookie tartalmát tudja változtatni a felhasználót, sessionét nem). És mivel jó esetben a session memóriában marad két lapbetöltés között, nem kell a php-nak újra fájlból vagy adatbázisból kiolvasnia a teljes szótárat, mert már ott van a memóriában sessionként. Sessionnak egyetlen része van ami a felhasználó gépén tárolódik, egy unique id, de ezt úgyis beolvassa a felhasználótól a php ha sessionokat használunk, és mivel a mérete fix nem okoz extra adatforgalmat a felhasználónak.

Reconka

#274
Idézetet írta: hunti Dátum 2012 november 07, 04:50:02 DÉLUTÁN
Escapelés csak a saját megszokásom, minden sql lekérdezésben használom, sokszor sajnos csak megszokásból, mert így biztonságos, de jelen esetben el lehet hagyni.

A nyelv cookieban való tárolása tényleg megoldás, de nem arra hogy minden oldalbetöltéskor a felhasználó gépéről töltsük be (ugyan minimális a mérete, de ahogy te is mondtad spóroljunk a felhasználó sávszélességével). Tehát első lapletöltéskor amikor nincs definiálva sessionban akkor érdemes megnézni hogy cookie-ban van-e, illetve nyelv változtatáskor le kell tárolni cookieba. Ahogy te is mondtad, hosszú távra tényleg csak cookie-ban (vagy lassan érdemes html5 storaget használni). Viszont abban nem volt igazad hogy a session a felhasználó gépén tárolódik, ugyanis a szerver memóriájában (illetve fájlban) tárolódik, épp ezért biztonságosabb mint a cookie (cookie tartalmát tudja változtatni a felhasználót, sessionét nem). És mivel jó esetben a session memóriában marad két lapbetöltés között, nem kell a php-nak újra fájlból vagy adatbázisból kiolvasnia a teljes szótárat, mert már ott van a memóriában sessionként. Sessionnak egyetlen része van ami a felhasználó gépén tárolódik, egy unique id, de ezt úgyis beolvassa a felhasználótól a php ha sessionokat használunk, és mivel a mérete fix nem okoz extra adatforgalmat a felhasználónak.

nem erted:

elmondom  parasztosan:

angol boltba,  minden bemeno kulfoldi embernek adunk szotarat, ami neha  baromira nehez, csak a biztonsag miatt meg  ezekrol a szotarakrol masolatokat is keszitunk szamunkra..

vagy a normalisabb megoldas:
bemeno boltba megkerdezzuk, hogy milyen nyelvu az ember, az embereknek azonositot adunk a magyar emberek HU -t kapnak az oroszok RU -t .. ha  nem tudnak elolvasni  valamit felmutatjak a tablajukat es mi megmondjuk hogy mi  az adott nyelven   az a dolog...


Edit:

Session:  specialis cookie, mivel session id-t es egyeb nyalanksagot tarolni kell..   Session specialis cookie, de bizony egy edes sutikerol beszelunk, ami bongeszo kilepesekor  automatikusan torlodik

hunti

Te érted félre, nem mondtam hogy a biztonság miatt tölteném be memóriába a MEGFELELŐ szótárat (tehát mindenkinek csak azt a nyelvet ami kell), hanem azért hogy a memóriában legyen, és megspóroljak vele egy kis disk io-t, ami egyébként az oldal betöltődését is gyorsítja, tehát előbb szabadulnak fel az erőforrások, gyorsul a rendszer. Bár az is igaz hogy közben ott foglal a memóriában a szótár sok példányban (ahány aktív user van), a futási időket tekintve feleslegesen, mégis nagyságrendekkel olcsóbb a memória mint a disk io. Ha utána olvasol ezeknek megfelelő helyeken te is rájössz.

Persze jelentősen nagy forgalmú oldalaknál ezt nem így csinálják, ott már egy egészen más fajta cache-t kell használni a sűrűn betöltött anyagok kiszolgálásához, de ez már erősen más téma, és jelen felhasználási célra ez így is tökéletes, nem kell túlbonyolítani.

Reconka

Idézetet írta: hunti Dátum 2012 november 07, 05:23:43 DÉLUTÁN
Bár az is igaz hogy közben ott foglal a memóriában a szótár sok példányban (ahány aktív user van), a futási időket tekintve feleslegesen, mégis nagyságrendekkel olcsóbb a memória mint a disk io. Ha utána olvasol ezeknek megfelelő helyeken te is rájössz.
alapba /tmp konyvtarba szorja a sessionokat, es nem a memoriaba (Memcached ).. lehet  nalad mar memoriaba szorja a sessionokat
persze lehet ramdisket hasznalni stb..

bar  lehetne APC -rol beszelni (nem a varosrol, vagy a aramvedelmi dolgokrol  beszelek).


hunti

Ezzel már erősen elkanyarodtunk a témától, befejezés képen két dolgot fűznék hozzá hogy egyrészt így van ahogy mondod, és lehet használni memcache-t, vagy mountolhatunk /tmp (vagy ahova beállítottuk) alá ramdisket, és használhatunk más egyéb feltalált és fel nem talált cachelési megoldásokat.

Másrészt viszont nem tetszik nekem (ez egyéni vélemény) ezen utóbbi néhány hozzászólásod módja. Én fel dobtam ötlet szintjén egy megvalósítási formát, amihez te az elején hozzá adtál néhány ötletet amely tényleg hasznos, de lehetett volna ezt kevésbé kevésbé lekezelően, kevésbé sértőn ("nem érted: elmondom parasztosan"), és kevésbé e-pénisz lengetően. Nem kell feltétlenül felvágni hogy te többet tudsz (ami lehet hogy úgy van, lehet hogy nem, esélyes hogy van amiben az egyikünk, van amiben másikunk jobb), hozzá lehet szólni úgy hogy javaslatként, értelmes beszélgetéssel átbeszéljük hogy pl az én megoldásom miért nem jó, és felhozhatsz egy alternatív megoldást ami szerinted jó. Ez így lenne hatásos, ennek így kellene működnie. Tehát ha van valami hasznos közölni valód, ötleted, azt várjuk szívesen, de ellenségeskedésre nincs szükség.

És végezetül szeretnék elnézést kérni ha esetleg belőlem is előjöttek az előbb említett negatív tulajdonságok, de én elsősorban szeretnék segíteni, másokkal megosztani a tudásomat és ötleteimet és nem bánom ha valakinek más a véleménye, esetleg hibát talál a munkámban, vagy csak másképp oldaná meg a problémát, csak az illető tegye ezt értelmes keretek között.

Szóval ha neked van jobb, vagy más megoldási javaslatod, csak tessék, tedd közzé ha úgy gondolod.

Anubisss

Nem ertem, hogy lehetett ide kilyukadni, hogy igy- meg ugy cache-eles es performancia noveles, stb. :D
Nem hiszem, hogy egy nagy terhelesu rendszer fejleszteserol lenne szo... :D


Az szerintem elegge evidens, hogy egy ilyen "tobb nyelvu" dolog megvalositasanal csak a nyelv ID-jet kell eltarolni kliens oldalon, ha egyaltalan szeretnenk valamit tarolni kliens oldalon.
Azt pedig, hogy cookie-ban vagy eppen valahol az eterben szeretnenk tarolni, az mar szerintem csak izles kerdese.

Persze siman lehet olyan, hogy csak egy adott tarolasi modszer johet szoba x-y erv miatt, de ez talan nem az a hely... :D

Amugy a logika valami hasonlot diktal nekem:
- Vendeg: client side, hogy meglegyen kesobb is
- User: server side, hogy masik gepen, logout, stb utan is megmaradjon a beallitas


UI..:
Django utan annyira ronda ez a PHP es az egesz szemlelet, hogy nyugodt szivvel mondom, hogy PHP a satan gyermeke es at kell terni valami uj hitre. :)
Háromfajta ember van. Aki tud számolni és aki nem.

zerus

Idézetet írta: Anubisss Dátum 2012 november 08, 03:05:28 DÉLELŐTT
nyugodt szivvel mondom, hogy PHP a satan gyermeke es at kell terni valami uj hitre. :)

El tudnád magyarázni, hogy ezek közé hogy lehet beerőszakolni egy egyenlőség jelet?

Reconka

Anubisss: MVc jo dolog, foleg nagyobb projekteknel,  konyebben karbantarthato,  skalazhato  stb.
nem hiszem, hogy van "jobb" programozasi  nyelv..
phpnak vannak elonyei, ugyanugy  a rubynak, perlnek, aspnek  es  meg sorolhatnam.

Kedves Hunti:
mivel nem gyakran  latogatsz el hozzank, igy nem ismered  neha bunkonak tuno stilusomat, szoval  nagyon sajnalom, hogy igy felkaptad a vizet



Szeretnem atregisztralni a domainemet.. A tarhelyem lejart, sajnos nem sikerult sehogysem meghosszabbitanom, nem sikerult Huntival  beszelnem semmifele formaba.

a Kerdesem, hogy tudnam megoldani?

Elore is koszonom a valaszokat

NevemSenki

Egyenlőre maradtam ennél a $_SESSION-os dolognál. Működőképes. Most sajna nem volt időm foglalkozni a dologgal, mert kisebb bajság lépett fel. Amit pedig lentebb beszéltetek, az nekem még magas, de miest lesz időm ( ami hétfő ) akkor megpróbálom megérteni, és utánanézek a dolognak.
Köszönöm a válaszokat, és az ötleteket!

Üdv.: Senki

Kérdések válaszok Topic. Ebből indulnák ki.
Én nekiálltam valaminek, pontosan 0 tudással. Én sosem értettem a PhP-hez, de nekem most ez kell.
A Google és a ti segítségetekkel próbálom tanulni ezt az egészet, próbálom elsajátítani a dolgokat.
Én villanyszerelő vagyok, szóval elég messze állok ettől az egésztől.
Ahogy visszanézem a dolgokat, én kérdeztem valamit, javaslatot kértem, Hunti válaszolt, megoldásokat javasolt, és adott egy kis leírást is a gondolatmenet mellé, hogy érthető legyen. Ezzel szemben Reconka, bedobta a megoldást ezzel a szöveggel:
nekem tokeletesen mukodott 4 erteket adtam meg, es 4  insert tortent.  Biztos hogy te nem neztel el semmit?

Ha ezt valaki megnézi, és neki is ez a problémája támad mint nekem, ebből aztán semmit nem fog megérteni, csak másol és beilleszt, maximum.

Zerus volt az ember, akitől megkérdeztem, és olyan szinten elmagyarázta, kikommentezte minden részét, hogy érthető legyen.
( Ő jobb megoldást írt mint te, de ebbe nem megyek bele!! )

Most pedig " elmondom  parasztosan: " dolog is előkerült.
Attól hogy te azt hiszed, hogy többet tudsz ( mert ebben biztos sosem lehetsz ) attól nem te vagy az Isten. És ezt jól jegyezd meg.

Hunti írta:

Nem kell feltétlenül felvágni hogy te többet tudsz (ami lehet hogy úgy van, lehet hogy nem, esélyes hogy van amiben az egyikünk, van amiben másikunk jobb), hozzá lehet szólni úgy hogy javaslatként, értelmes beszélgetéssel átbeszéljük hogy pl az én megoldásom miért nem jó, és felhozhatsz egy alternatív megoldást ami szerinted jó. Ez így lenne hatásos, ennek így kellene működnie. Tehát ha van valami hasznos közölni valód, ötleted, azt várjuk szívesen, de ellenségeskedésre nincs szükség.

És ha nem értenéd, akkor elmondom parasztosan:

Nem te vagy az Isten! Mert ennyi erővel, én is beszélhetnék veled így, csak éppen elektrotechnika téren. Mert én letettem az asztalra egy olyan gépet, amit ha bedugsz a konnektorba, megáll a villanyóra, miközben minden berendezést használsz a házban.
Ha jó vagy valamiben, arra nem kell felvágni...

Ez a beszólás nálam nagyon kivágta a biztosítékot, és ezt csak miheztartás végett írtam.

És magasról szarok a bunkónak tűnő stílusodra, mert ez itt nem óvoda, ahol még azt is elnézik hogy beszarsz a délutáni játék közben.
Csak a Puffin ad neked erőt, és mindent lebíró akaratot!

Anubisss

Idézetet írta: zerus Dátum 2012 november 08, 09:34:21 DÉLELŐTT
El tudnád magyarázni, hogy ezek közé hogy lehet beerőszakolni egy egyenlőség jelet?

WTF? :)
Nem ertem milyen egyenloseg jel kene.
A szar, hogy lehetne = a joval? Ugy megis?
Háromfajta ember van. Aki tud számolni és aki nem.

zerus

Idézetet írta: Anubisss Dátum 2012 november 08, 02:15:02 DÉLUTÁN
WTF? :)
Nem ertem milyen egyenloseg jel kene.
A szar, hogy lehetne = a joval? Ugy megis?

A php egy programozási nyelv, az MVC meg egy szerkezeti minta (nem egy nyelv, így nem lehet összehasonlítani a kettőt). Ezért nem értem hogy hogy kerülnek ellentétbe egymással?

Nagyon is jól el vannak együtt, lásd: codeigniter, smarty

Anubisss

Jaaa, igen erre en is rajottem... :D

Termeszetesen az _alap_ PHP-rol beszeltem, a CI peldaul egesz jo.

(De hat eszre kellett volna venni az erosen _flame_ jelleget az irasomban. :) )
Háromfajta ember van. Aki tud számolni és aki nem.

Powered by EzPortal