Aktív témák
-
Tele von Zsinór
őstag
válasz
Louloudaki
#4943
üzenetére
Héber, jelentése: dupla kettőspont. Valószínűleg foglalt szóba futottál egy osztályod elnevezésénél. [link]
-
Tele von Zsinór
őstag
válasz
StaMiNa
#4932
üzenetére
Általában azon figyelnek a HTTP szerverek, de nem mind. Aztán csinálsz egy egyszerű http kérést, mondjuk egy ilyet:
GET /filenév HTTP/1.1
Host: szervercíme
User-Agent: PHP
Accept: *.*
Accept-Language: *
Accept-Encoding: none
Accept-Charset: *
Connection: close
Cookie: név=érték
A végén a Cookie: kezedű sort annyiszor ismétled, ahágy sütit el akarsz küldeni, és a végén kiírsz \r\n\r\n-t, azaz két teljes újsort, erre jön majd válaszként az oldal. További paraméterekhez ajánlom az rfc-t: [link] -
Tele von Zsinór
őstag
-
Tele von Zsinór
őstag
válasz
paramparya
#4867
üzenetére
Ráadásul ha letöltöd és megnézed, akkor látod, hogy akkor sem a php-t kapod, hanem a kimenetét

-
Tele von Zsinór
őstag
Fő, hogy sikerült tisztázni a dolgokat.
-
-
Tele von Zsinór
őstag
Nem teljesen php, de úgy gondolom, ideillik: hogy tudok a klienstől tanuúsítványt kérni? Az oldalt elérni https-el, a böngészőben benn van a cert, de nem küldi el.
-
Tele von Zsinór
őstag
Kevered a dolgokat. A php szerveroldali, a js kliensoldali nyelv, hiába csinálsz egy php functiont, azt nem tudod meghívni onchange-ben közvetlen. A megoldás a korábban említett ajax, amikor onchangeben küldesz egy kérést az oldalnak, az legenerálja a formot az értékekkel, te meg belerakod egy divbe.
-
Tele von Zsinór
őstag
AJAX-szal gond nélkül megoldható oda-vissza, akár olyat is lehet, hogy a php JS kódot generál, amit kliensoldalon eval()-al futtatsz. Marhanagy biztonsági rés, de ez van
Amúgy meg jól át kell gondolni az oldal felépítését, rakosgatni diveket a kritikus helyekre, és csak azok tartalmát cserélgetni. -
Tele von Zsinór
őstag
válasz
Tele von Zsinór
#4470
üzenetére
Bocs a dupláért, lejárt a módosításra engedett idő

Kértem jelszóemlékeztetőt mailban, jött egy jelszó meg egy link, utóbbi 404-es, előbbivel nem enged be. Úgy látom, azért van még mit javítani. -
Tele von Zsinór
őstag
-
Tele von Zsinór
őstag
válasz
VladimirR
#4442
üzenetére
Csak okoskodás: az első módszerrel a phpnek csak meg kell találni az első szabad indexet, és oda berakni az új elemet. A másodiknál két tömböt kell uniózni, a háttérben ez valószínűleg úgy megy, hogy létrehoz egy új, üres tömböt, végigiterálja az első param. elemeit, berakja az újba, ugyanez a másodikkal, majd visszaadja a kész tömböt. Pár elemnél még összemérhető a két módszer ideje, de utána a második kódban egyre tovább tart a példában levő első paraméter végigiterálása.
Ez nagyjából megfelel annak is, hogy minnél többször megy le a for, annál nagyobb a különbség. -
Tele von Zsinór
őstag
válasz
paramparya
#4386
üzenetére
Na igen, ahol van mod_rewrite. De én, free helyen ezt tényleges könyvtárszerkezettel oldom meg

-
Tele von Zsinór
őstag
Én ezt a két posttal feljebb említett módszerrel szoktam megfogni, amíg nem járt le a session úgyis vissza tud lépni, viszont ha lejárt, akkor headerrel kapja a login ablakot.
Van egy kicsi php-m, amit mindenhova includeolok szinte a legelején, csinál egy session_startot és utána azzal a módszerrel ellenőrzi, hogy érvényes-e még a munkamenet, ettől függően header() vagy semmi. Rögtön utána pedig frissíti az időt az aktuálisra.
Viszont operának van olyan feature-je, hogy amikor visszát nyom a user, akkor cache-ből, nulla hálózati forgalommal elérakja az oldalt, ezt nem lehet kivédeni, egyetleg egy cache=must-revalidate metainfoval. -
Tele von Zsinór
őstag
Sütire nem szeretek bízni ilyen lejárós dolgokat, kliensen van tárolva, ebből fakadóan nem biztonságos. Egyszerűbb a sessionben minden oldallekérésnél beírni az aktuális időt, de még ez előtt ellenőrizve, hogy az aktuális session lastaction ideje+x perc az a mostani időhöz hogy viszonyul.
Szóval ha $_SESSION[''lastactiontime''] + 10*60 < time(), azaz a legutolsó aktivitás több, mint 10 perce volt, akkor bizony lejárt a session és vissza a bejelentkezéshez. Meg $_SESSION = array(); -
Tele von Zsinór
őstag
válasz
StaMiNa
#4355
üzenetére
JS-ből könnyebb id alapján azonosítani egy elemet, tegyél bele egy id=''valami-sorszám'' attribútumot is, és utána a JS funkciót is php-val generáld, ahol minden idnek csinálsz egy ilyen sort:
document.getElementById(''valami-sorszám'').checked=''checked'';
Off, mert nem ide illik, JS topicban lenne a helye. -
-
Tele von Zsinór
őstag
válasz
Lortech
#4324
üzenetére
Igen, a session is süti, de itt nem minden adat utazik oda-vissza a szerver és a kliens közt, csak a sessionid, így elég nehéz más munkamenet ellopása, más nevén a bejelentkezés.
Régen az index.hu fórumán volt, hogy bejelentkezés után kaptál egy szép nagy sütit, ami base64 kódolva tárolt egy php serialize()-n átküldött tömböt, amit módosítgatva lehetett mondjuk mod jogot szerezni, meg egyéb finomságokat. -
Tele von Zsinór
őstag
2. Ha egy script futása véget ér, akkor felszabadul az összes változója, objektuma, megszűnik az adatbázis-kapcsolata (kiv. pconnect), illetve az összes query resultja is.
Ettől függetlenül szép dolog, ha kézzel semmisíted meg az objektumokat, resultokat, zárod a kapcsolatokat. -
Tele von Zsinór
őstag
-
Tele von Zsinór
őstag
Csináld pl így: legyen egy categories tábla, mezői: id,parentid,name; első egy egyedi azonosító, a második a szülő azonosítója, a harmadik a kategória neve.
Legyen egy rekurzív funkció, ami paraméterként kap egy id-t, azt a kategóriát (és az összes gyerekét) szépen kiírja. Mivel fastruktúrában akarod, bevezethetsz egy második paramétert, amit minden rekurzív híváskor az aktuálishoz képest egyel növelsz, és mondjuk annyi -t vagy valamit írsz ki a függv. elején, így kialakul egy fastruktúrához hasonló cucc, lehet esetleg ul-li duóval is játszani.
Így néz ki mondjuk a categories tábla tartalma, az előbbi sorrendet tekintve:
1,0,''első kategória''
2,0,''második kategória''
3,1,''harmadik, ami az elsőnek a gyereke''
4,3,''negyedik, ami a harmadik gyereke''
5,2,''ötödik, a második gyereke''
A 0 mint parentid legyen a top-level. Első hívás ígynéz ki: függvénynév(0,0), azaz a 0-s itemet akarjuk, illetve kezdetben az -k száma a sor elején 0.
Lekéred a táblából a kapott id-jű elemet (csak ha nem 0 az id!) és kiírod. Query: ''select * from categories where parentid=0;'', és szépen minden ilyenre meghívod a függvényt, egyel növelve a második paramétert.
Kicsit komplikált lett, lehet egyszerűbb lenne kódot mutatni, kérdezz ha nem világos.
[Szerkesztve] -
Tele von Zsinór
őstag
Egyelőre ez az osztály csak azért létezik, hogy minnél egyszerűbb legyen átállni másik dbszerverre, ha épp az kell. A magam logikája szerint megírtam, amit itt mutattam az olyan szeptember végi termék, azóta nem is nyúltam hozzá

Tulajdonképp az init() hívásakor állítom be az értékeit, szóval előbb van a deklaráció, mint az értékbeállítás
Arra emlékszem, hogy okkal nem paraméterben van, de hogy pontosan miért, arra már nem
Majd lehet megcsinálom olyanra, amit ajánlottál, hogy egy tömbben kapja az kapcsolódási paramétereket.
Utánanézek a php5-nek, de localhoston egyelőre marad a 4. -
Tele von Zsinór
őstag
Amikor a db-settings.php értelmezésre kerül, akkor még nem deklaráltam az osztályt

Ez a tömbös trükk tetszik, mindenképen átláthatóbb. Itt csak 5 változóm van (host,user,pass,dbname,charcoding), szóval megfelel így is. De a következő újraíráskor figyelembe fogom venni ezeket a tanácsokat. -
Tele von Zsinór
őstag
Igen, az én hozzászólásomban pl. az ilyenekre utaltam

