- iPhone 16e - ellenvetésem lenne
- Xiaomi 15 - kicsi telefon nagy energiával
- Mobil flották
- Prohardver app (nem hivatalos)
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Poco F6 5G - Turbó Rudi
- Magisk
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Fotók, videók mobillal
- Azonnali mobilos kérdések órája
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ásArra 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
Hirdetés
- Xbox tulajok OFF topicja
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- Vicces képek
- Anglia - élmények, tapasztalatok
- Hardverkemping június végén
- Marcona Thermaltake léghűtés jött HEDT processzorokhoz
- Milyen videókártyát?
- Milyen légkondit a lakásba?
- További aktív témák...
- AKCIÓ! AMD Ryzen 7 3800X 8mag 16szál processzor garanciával hibátlan működéssel
- Apple iPhone SE 16GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! Asrock H310CM i5 9400F 16GB DDR4 240GB SSD 1TB HDD RTX 2060 Super 8GB Zalman Z1 700W
- Bomba ár! Lenovo ThinkPad P50 - i7-HQ I 16GB I 256SSD I Nvidia I 15,6" FHD I Cam I W10 I Gari!
- Fujitsu USB Port Replicator PR09 docking station (1x5K vagy 2x4K felbontás) (DisplayLink)
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest