Archívum - 2011
június 22
Setting up a LAMP on a VirtualBox
Egy teljes, A-tól Z-ig leírás arról, hogyan telepítsünk VirtualBoxra egy teljes értékű linuxos, PHP-s fejlesztői környezetet.
■ Bejelentkezési rendszer megvalósítása
Üdv!
Egy loginrendszeren dolgozom, amely az automatikus bejelentkezés funkcióval is fel lenne vértezve. Szeretném az egészet a lehető legoptimálisabban elkészíteni, azaz ne okozzon felesleges terhelést, de legyen kellően biztonságos. Ezzel kapcsolatban merültek fel megvalósításbeli kérdéseim.
1. Munkamenetkezelés: fájlokon vagy adatbázison alapuljon?
Több helyen találkoztam már azzal az ötlettel, hogy a PHP alapértelmezett fájlokon alapuló munkamenetkezelését átültetik adatbázisra.
(Van mondjuk egy sessions tábla, egy sor egy munkamenet adatait tartalmazza, az oszlopok pedig a munkamenet-változók plusz a session id. Így ha van a látogatónak session_id-je, akkor oldalletöltésenként legalább egy sql-lekérdezésre van szükség a munkamenethez tartozó adatok lekérdezése miatt; sőt ha az adatbázisban szeretnénk meghosszabbítani a munkamenet lejárati idejét, akkor 2 lekérdezésre is szükség lehet oldalletöltésenként.)
Ezt a két módszert (adatbázison illetve alapértelmezetten fájlokon alapuló) szeretném összehasonlítani, amire pedig konkrétan kíváncsi lennék:
(a) Melyik produkál gyorsabb sebességet, és ez hogy változik látogatottságtól függően (már ha változik)?
(b) Az adatbázis vagy a fájlkezelés(?) adja meg előbb magát, ha a terhelés növekedik? (nyilván nem néhány látogatóra gondolok)
2. Automatikus bejelentkezés: 1 cookie vagy 2 cookie?
Automatikus bejelentkezés nélkül könnyen elboldogultam: sikeres bejelentkezéskor indítottam egy sessiont, belepakoltam a szükséges adatokat a felhasználóról, plusz némi ellenőrző adatot (user agent + lejárat).
Amikor az automatikus bejelentkezésen törtem a fejem, az első ötletem az volt, hogy mért ne hosszabbítanám meg egyszerűen a session cookie lejáratát (ne a böngésző bezárásakor, hanem mondjuk x nap múlva járjon le), a munkamenet pedig ugyanazokat az adatokat tartalmazná, mint automatikus bejelentkezés nélkül. Ez nem tudom mennyire elegáns, megszokott megoldás, mondjátok meg Ti!
Egy loginrendszeren dolgozom, amely az automatikus bejelentkezés funkcióval is fel lenne vértezve. Szeretném az egészet a lehető legoptimálisabban elkészíteni, azaz ne okozzon felesleges terhelést, de legyen kellően biztonságos. Ezzel kapcsolatban merültek fel megvalósításbeli kérdéseim.
1. Munkamenetkezelés: fájlokon vagy adatbázison alapuljon?
Több helyen találkoztam már azzal az ötlettel, hogy a PHP alapértelmezett fájlokon alapuló munkamenetkezelését átültetik adatbázisra.
(Van mondjuk egy sessions tábla, egy sor egy munkamenet adatait tartalmazza, az oszlopok pedig a munkamenet-változók plusz a session id. Így ha van a látogatónak session_id-je, akkor oldalletöltésenként legalább egy sql-lekérdezésre van szükség a munkamenethez tartozó adatok lekérdezése miatt; sőt ha az adatbázisban szeretnénk meghosszabbítani a munkamenet lejárati idejét, akkor 2 lekérdezésre is szükség lehet oldalletöltésenként.)
Ezt a két módszert (adatbázison illetve alapértelmezetten fájlokon alapuló) szeretném összehasonlítani, amire pedig konkrétan kíváncsi lennék:
(a) Melyik produkál gyorsabb sebességet, és ez hogy változik látogatottságtól függően (már ha változik)?
(b) Az adatbázis vagy a fájlkezelés(?) adja meg előbb magát, ha a terhelés növekedik? (nyilván nem néhány látogatóra gondolok)
2. Automatikus bejelentkezés: 1 cookie vagy 2 cookie?
Automatikus bejelentkezés nélkül könnyen elboldogultam: sikeres bejelentkezéskor indítottam egy sessiont, belepakoltam a szükséges adatokat a felhasználóról, plusz némi ellenőrző adatot (user agent + lejárat).
Amikor az automatikus bejelentkezésen törtem a fejem, az első ötletem az volt, hogy mért ne hosszabbítanám meg egyszerűen a session cookie lejáratát (ne a böngésző bezárásakor, hanem mondjuk x nap múlva járjon le), a munkamenet pedig ugyanazokat az adatokat tartalmazná, mint automatikus bejelentkezés nélkül. Ez nem tudom mennyire elegáns, megszokott megoldás, mondjátok meg Ti!
ul / li behúzás probléma
Üdv mindenki!
Hosszas próbálgatás és google használat után sem sikerült megoldanom egy problémát. Személtetem:
http://debrock.hu/hirek/131/uj-szolgaltatas-a-rock-ness-ben
http://debrock.hu/hirek/81/iii-muszak-fanzine-no-18
Az első linknél olyan formában van az unordered listem, amilyenben szeretném, a másodiknál viszont a pirosan keretezett részben rácsúsznak a pöttyök a képre.
A rá vonatkozó css rész mindössze ennyi:Próbáltam inside + text-indent variációkat, padding állítást, de nem jutottam eredményre, mivel általában az első (jó) változat is elcsúszott jobbra. Vagy esetleg a képet kéne másképp odatenni? (most sima img elem, align=left, és inline van neki adva egy 10px jobb padding)
Bármi ötletet vagy linket szívesen fogadok, előre is köszönöm!
■ Hosszas próbálgatás és google használat után sem sikerült megoldanom egy problémát. Személtetem:
http://debrock.hu/hirek/131/uj-szolgaltatas-a-rock-ness-ben
http://debrock.hu/hirek/81/iii-muszak-fanzine-no-18
Az első linknél olyan formában van az unordered listem, amilyenben szeretném, a másodiknál viszont a pirosan keretezett részben rácsúsznak a pöttyök a képre.
A rá vonatkozó css rész mindössze ennyi:
ul {
list-style: disc outside;
margin: 0;
padding: 0 0 0.5em 16px;
}
Bármi ötletet vagy linket szívesen fogadok, előre is köszönöm!
Hírlevél küldő felület.
Hali! Épp egy hírlevélküldőn ügyködöm és az lene a kérdésem, hogy a formot hogy tudom úgy kialakítani, hogy egy gombal a kiválasztott e-mail címeket berakja a címzett mezőbe??? Úgy nézne ki, hogy oldalt lennének egy "dobozban" a címek és egy ilyen : >>
gombal lehetne átrakni a címeket. Sejtésem szerint a buttonnak kéne egy onclick esemény de nem vagyok benne biztos és azt se tudom h azt a dobozt mivel csináljam meg.
■ gombal lehetne átrakni a címeket. Sejtésem szerint a buttonnak kéne egy onclick esemény de nem vagyok benne biztos és azt se tudom h azt a dobozt mivel csináljam meg.
IP input box...
Hali!
Az lenne a kérdésem,hogy hogyan lehet IP input boxot csinálni.
És az úgy működne,hogy A gép kitölti az ip címhelyét(ponttal,számmal )és a felhasználó nem tud hozzányúlni.
Tehát minden megvan (form post)Csak ez kéne.
Előre is köszi mindent!
■ Az lenne a kérdésem,hogy hogyan lehet IP input boxot csinálni.
És az úgy működne,hogy A gép kitölti az ip címhelyét(ponttal,számmal )és a felhasználó nem tud hozzányúlni.
Tehát minden megvan (form post)Csak ez kéne.
Előre is köszi mindent!
Adatmódosítás PHP-ből?
Adott egy módosítandó elem az adatbázisban. Betöltöm a módosítható adatokat és kirakom a user elé. User átír benne amit akar és megnyomja az OK gombot.
Program előkeresi a megfelelő sor(oka)t és módosítja őket. Ö... igen... és mi van, ha közben egy másik user ugyanezeket az adatokat már módosította?
Ha nem webről lenne szó, akkor az adatok betöltésekor lockolnám őket (húsz éve, négyfelhasználós rendszeren működött :-) ), de itt csak addig tart a kapcsolat a klienssel, amíg letöltődik az oldal (nem használok perzisztens adatbázis kapcsolatokat), így ha lockolnám is, a lap letöltésének végén a lock megszűnik.
Ilyenkor mi lenne a kulturált megoldás?
Első menetben azt találtam ki, hogy egy timestamp mezőt használok on update current_time-mal. Mielőtt módosítanám, lock, kiolvasom ezt a mezőt, ellenőrzöm, hogy a memóriában lévő értéke egyezik-e a frissen kiolvasottal, ha nem, hiba, ha igen, update, commit, unlock.
Másodikra, hogy timestamp, de triggerből update-elve, mert két timestamp mezőre nem tehetek default/on update-t. De ez sem jó, mert a timestamp csak másodperces bontással tárolódik legnagyobb bánatomra. Marad, hogy mondjuk egy tinyint mező, triggerből automatikusan növelve, túlcsordulás esetén nullázva. Kérdés, hogy ez mennyire számít kulturált megoldásnak? (megfordult a fejemben, hogy checksumot gyártani, de az túlságosan megnövelné a tárolt adatok mennyiségét)
ui: bevallom, most nem vittem túlzásba a keresgélést, este folytatom a kutatást... A PHP/Mysql könyvemben (Hogyan építsünk webáruházat?) nem találtam konkrét megoldást erre - persze lehet, hogy felületes voltam.
■ Program előkeresi a megfelelő sor(oka)t és módosítja őket. Ö... igen... és mi van, ha közben egy másik user ugyanezeket az adatokat már módosította?
Ha nem webről lenne szó, akkor az adatok betöltésekor lockolnám őket (húsz éve, négyfelhasználós rendszeren működött :-) ), de itt csak addig tart a kapcsolat a klienssel, amíg letöltődik az oldal (nem használok perzisztens adatbázis kapcsolatokat), így ha lockolnám is, a lap letöltésének végén a lock megszűnik.
Ilyenkor mi lenne a kulturált megoldás?
Első menetben azt találtam ki, hogy egy timestamp mezőt használok on update current_time-mal. Mielőtt módosítanám, lock, kiolvasom ezt a mezőt, ellenőrzöm, hogy a memóriában lévő értéke egyezik-e a frissen kiolvasottal, ha nem, hiba, ha igen, update, commit, unlock.
Másodikra, hogy timestamp, de triggerből update-elve, mert két timestamp mezőre nem tehetek default/on update-t. De ez sem jó, mert a timestamp csak másodperces bontással tárolódik legnagyobb bánatomra. Marad, hogy mondjuk egy tinyint mező, triggerből automatikusan növelve, túlcsordulás esetén nullázva. Kérdés, hogy ez mennyire számít kulturált megoldásnak? (megfordult a fejemben, hogy checksumot gyártani, de az túlságosan megnövelné a tárolt adatok mennyiségét)
ui: bevallom, most nem vittem túlzásba a keresgélést, este folytatom a kutatást... A PHP/Mysql könyvemben (Hogyan építsünk webáruházat?) nem találtam konkrét megoldást erre - persze lehet, hogy felületes voltam.
június 22
onclick()
sziasztok azt próbálom meg csinálni a rákattintok megnyissa ha még egyszer eltűnjön az ablak.
A gomb:ajax része:hogy tudnám megoldani segítségetek előre köszönöm:)
■ A gomb:
<div id="aljara"><a onclick="valtozas();"><img height="50" src="ikon/!.png"border="0"/></a></div>
function valtozas()
{
var xmlhttp;
var str = ++;// ez nem jó
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if(str == 1)
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("valtozas_ablak").innerHTML=xmlhttp.responseText;
}else{
document.getElementById("valtozas_ablak").innerHTML = '<img src="ajax-load.gif" height="30" weight="45">';
}
}
if(str == 2)
{
document.getElementById("valtozas_ablak").innerHTML="";
}
}
xmlhttp.open("GET","valtozas_lekerdezes.php",true);
xmlhttp.send();
}
</script>
jQuery modalok egymáson
Szép napot!
Egy jQuery modalból hogyan lehet úgy megnyitni egy másodikat, hogy annak a méretét ne korlátozza az első? A következőt csinálom egy link onclick eventjében:
$(this).modal({width:640, height:480}).open(); return false;
Igen ám, csakhogy ha ezt egy modalban csinálom, ami mondjuk 300x360 méretű, akkor a megnyitott modal tartalmából csak annyi látszik, amennyi a szülő modalba belefér, vagyis a közepéből egy 300x360 méretű darab.
Ha valaki meg tudná mondani, hogyan kell ezt legyőzni, hálás lennék... Esetleg az is megfelel, hogyan tudom resize-olni a parent modalt, mert erre sem találtam megoldást.
■ Egy jQuery modalból hogyan lehet úgy megnyitni egy másodikat, hogy annak a méretét ne korlátozza az első? A következőt csinálom egy link onclick eventjében:
$(this).modal({width:640, height:480}).open(); return false;
Igen ám, csakhogy ha ezt egy modalban csinálom, ami mondjuk 300x360 méretű, akkor a megnyitott modal tartalmából csak annyi látszik, amennyi a szülő modalba belefér, vagyis a közepéből egy 300x360 méretű darab.
Ha valaki meg tudná mondani, hogyan kell ezt legyőzni, hálás lennék... Esetleg az is megfelel, hogyan tudom resize-olni a parent modalt, mert erre sem találtam megoldást.
Lista pozícionálása
Sziasztok!
[colorer=html]<html>
<head>
<style>
#lista {width: 900px;}
ul li {list-style-type: none; width: 250px; float: left; padding: 10px;}
</style>
<title>Lista</title>
</head>
<body>
<div id="lista">
<ul>
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum viverra mauris sit amet consectetur. Praesent placerat luctus sem iaculis ornare. Fusce a velit vitae velit porta malesuada. Mauris a massa ipsum. Aliquam erat volutpat. In hac habitasse platea dictumst. Etiam elementum massa ac nisl aliquam in vulputate eros auctor. Fusce sapien nulla, molestie at fermentum in, consectetur ut velit. Sed bibendum vestibulum luctus. Aliquam molestie posuere tortor, id facilisis urna vulputate interdum. Aliquam ante lacus, suscipit sit amet scelerisque vel, ultricies vel dui. Sed semper velit id dui malesuada consequat. </li>
<li>Phasellus augue purus, tincidunt in pretium ut, accumsan ac leo. Cras nisi lectus, convallis in auctor vel, commodo eget magna. In viverra leo vitae mi tincidunt commodo. Nulla vestibulum aliquet egestas. Sed non ante et lectus mattis ullamcorper et ac dolor. Nam lectus mauris, ultrices eget rhoncus sed, tempus eu lorem. Integer vitae orci justo, a sollicitudin urna. Etiam sed diam et tellus feugiat pellentesque. Donec egestas quam in nibh pellentesque vitae feugiat odio vulputate. Nullam id sapien quis leo pellentesque fermentum. Donec id dui mi, quis ullamcorper est. Aliquam erat volutpat. Suspendisse potenti. Proin mi eros, facilisis non tincidunt vitae, congue in metus. Donec vulputate leo eu diam condimentum sagittis. Mauris condimentum diam et metus hendrerit eleifend. Nam sagittis augue vitae augue dictum sed mollis tellus mattis. </li>
<li>Morbi sodales, magna vel tristique blandit, urna nibh vestibulum sapien, sit amet ultricies velit ante et tellus. Aenean ac mauris quam, eu vehicula mauris. Nam eget nisl ligula. Vivamus arcu magna, suscipit in lobortis ac, hendrerit non diam.
[colorer=html]<html>
<head>
<style>
#lista {width: 900px;}
ul li {list-style-type: none; width: 250px; float: left; padding: 10px;}
</style>
<title>Lista</title>
</head>
<body>
<div id="lista">
<ul>
<li>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce bibendum viverra mauris sit amet consectetur. Praesent placerat luctus sem iaculis ornare. Fusce a velit vitae velit porta malesuada. Mauris a massa ipsum. Aliquam erat volutpat. In hac habitasse platea dictumst. Etiam elementum massa ac nisl aliquam in vulputate eros auctor. Fusce sapien nulla, molestie at fermentum in, consectetur ut velit. Sed bibendum vestibulum luctus. Aliquam molestie posuere tortor, id facilisis urna vulputate interdum. Aliquam ante lacus, suscipit sit amet scelerisque vel, ultricies vel dui. Sed semper velit id dui malesuada consequat. </li>
<li>Phasellus augue purus, tincidunt in pretium ut, accumsan ac leo. Cras nisi lectus, convallis in auctor vel, commodo eget magna. In viverra leo vitae mi tincidunt commodo. Nulla vestibulum aliquet egestas. Sed non ante et lectus mattis ullamcorper et ac dolor. Nam lectus mauris, ultrices eget rhoncus sed, tempus eu lorem. Integer vitae orci justo, a sollicitudin urna. Etiam sed diam et tellus feugiat pellentesque. Donec egestas quam in nibh pellentesque vitae feugiat odio vulputate. Nullam id sapien quis leo pellentesque fermentum. Donec id dui mi, quis ullamcorper est. Aliquam erat volutpat. Suspendisse potenti. Proin mi eros, facilisis non tincidunt vitae, congue in metus. Donec vulputate leo eu diam condimentum sagittis. Mauris condimentum diam et metus hendrerit eleifend. Nam sagittis augue vitae augue dictum sed mollis tellus mattis. </li>
<li>Morbi sodales, magna vel tristique blandit, urna nibh vestibulum sapien, sit amet ultricies velit ante et tellus. Aenean ac mauris quam, eu vehicula mauris. Nam eget nisl ligula. Vivamus arcu magna, suscipit in lobortis ac, hendrerit non diam.