Nálam a gondoladmenet az, hogy includeolom a db-mysql.php-t, ez includeolja magának a db-settings.php-t, amiben változókban megadom a db kapcsolat paramétereit. Azért kell az initben a global, hogy ezeket a változókat lássa, de ha megnézed, rögtön utána elrakja magának, objektumváltozóban.
Több kapcsolatot így is létre tudok hozni, ha csinálok egy új példányt, valamint az init előtt felülbírálom a változók értékeit.
Többszörös öröklődésen még nem gondoltam, szerintem ez egy egyszerű, kisméretű osztály, ahol nem igazán éri meg az ilyenre időt fordítani. Persze hozzájárul az is, ahogy írtam, hogy ez a file a saját, személyes oldalam része.
szerk: elnézést kérek a többszörös hozzászólásokért, de így szépen látszik, hogy kinek mit válaszoltam.
[Szerkesztve] -
Tele von Zsinór
őstag
Egyelőre csak php4-el foglalkozom. Azért kell a global, mert előtte, a db-settings.php-ben adom meg ezeket az értékeket, és azt akarom, hogy lássa azon változók értékeit.
Igazából több dolgot is tudok, amit módosítanom kellene, de nem nagyon van rá időm. Ez a két file amúgy a saját oldalam része, másutt nem használom. -
Tele von Zsinór
őstag
válasz
vakondka
#4074
üzenetére
Így hirtelen ezt dobtam össze neked, nem túl összeszedett, de a lényeget elmondja:
mondjuk így néz ki a kapcsolódás:
require_once(''db-mysql.php''); //ez a db-settings.php-ből betölti a szerver adatait is
$db = new db_class(); //új példány
$db -> init(); //változók beállítása
//itt lehet felülbírálni a beégetett host-user-pass-dbname adatokat
if (!$db->connect()) //kapcsolódás, ha hiba, akkor false-al tér vissza
{
echo(''Hiba a MySQL szerverhez kapcsolodaskor!<br>'' . $db->error());
die();
}
query így történik:
$id = $db->query(sql);
egy egész számot ad vissza, később ezzel tudod lekérni a sorokat, pl így:
$row = $db->next_row($id);
de lekérheted csak a sorok számát is:
$num = $db->num_rows($id);
vagy egy tömbben az össes sort:
$all = $db->all_rows($id);
vannak ilyenek is, mint a $db->insert_id(), $db->error(), ez mind a megfelelő mysql függvényt burkolja be, hogy ne kelljen közvetlen azt meghívni
példányonként számolja, hány queryt hajtottál végre, ez a $db->querycounter változóban van
$db->escape($string) a mysql_real_escape_string-et burkolja
feature: minden adatbázis művelet előtt ellenőrzi a kapcsolatot, ha megszakadt, maximum ötször megpróbál újra kapcsolódni, csak utána ad hibát
ha kérdésed van, írj, nem tudom, ez mennyire érthető. -
Tele von Zsinór
őstag
válasz
vakondka
#4070
üzenetére
Elment mailban az én osztályom, ha kérdés van, szintén mailban várom. A különbség annyi, hogy az elején kell egy $db = new db_class();, utána a megfelelő inicializáló utasítások (most nem tudom, nálam mik a nevek és mi a helyes sorrend), és utána lehet olyat, hogy $db->query(''blabla''), meg hasonlók. Ha kell küldök demot is.
-
Tele von Zsinór
őstag
válasz
paramparya
#4041
üzenetére
Amit legnehezebb ''véletlen'' elrontani, az valamilyen hiddenbe rakott érték, mondjuk oldalgeneráláskor belerakott random, amit elraksz sessionbe is, összehasonlítási alapnak.
-
Tele von Zsinór
őstag
válasz
paramparya
#4018
üzenetére
És mi van, ha a user tűzfala megfogja a Referer http headert?
-
Tele von Zsinór
őstag
válasz
StaMiNa
#3974
üzenetére
Egyébként ajánlom figyelmedbe az nl2br() és a htmlspecialchars() függvényeket, az előbbi pont a sortöréseket cseréli <br> vagy <br/> tagekre, a második a <>ből csinál <>-t, illetve az összes többi speckó karaktert is megfelelően cseréli. Figyelni kell a sorrendre, nálam így néz ki mondjuk a $v[''comment''
kiiratása:
echo(nl2br(smiley(bbcode(htmlspecialchars($v[''comment''
)))));
A smiley() és a bbcode() saját függvények.
Aktív témák
- HIBÁTLAN iPhone 15 Pro 128GB Natural Titanium -1 ÉV GARANCIA - Kártyafüggetlen, MS4671
- GEN5!!! 14/12GB/s 1TB Gen5x4 NVMe SSD, 1 év gar
- GYÖNYÖRŰ iPhone 14 Pro Max 128GB Deep Purple - 1 ÉV GARANCIA -Kártyafüggetlen, MS3702
- Apple iPhone 13 / 128GB / Kártyafüggetlen / 12Hó Garancia / Akku: 88%
- AKCIÓ! Acer Predator Helios Neo 16 PHN16 notebook-i9 13900HX 16GB DDR5 1TB SSD RTX 4060 8GB W11
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest




![;]](http://cdn.rios.hu/dl/s/v1.gif)
