- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Android alkalmazások - szoftver kibeszélő topik
- VoLTE/VoWiFi
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Szívós, szép és kitartó az új OnePlus óra
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- CMF Phone 2 Pro - a százezer forintos kérdés
- Egyszerre legnagyobb és legkisebb is a Garmin Venu X1
- Mobil flották
- Samsung Galaxy A52s 5G - jó S-tehetség
Új hozzászólás Aktív témák
-
jeges
senior tag
válasz
Sk8erPeter #6747 üzenetére
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #6743 üzenetére
Nézd meg ezt is: phpThumb
Kb. egy éve használtam egy projekten, átméretezésre és vízjelezésre, tette a dolgát szívás nélkül. Cachelni is tud. -
Frigo
őstag
válasz
Sk8erPeter #6741 üzenetére
ImageMagick-et nézted ?Ez egy elég komoly tudású command-line képmanipulátor szoftver ,az oldalán találsz linkeket a PHP függvényekhez és wrapper osztályhoz.
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #6737 üzenetére
Itt korrigálnám magam:
"(pl. Komodo IDE-ben vagy phpDesignerben rámész, hogy ugorjon a metódus deklarációjára, és akkor beleugrik abba a fájlba, ahol ezek megtalálhatók)"
Rájöttem, hogy pl. a dom.php nevű fájl, ami tartalmazza az osztály- és metódusdeklarációkat, a Komodo IDE-n keresztül csak azért elérhető, mert az Eclipse a projektkönyvtárba legenerált egy .metadata nevű könyvtárat, amin belül a .plugins/org.eclipse.php.core/__language__/d112eb25/ könyvtár tartalmazza jópár PHP függvény, osztály, metódus, különböző nyelvi elemek deklarációját.
Elég furcsa nevű könyvtár, azt a generált azonosítót a végén hirtelen nem vágom, minek kell odapakolnia (mivel történhet esetleges ütközés vagy hasonló, ami szükségessé tenné).Ezt miért nem a /home/user könyvtárba generálja, vagy valami olyan helyre, ami bárhonnan elérhető (akár Windows-on belül is pl. Users\<user>\akármi\)? Mondjuk speciel ebben az esetben nem volt baj, mert a Komodo IDE kevesebb erőforrást zabál, mint az Eclipse, és ugyanez igaz a phpDesignerre is, így egy ideje ezeket használom az Eclipse és NetBeans helyett is, nem ártott, hogy ott van az a projektfájl.
De lehet, hogy csak valami tévedés következtében került bele pont a projektkönyvtárba, és nem valami ésszerűbb helyre, most nem nyomoztam utána.Ja, és amúgy ha a projektkönyvtárban nincs benne az említett fenti könyvtár (aminek mondjuk gondolom nyilván más neve is lehetne, a lényeg, hogy a projektkönyvtáron belül megtalálható legyen valahol), akkor a definícióra ugrás nem működik, helyette hibaüzenetet kapok Komodo IDE-ben:
"Cannot show definition: symbol is defined in the stdlib or in an API catalog. Would you like to open the online language help for this symbol?"
Ekkor a Yes-re kattintva csak a hivatalos php.net-es dokumentációt hozza elő, amiből hirtelen nehezebb kiigazodni, mint a metódusfejlécek fölötti kommentekből. -
Inv1sus
addikt
válasz
Sk8erPeter #6737 üzenetére
Hú, nekem ez kissé bonyolult, azért próbálkozok. Köszi szépen!
-
D@ni88
addikt
válasz
Sk8erPeter #6730 üzenetére
köszi. Majd megnézem
-
D@ni88
addikt
válasz
Sk8erPeter #6721 üzenetére
igen leellenőrzöm a kiterjesztését.
if($_FILES['valami']['type']!='application/msword' and $_FILES['valami']['type']!='application/vnd.openxmlformats-officedocument.wordprocessingml.document' and $_FILES['valami']['type']!='application/rtf' and $_FILES['valami']['type']!='application/pdf')
Ezzel azt ellenőrizném le, ha egyik kiterjesztésnek sem felel meg, akkor írjon ki egy hibaüzenetet, különben hajtsa végre a megfelelő utasításokat.
Jah és köszi -
D@ni88
addikt
válasz
Sk8erPeter #6715 üzenetére
oké, de azt meg bonyolult beállítani ha jól sejtem...
-
Alukard
senior tag
válasz
Sk8erPeter #6696 üzenetére
Nem kapcsoltam ki, ezért is idegesített, de nem az, hogy van, hanem az, hogy nem tudtam megoldani...
Kérdeztem, voltak segítőkészek és a probléma megoldódottViszont a baj a gányolós projektemmel az az, hogy gyakorlatilag a korábban megmutatott függvények tömegével van működtetve, és biztos vagyok benne, hogy nem a legjobb megoldást választottam...
Mennyi előnyöm származhatna abból, ha egy mások által megírt framework-öt szednék elő és annak a segítségével írnám meg?
-
fordfairlane
veterán
válasz
Sk8erPeter #6692 üzenetére
a és sűrűn használhatod ilyen alapon a @ (kukac) jelet is a hibák elnyomására,
Nem, a kukac jelet a kollegám szokta használni.
Egyébként ja, megtanultam. Az élet megtanít olyan dolgokra, amikre nem is gondoltál zöldfülűként.
Bár ezt a mondatot "Esetleg kikapcsolni a notice-ok kijelzését." már csak fricskának raktam be.
-
cucka
addikt
válasz
Sk8erPeter #6672 üzenetére
És én szerinted mit mondtam? Ugyanezt.
Oké, figyelmetlen voltam, bocsánatMert néztem a forráskódot, és TUDOM, hogy nincs lekezelve...
Csak ötlet volt, írtam, hogy nem volt előttem a forráskód. Amúgy simán lehet, hogy egyszerűen csak szar a phpmailer forrása. Ingyenes szoftver, szóval nincs kinél reklamálni.Ez attól még nem mond ellent annak, hogy elegánsabb, ha kivételt dobál az osztály, és azt a megfelelő helyen elkapjuk, mintha kiszednénk a publikus ErrorInfo stringből a hibát, ha a Send false-szal tér vissza...
Attól függ, hogy mire használod egy adott projektben a kivételeket. Lehet vezérlési struktúraként is használni, meg lehet tényleg csak akkor elővenni őket, ha fatális módon elhányja magát a kód. Feltételezem, ezért opcionális a kivételek dobálása a phpmailer-nél. -
cucka
addikt
válasz
Sk8erPeter #6669 üzenetére
Amúgy ez fura, azt nézem, hogy a PHPMailer osztályban (5.1) egyáltalán nincs is ellenőrzés arra vonatkozóan, hogy a felhasználó nem cseszte-e el a karakterkódolás bepötyögését
Belefér, ez nem olyan nagy baj.persze nem csak erről szól az OOP, de ha már lehet, egy helyen megvalósítjuk a változók beállításának megfelelő ellenőrzését is - egyből a beállításkor
Igen, meg lehet oldani, gondolom nem akarták felsorolni az összes lehetséges encoding típust és azok variációit (utf8 vs. utf-8). A karakterkódolás csak egy string, amit a levél header részébe illeszt a phpmailer, ezért nincs ellenőrzés.miért férek hozzá kívülről az ErrorInfo-hoz?
Errorinfo protected (v. private) kéne legyen és kéne mellé írni egy getErrorInfo()-t. Vagy maradhat public, de akkor a __set-ben le kell kezelni azt az esetet, amikor kívülről piszkálják. (Egyébként simán elképzelhető, hogy le van kezelve, csak elkerülte a figyelmedet, nincs előttem a phpmailer forrása)Lehet, hogy a függvénybe ugrálásnak nagyobb az overheadje
Igen, de annyira azért nem nagy. (Az overhead-et az adja, hogy létre kell jöjjön a call stack, ami a függvény hívása után fel kell szabaduljon)Egyébként gondolom Te is így példányosítod a PHPMailert:
Igen, de az én kivételeim nem jelennek meg a képernyőn, hanem kapok róluk szépen formázott emailt (és ugyanez igaz a hibákra is) -
Sk8erPeter
nagyúr
válasz
Sk8erPeter #6669 üzenetére
Ja igen, és a SetError() metódus protected, míg maga a tagváltozó ($ErrorInfo) nem, ez kissé egészségtelen koncepció szerintem.
A SetError helyesen protected, de magának a tagváltozónak is legfeljebb annak kéne lennie... -
lesaux
veterán
válasz
Sk8erPeter #6661 üzenetére
A PHPMailernek adtam meg az adatokat, így volt a legegyszerűbb. Az ékezetes betűket egyszerűen kihagyja. Az összes oldal iso-8859-2 kódolású. Mindjárt utánanézek.
Szerk.: nem is volt nehéz:
$mail->charSet = "iso-8859-2"; -
Alukard
senior tag
válasz
Sk8erPeter #6659 üzenetére
Köszönöm, 90%-át ismertem, viszont sajnos nem voltam elég pontos...
A menühöz a linkek (név, url, sorrend) adatbázisban vannak tárolva, szóval a lehetőségek eléggé korlátozottak... a lényeg, hogy egy olyan megoldást keresek aminek a segítségével adatbázisból ki lehet szedni és megjeleníteni egy többszintes menüt, úgy, hogy minden a helyén is van... -
lesaux
veterán
válasz
Sk8erPeter #6648 üzenetére
Írtam. Válaszoltak is:
Egyeztettem technikai kollégámmal és a tartós megoldást az jelentené, ha SMTP-vel küldené ki a leveleket. Ehhez az szükséges, hogy létrehoznak egy e-mail címet jelszóval, és azon keresztül küldik ki a leveleket.
Feladó nincsen megadva küldéskor, ezért nem tudja azonosítani a fogadó szerver és visszautasítja a levelet, ezért kapja a lenti hibaüzenetet.
Jól értem, ugye, hogy ez nem az, ami nekem kell? E-mailt tudok küldeni a t-online-os vagy a vipmailes címemről, de itt az kéne, hogy a szerver küldjön, ha megnyílik egy oldal vagy beleírnak a wendégkönyvbe.
A class.smtp.php fájl esetleg nem kínál erre megoldást? -
lesaux
veterán
válasz
Sk8erPeter #6646 üzenetére
Nos. Először is köszi a hosszú poszot.
Azt jól értelmezem, hogy a szerverre csak a class.phpmailer.php, class.pop3.php és a class.smtp.php fájlt kell feltölteni, ugye? Meg persze a $phpmailer_path-ban beállítani az útvonalat.
----
Jó, semmi, tárgytalan. Amíg ezeket gépeltem, meg is jött vagy öt levél a mailer daemontól, ugyanazzal a hibaüzenettel, hogy a kurva indamail visszadobta. Holnap írok a Gyümölcstárhelynek meg az Indamailnek.
Most még azon gondolkodom, hogy május 22-én jár le a domainregisztrációm, de eredetileg ápr. 22. lett volna, csak egy hónapot ajándékba kaptam. Na, én az MX rekordok lelkivilágához nem értek, de ha a domainemet meghosszabbították, ezt az MX-es cuccot pedig nem, és emiatt kerültem ki a pixisből, akkor goromba leszek.
Köszi mindenkinek az infókat meg a komplett PHP-forráskódot. -
lesaux
veterán
válasz
Sk8erPeter #6644 üzenetére
Ez szerepel a php fájlban:
[I]<?
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
$visitor_IP = $_SERVER['REMOTE_ADDR'];
$emailszoveg = "Új vendég nyitotta meg az oldalt!\nIP-je: $visitor_IP\nHostja: $host";
mail("le****(a)vipmail.hu", "Új látogató érkezett", "$emailszoveg", "From: www(a)lepesfalvi.hu");
?>[/I]De a from mezőben járt már minden. Köszi!
-
fordfairlane
veterán
válasz
Sk8erPeter #6627 üzenetére
Félreértés ne essék, nem sértődtem meg, csak nincs kedvem vitatkozni ebben a témában. 10 éve programozok különféle weboldalakat PHP-ban, a saját bőrömön tapasztaltam meg, mik tudnak hirtelen prioritássá előlépni... Én is törekszem azokra, amiket leírtatok, de tudom nagyon jól, hogy a rögvalóság sokszor felülírja a dolgokat. Nem bátorítok senkit ilyenekre, csak mint lehetőséget említettem.
-
fordfairlane
veterán
válasz
Sk8erPeter #6621 üzenetére
Nem azt írtam, hogy ne foglalkozzon a notice-okkal, hanem ha zavarja őket, akkor kikapcsolhatja. Jelen esetben pl. az isset hiánya nem okoz működési problémákat, a noticeok viszont sokszor akadályozzák, hogy haladj a munkában, vagy épp bemutass valamit a megrendelőnek stb. Nem tartom olyan vészesnek, ha valaki, pláne a kockázatok ismeretében, kiiktatja őket.
-
Brown ügynök
senior tag
válasz
Sk8erPeter #6617 üzenetére
Szerk.: nyilván élesben működő oldalon ne legyenek bekapcsolva a notice-ok,
Én így értelmeztem fordfairlane tanácsát.
A tanácsaidhoz: Bocs, hogy nem ellenőriztem le a $_GET['id'] ahogy csak lehet, (Éppen ezért kértem segítséget). de amit mondtál abból nekem nem jött le a megoldás.
Fordfairlane elmondta, hogy kellene, most már tudom. Részemről lezárva.
-
fordfairlane
veterán
válasz
Sk8erPeter #6619 üzenetére
Ismerem az elméletet, de próbálok gyakorlatias lenni. Az elmélethez való ragaszkodásból nem lehet megélni.
-
fordfairlane
veterán
válasz
Sk8erPeter #6617 üzenetére
Azért remélem ez csak vicc akart lenni.
Egyáltalán nem viccnek szántam. Ha szorít az idő, és működik a program, miért gond, ha nem a képernyőre kerülnek is a sokadlagos jelentőségű figyelmeztetések?
-
Brown ügynök
senior tag
válasz
Sk8erPeter #6603 üzenetére
Mysqli lekérdezéseket használok. A GET['id'] ennél az uri-nál átadódik:
elseif ($uri == '/blog/cikk'.$_GET["id"]) {
mutató_függvény($_GET['id']);
}Csakis ennél az uri-nál alkalmazom a házzfűzési módszert, minden más esetben isset-t használok. Itt azért kell ezt a módszert használnom, mert az egyes cikkeket id alapján kérem le az adatbázisból és az útvonalnál csak így lehet átadni az id-t. Ha van a hivatkozásra más módszer, akkor azt szívesen meghallgatom.
Ha egy másik útvonalnál is adok át változót, akkor azt írja ki, hogy ismeretlen index: id.
Példa egy másik útvonalra:
elseif ($uri == '/blog/upload' && isset($_POST['cim']) && ...) {
beillesztő_függvény(($_POST['cim']),...);
} -
Speeedfire
félisten
válasz
Sk8erPeter #6564 üzenetére
Mindig tanítasz engem mester.
-
RedSign
tag
válasz
Sk8erPeter #6591 üzenetére
Értem, köszi.
-
RedSign
tag
válasz
Sk8erPeter #6589 üzenetére
Igen teljesen igazad van, ezekkel a megoldásokkal valóban rövidül, amire én gondoltam, hogy a timestamp értékét kiolvasásnál és megjelenítésnél azonban vissza kell alakítani...
(vagy van erre valami más megoldás?)
-
RedSign
tag
válasz
Sk8erPeter #6586 üzenetére
Szerintem is a TS formátum sokkal hasznosabb és kezelhetőbb...
...lehet, hogy PHP-ben pár karakterrel hosszabb a kód, de megéri.
-
klinnsy
csendes tag
válasz
Sk8erPeter #6579 üzenetére
MEGOLDÁS:
if ($answer < count($ANSWER) && $vote) {
csere ERRE:
// if ($answer < count($ANSWER) && $vote) {
if ($answer < count($ANSWER) && ($vote || $vote_x)) { -
Tele von Zsinór
őstag
válasz
Sk8erPeter #6572 üzenetére
Valóban, a jelenség fennáll, problémának azért mégsem nevezném. Azaz inkább a környezettől függ, hogy az-e.
El lehet választani az OOP-ot és az MVC-t, lehet jól működő MVC oldalt írni procedurális kóddal is, de objektumorientáltan egyszerűbb, és nagyban könnyíti a későbbi karbantartást, bővítést is.
Ajánlom pár komolyabb keretrendszerrel való ismerkedést - rengeteget tanultam például a symfony kódját böngészve, de nézegettem a cakephp és a kohana kódját is.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #6570 üzenetére
Van egy file, aminek postol a form (ez a controller), és van egy template, amit meg majd a user lát (ez a view). Ha a kérés get, akkor rögtön megy a view-hez a futtatás, semmi extra nem történik. Ha a kérés post, akkor is ugyanez a file kapja, de formfeldolgozás is történik. Ha invalid, vissza a viewhez (és ha ekkor F5-öl, megjelenik az általad említett újraküldős kérés), ha valid, akkor pedig feldolgozás és redirect.
A form minden mezője úgy van elnevezve, hogy formneve[mezőneve], a formnak átpasszolom a $_POST["formneve"] tömböt, és ezeket validálja.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #6568 üzenetére
Ugyanabban a kérésben, de nem ugyanabban a fileban
a form maga egy külön osztály, pontosan tudja magáról, milyen mezői vannak, azokat hogy kell validálni, szóval én csak átadom neki a postolt adatokat és megkérdem, valid-e
érvénytelen adatoknál meg feleslegesnek tartom a redirectelést, de ez ízlés dolga.
A post-redirect-get pattern eredeti célja az alkalmazás állapotát megváltoztató kérések (vásárlás, kommentelés például) duplázásának elkerülése volt. A keresés nem változtat az állapoton, én get-tel szoktam megoldani (általában úgy néz ki, hogy example.com/keres/mirekeresett) - így máris levan a gond az f5-ös újraküldésrő.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #6566 üzenetére
A működés kb. a következő: van egy függvény (a controller), ami első körben példányosítja a formot, és átadja a view-nak. Az kiírja, a form actionja ugyanaz a file és függvény lesz. Másodszorra, mikor post-tal jön a kérés, hozzárendeli a form példányhoz a kapott adatokat, és ellenőrzi őket. Ha invalid, vissza ugyanahhoz a view-hez, csak most már hibaüzenetek is vannak, ha valid, akkor feldolgozza a formot (bejelentkezik a user, menti a komment, stb.), és redirectel.
MVC-vel dolgozom, valamint látszik a post-redirect-get pattern is.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #6564 üzenetére
Első ponthoz: nem ugyanazon a fileon belül, de ugyanabban a kérésben szoktam kiírni a hibaüzenet, mint amiben elküldte a formot. Így ott vannak a post adatok, ilyenre feleslegesnek tartom sessionbe menteni őket és redirectelni.
-
Speeedfire
félisten
válasz
Sk8erPeter #6562 üzenetére
Mondjuk én nem szoktam.
Eddig még nem volt olyan amihez használnom kellett volna ezt a megoldás.
-
Speeedfire
félisten
válasz
Sk8erPeter #6554 üzenetére
Vazzz!
És tényleg, a config fájlba benne van a függvény. Ezt nem is néztem, sorry biker. -
biker
nagyúr
válasz
Sk8erPeter #6551 üzenetére
reggel fél hétkor nem tűnt fel. de tényleg nem változik a sorrend
az angol() igen
gyorsan ki is javítottam -
Speeedfire
félisten
válasz
Sk8erPeter #6543 üzenetére
Ahogy biker is írja vagy egy cronnal lenne futtatva a dolog és annak a kimenete lenne egy táblába rakva és a fő oldalon az lenne lehívva. Vagy minden egyes módosítás, új tartalom feltöltéskor lenne generálva a tábla.
Nem azzal van a gond, hogy nem tudom átírni, hanem hogy localhost alatt nem fordítok rá akkor figyelmet. Nincs annyi projekt, hogy külön ezeket kezeli kelljen.
Értem, igazad van ezzel kapcsolatban. Erre még nem gondoltam, mindig csak az volt a fő szempont, hogy én tudjam mit hol rontok el.
-
biker
nagyúr
válasz
Sk8erPeter #6543 üzenetére
nekem van egy minden éjjel lefutásra ítélt fileom, abba beleteszem majd a cimkék kiválogatását és számolását, és ez fog megjelenni síme selectel, így gyorsul majd...
-
Speeedfire
félisten
válasz
Sk8erPeter #6506 üzenetére
Ezt a bejegyzést meg észre sem vettem.
Miért nem használod fel a $_GET['phpoldal'] változót? Úgy értem, akkor minek adod át ennek a query stringnek a címet?
Így láttam célszerűnek anno, minden eshetőségre fel akartam készülni. Lehet, hogy pont nem a legjobb megoldás rá. Majd egyszer lehet nekiesek megint, jobban átgondolva az egészet.
http://localhost/!!!szapar.hu/
Ehelyett meg létrehozhatnál egy bejegyzést a hosts fájlban, meg apache-beállításokban egy VirtualHost-ot, és lehetne a címe http://szapar.local Így azé' szebb, meg nem kell annyit pötyögni a cím beírásához.
Tudom, csak nincs kedvem mindegyiket beírni. Nem mintha sokáig tartana, csak localhoston annyira nem zavar a dolog. Ha meg felkerül a serverre akkor meg már édes mindegy.$valogatas = "select * from szapar_alias where eng = '".$uri."' ";
Itt azért az $uri változót nem ártana escape-elni, az SQL Injection elkerülése érdekében!
$i= 0;
foreach ($valogat as $ertek) {
if ($i != 0) {
parse_str($ertek);
}
$i++;
}
Ezt nem is értem, minek csinálod, ha utána egyáltalán sehol nem használod fel az $ertek változót?
Vagy felhasználod, csak valami include-olt fájlban? Vagy csak benne maradt?
Erre eddig nem is gondoltam, tényleg egy biztonsági rés. Ki is javítottam már.
Már hogyne használnám fel az $ertekeket. Azok az oldalnak a "$get paraméterei", a script végén hívom meg a php fájlokat amikben felhasználom.if (!mysql_query($valogatas,$con)) {
die('Hiba: ' . mysql_error());
}
Itt a die() helyett érdemesebb lenne inkább valami felhasználóbarátabb hibaüzenetet, hogy nem elérhető az adatbázis, látogasson vissza később. Ráadásul a felhasználónak semmi köze a konkrét hibaüzenethez. Nem célszerű kiírni! Főleg, hogy nem is túl szép.
Az ilyen jellegű hibákat amúgy nagyon faszán le lehet kezelni kivételkezeléssel, ha valami kritikus jellegű hibád van, azonnal dobsz egy kivételt, hogy ne is futkorásszon tovább a kód, nem is kell bonyolult és ronda if-else blokkokat csinálni, egyszerűen valahol elkapod a kivételt, megfelelő módon kezeled, és kész.
Hogy érted azt, hogy nem célszerű kiírni? Beszélgettünk már a kivétel kezelésről, de amikor a kód készült azt sem tudtam mi az a try() meg catch() blokk.if (!empty($valogat['url']) and isset($valogat['url']))
Ennek a feltételvizsgálatnak így nem sok értelme van, itt elég lenne a !empty() részt vizsgálni, nyilván ha nem üres a változó (nem is NULL, nem is üres string, stb.), akkor be van állítva, tehát a második feltétel már felesleges. Sőt, itt előbb célszerű lenne inkább megvizsgálni, hogy van-e kapott eredményhalmaz, vagy sem, ha már úgyis lekérdezed a kapott sorok számát a mysql_num_rows() függvénnyel.
Valami oka volt, hogy így írtam. De már nem tudom, hogy mi volt az.Na, a többi részéhez most nem volt türelmem.
Kössz!"Amelyik táblában az url-ek vannak cachelve van."
Hogyan bírod rá így külön az adatbázist, hogy cache-elje? Tudtommal default cache-eli, indexeléssel lehet esetleg segíteni a lekérdezés gyorsaságát.
Az indexelésre gondoltam, csak a szakzsargon nem mindig jut eszembe. -
Alukard
senior tag
válasz
Sk8erPeter #6531 üzenetére
Bevallom, hogy nem vagyok programozó, és a szükséges szemléletem sincs meg hozzá, és egyelőre az a lényeg, hogy működjön... majd ha belejövök akkor biztos szebb és jobb kódokat tudok majd írni
Viszont a
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);qvartetet már többször is láttam, és nem csak gányolt kódokban, de ha tudsz jobbat én mindenre nyitott vagyok
-
Alukard
senior tag
válasz
Sk8erPeter #6529 üzenetére
Egyelőre csak tanulom és a tutorial része volt php5-re... szóval gányolok jobbra-balra
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #6510 üzenetére
"Amúgy milyen jó lenne, ha már a .htaccess fájlból is el lehetne indítani egy időmérést."
Igazából nem is tűnik olyan nagyon hülye gondolatnak (hogy saját magamnak reagáljak).Találtam egy ilyen cikket: [Measuring Apache request processing time]
Ez alapján plusz az Apache vonatkozó hivatalos oldala alapján (mod_headers):
ha ezt a két Header direktívát beteszem a .htaccess fájlba:# %t: The time the request was received in Universal Coordinated Time since the epoch (Jan. 1, 1970) measured in microseconds. The value is preceded by t=.
# %D: The time from when the request was received to the time the headers are sent on the wire. This is a measure of the duration of the request. The value is preceded by D=.
Header set Ekkor_kapta_a_kerest_ms_1970_jan_1-hez_kepest: %t
Header set Keres_feldolgozasi_ideje_us: %D
akkor hozzáadja a HTTP-fejlécekhez ezeket is (szándékosan adtam most ilyen jó hosszú, de beszédes neveket).
Ebben az esetben a következő fejléceket látom a Firebug Net fülén:Ekkor_kapta_a_kerest_ms_1... t=1301593430575379
Keres_feldolgozasi_ideje_... D=539031Tehát eszerint 539031 us = 0.539031 s ideig tartott az Apache-nak, hogy kiszolgálja a kérést.
A t=1301593430575379 azt jelenti, hogy ennyi mikroszekundum telt el 1970. jan. 1-je óta.Ezek a fejlécek feldolgozhatók PHP-ból is (most itt a tömbben a fent megadott, jó hosszú nevű index-szel érhető el a kívánt érték, mindenki nevezze át ízlése szerint):
<?php
$headers_array = get_headers('http://'.$_SERVER['SERVER_NAME'], 1);
// headerek kiíratása:
echo 'HEADERS:------------<hr />';
echo '<pre>';
print_r($headers_array);
echo '</pre>';
$request_rec_time = $headers_array['Ekkor_kapta_a_kerest_ms_1970_jan_1-hez_kepest'];
// levágjuk a "t=" részt
$request_rec_time = str_replace( 't=', '', $request_rec_time );
// mikroszekundumban kapjuk meg, azt átalakítjuk másodperccé (s) (1 s = 1 000 000 ms)
$request_rec_time /= 1000000;
// átalakítva olvasható dátummá:
echo date('Y.m.d H:i:s', $request_rec_time).'<br />';
?>Igazából az utóbbi, a kérés ideje nem túl pontos, mivel integer értéket kapunk, így megegyezik a $request_rec_time változóval formázott fenti date() kimenete a sima date('Y.m.d H:i:s') kimenetével, aminek a második paramétere az alapértelmezett time() kimenet.
Létezik azonban a $_SERVER['REQUEST_TIME'] változó is, amit szintén felhasználhatunk, ez szerintem kicsit pontosabb, mert talán nem csak a .htaccess fájlhoz érve kezdi számolni az időt...
Így azt is átalakíthatjuk olvasható formátumra:echo date("Y.m.d. H:i:s", $_SERVER['REQUEST_TIME']).'<br />';
De sajnos ez is csak másodperces eltéréseket fog mutatni, nálam legalábbis az "u" (mikroszekundumot jelző) formátum karakter hozzácsapása ( date("Y.m.d. H:i:s.u") ) csakis csupa nullát eredményezett.
Ha valaki tud még jobb, még pontosabb módszereket, ne tartsa magában.
Kösz! -
Tele von Zsinór
őstag
válasz
Sk8erPeter #6508 üzenetére
Többet vársz, mint a script futásideje, mert a böngésződ először DNS-felold, felépíti a kapcsolatot a szerverrel, elküldi a kérést, az előállítja a választ, átküldi, és végül kölcsönösen zárják a kapcsolatot. Te a kódodban csak a válasz generálásának idejét tudod mérni.
-
cucka
addikt
válasz
Sk8erPeter #6491 üzenetére
Ez a fenti ilyenformán jól működik, mégis felmerült bennem, hogy tulajdonképpen melyik a gyorsabb, az, ha Apache-csal vagy PHP-vel dolgozom fel a címet?
Elég gyors bárhogy. Ha gyorsítani akarsz a kódodon, akkor a bottleneck-eket kell megkeresni, ilyen kaliberű dolgokkal fölöslegesen pocsékolod az időd. Kit érdekel, hogy 0.02 ms alatt futtatja le a regexp-et, vagy 0.03?Ti hogy látjátok a kérdést? Másképp használjátok, vagy muszáj elfogadni, hogy ez egy viszonylag kötött szerkezet, jól kell kitalálni az elején, és nem érdemes változtatni rajta később?
Fel lehet php-ból is dolgozni az url-t, ez valamivel rugalmasabb megoldás, de értelemszerűen a korábban könyvjelzőzött url-ek változására nem ad ez sem megoldást. A barátságos url-ek egyébként a keresőmotornak szólnak, nem pedig a felhasználónak, tehát szerintem egyszer elég jól kitalálni és utána nem piszkálni.Több RewriteRule-t hogyan adtok hozzá úgy, hogy helyesen működjön?
A RewriteRule-ok alapból így működnek. Fentről lefele halad a .htaccess fileban egészen addig, amíg talál egy megfelelő sort, ami alapján átírja az url-t. (Ennél jóval bonyolultabb amúgy, vannak feltételek, meg igazából ha talált egy jó RewriteRule-t, akkor nem áll le a feldolgozás, de nem akarok hülyeséget írni, szóval nézz utána)
-
Speeedfire
félisten
válasz
Sk8erPeter #6488 üzenetére
Itt olvashatsz róla az 5. hsz-től.
Az írják, hogy lassú és nagyon nyakatekert...
-
abteam2008
tag
válasz
Sk8erPeter #6482 üzenetére
Már valamennyit haladtam. Először is van egy xbox_games.php-m:
<?php require_once('Connections/consolegames.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}mysql_select_db($database_consolegames, $consolegames);
$query_xboxgames = "SELECT gameId, gameTitle, gameGraphic, gameDesc FROM xbox ORDER BY gameTitle ASC";
$xboxgames = mysql_query($query_xboxgames, $consolegames) or die(mysql_error());
$row_xboxgames = mysql_fetch_assoc($xboxgames);
$totalRows_xboxgames = mysql_num_rows($xboxgames);
?>Body tagben pedig:
<?php do { ?>
<a href="xbox_games_details.php?id=<?php echo $row_xboxgames['gameId']; ?>" target= "_BLANK"> <img src="_images/<?php echo $row_xboxgames['gameGraphic']; ?>" width="195" height="262" />
<?php } while ($row_xboxgames = mysql_fetch_assoc($xboxgames)); ?>Ezzel kilistázza a játékborítókat, amelyekre kattintani is lehet (egy ilyen link jön létre kattintásra: http://localhost/consolegames/xbox_games_details.php?id=2)
Na most már "csak" az xbox_games_details.php-hoz kérnék segítséget. Úgy gondolom, hogy ezzel kellene bekérni az id-t:
<?PHP
$id = $_GET['id'];Tehát bekérném a gameId-ből az id-t, és az id alapján írná ki az oldalra a játék címét (gameTitle), borítóját (gameGraphic) és rövid leírását (gameDesc).
Eddig jutottam magamtól, innentől nem tudom tovább..
-
Speeedfire
félisten
válasz
Sk8erPeter #6395 üzenetére
Sk8erPeter & Tele von Zsinór: Köszönöm mindkettőtöknek, így utólag belegondolva pedig logikus és érthető is a dolog, nem értem miért nem értettem meg eddig.
Úgy néz ki nálam a hülyülés már korábban kezdődik mint kellene... -
Tele von Zsinór
őstag
válasz
Sk8erPeter #6395 üzenetére
Remek leírás, szép
@j0k3r!: a __call megkapja, milyen nevű függvényt akarsz meghívni és milyen paraméterekkel - aztán függvényen belül eldöntöd, mit akarsz ezekkel az adatokkal kezdeni. Valóban el lehet érni, hogy kívülről úgy nézzen ki, mintha túlterhelted volna, de ez nem változtat azon, hogy a php nem képes overloadingra. Default paraméterekkel lehet trükközni, de a gyenge típusosság miatt (egyelőre) nincs jobb.
@Speeedfire: akkor nézzük sorról sorra:
if(!array_key_exists($tulajdonsagnev, $this->_tulajdonsagok)) {
throw new Exception('Ervenytelen tulajdonsag-érték!');
}
if(method_exists($this, $tulajdonsagnev. 'Lekerdezes')) {
return call_user_func(array($this, $tulajdonsagnev . 'Lekerdezes'));
}
else {
return $this->_tulajdonsagok[$tulajdonsagnev];
}Van olyan tulajdonság amit be akar állítani? Ha nincs, akkor bizony hiba, és kész vagyunk.
Van olyan függvény, hogy "tulajdonságnévLekerdezes"? Ha igen, meghívjuk, és visszaadjuk, amit visszaad. Ha pedig nincs, akkor a tömb megfelelő indexű elemét adjuk vissza.A beállítás ezzel analóg logikával működik, csak ott nem visszaad, hanem beállít, és így a call_user_func() függvénnyel paramétert is átad.
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #6395 üzenetére
Korrigálnám magam annyiból, hogy tulajdonképpen valamilyen szinten mégiscsak "létrehoz" dinamikusan függvényeket a PHP, a lényeg:
http://php.net/manual/en/language.oop5.overloading.php
"Overloading in PHP provides means to dynamically "create" properties and methods. These dynamic entities are processed via magic methods one can establish in a class for various action types.The overloading methods are invoked when interacting with properties or methods that have not been declared or are not visible in the current scope. The rest of this section will use the terms "inaccessible properties" and "inaccessible methods" to refer to this combination of declaration and visibility.
All overloading methods must be defined as public."
Mellesleg most látom, hogy tulajdonképpen Tele von Zsinór már korábban leírta tömörebben a lényeget.
Na sebaj, elmondtam másféleképpen.---
(#6396) j0k3r!: pont a fentebb linkelt oldalon mutatják be a __call használatát!
-
j0k3r!
őstag
válasz
Sk8erPeter #6395 üzenetére
ha mar belementunk az oop php-be, akkor en is kerdeznek egyet. valahol azt hallottam (olvastam), hogy a magikus __call() al lehet fuggvenyt tulterhelni (amit egyebkent a php-ban azthiszem nem lehet).
a kerdesem az, hogy ezt szoktatok-e hasznalni? egyatalan lehet-e ilyet? (vagy csak en emlekszem rosszul) -
shaggy
aktív tag
válasz
Sk8erPeter #6387 üzenetére
Felraktam a wampot és csodálatosan működik köszönöm mindenkinek a segítséget azt hiszem ezt fogom használni!
-
shaggy
aktív tag
válasz
Sk8erPeter #6387 üzenetére
Igen rendesen le van zárva próbáltam röviddel és hosszúval is egyik sem jó még mindig a teljes kódrészletet írja ki.
De most letörlöm és amit mondtatok azt fogom feltenni és akkor remélem megoldódik a problémám -
Speeedfire
félisten
válasz
Sk8erPeter #6387 üzenetére
Wamp-ot használok, de gondoltam meglesem ezt a appserver-t erre mit látok.
Php 6.0.0 dev. Ez mióta van, vagy mi lesz benne az újítás? Nekem ez most nagyon új infó, eddig erről nem tudom. -
shaggy
aktív tag
válasz
Sk8erPeter #6376 üzenetére
de localhost nyitom meg http:/localhos akkor behozza az apache az it's work! oldalát!
De amikor a test.php próbálom akkor csak a kódot írja ki nem amit kellene és nem tudom miért. -
shaggy
aktív tag
válasz
Sk8erPeter #6374 üzenetére
ez az akart lenni h a test.php-t nem jeleníti meg nekem hanem ami benne van kódrész azt írja ki és nem tudom miért.
-
jeges
senior tag
válasz
Sk8erPeter #6367 üzenetére
"Többek közt a fent említett indokok miatt nagyon nem"
abból a szempontból teljesen mindegy, hogy a kérdés feltevésekor
1) egyáltalán nem volt try/catch, így az egész hibára futott
(úgy gondolom ez volt az alapprobléma, amit megoldottunk)
2) a dátumkezelés miatt is hibára futott
(ez is megoldódott)a fentiek ellenére/mellett már elmondtam, hogy
1) mea culpa a megtévesztő szóhasználatért
(mellesleg azt gondolom, aki nem akarja, nem érti félre)
2) (még egyszer) köszönöm a kiegészítést, hiszen a megoldás valóban kiegészítésre szorult
3) az első hibátlan futás előhozza az addig esetleg elfedett nem várt működéseket
(lehet, mással nem fordul elő, hogy egy problémára koncentrálva elsiklik egy másik felett, velem bizony előfordul)amennyiben Te is egyetértesz, továbbléphetnénk.
-
jeges
senior tag
válasz
Sk8erPeter #6357 üzenetére
mindenekelőtt köszönöm a kiegészítéseket.
ciklus úgyben nem programozási struktúráról, hanem logikailag összetartozó lépések sorozatáról volt szó, ha megtévesztő számodra a megfogalmazás, elnézést.
!isset($e) részre vonatkozóan igazad (igazatok) van természetesen, itt valahonnan máshonnan vettem a kódrészletet. különösebb galibát egyébként az első esetben nem okoz, a második esetben valóban dupláz (ami nyilván kiderülne az első hibamentes futás alkalmával)
"a köszöntésnek épp a dátum után kéne lennie..." - felvetésre:
az, hogy a try/catch-ben vizsgált jelenség utáni lépést a szerkezetbe vagy utána teszed, környezetfüggő. nem néztem vissza, de emlékeim szerint itt "belefért" mindkettő. az viszont bizonyos, hogy az első hibamentes futás előhozza, ha mégsem a várt eredmény születik. a példa szempontjából majdnem mindegy. -
Tele von Zsinór
őstag
válasz
Sk8erPeter #6357 üzenetére
Arról nem is beszélve, hogy $e csak a catch blokkon belül van, amint annak vége, kikerül a scope-ból, és megsemmisül.
-
rt06
veterán
válasz
Sk8erPeter #6330 üzenetére
"Ráadásul tömbindexelésnél vagy egyéb esetben is szintaktikai hiba lehet belőle, az összefűzögetésnél könnyebb elkerülni (számomra)."
a kapcsolszarojeles megoldasnal nem - az alabbi pl szintaktikailag helyes (raadasul szamomra sokkal atlathatobb, mint a ponttal torteno konkatenacio, de ez mar izles dolga
$str = "valami{$valtozo["index"][$masikindex]}megvalami";
a vesszovel elvalasztast nem igen hasznalom (echo-t sem, print-elni szoktam, de ez leginkabb megszokas miatt van csak), sot, mostanaban egyre inkabb szokok ra a printf, sprintf hasznalatara
a sebessegrol meg annyit, hogy szerintem ugysem ezen a (talan) par tizezredasodpercen fog mulni a dolog, sokkal inkabb az adatbazislekereseken, egyeb muveleteken (es ez meg mindig sehol nincs a http kapcsolaton keresztuli kommunikacio lassusagahoz)
ha javitani akarok a kodom sebessegen, nem a kiiratas lesz az elso (sokkal inkabb az utolsok kozt), aminek nekiesek -
Siriusb
veterán
válasz
Sk8erPeter #6330 üzenetére
Na igen, ebben egyetértek, a fejlesztőkörnyezetben az általad említett módszerrel sokkal áttekinthetőbb a kód.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #6316 üzenetére
Lehet valamennyire trükközni a noscript tag stílusával, hogy bár a domban hátul van, előrébb jelenik meg, vagy egyéb mód növeled a hangsúlyát.
A másik hozzászólásodhoz: örülök, hogy nem csak én vagyok rendszeres stack overflow felhasználó
Egy jól összerakott oldalnál az ajax megoldás nem egyszerűsít, inkább némi többletmunkát jelent - a plusz javascript, meg annak eldöntése, a szűk tartalmat akarja-e csak a user, vagy azt az egész layouttal dekorálva. És a fejlesztés úgy történik, hogy először megírod, aztán belenyúlsz egy kicsit, hogy ajax-szal működjön. Amennyire csak lehetséges, az oldalaimon törekszem a javascript nélküli használhatóságra. -
zka67
őstag
válasz
Sk8erPeter #6301 üzenetére
Nem arról beszélek. A textarea-nak is ugyanaz az alapértelmezett fontja mint a pre-nek. Magyarul amikor beírja, ugyanúgy látja mint ha pre-vel íratná ki.
De nem tart semeddig se megváltoztatni a stílust. Azt kérte az illető, hogy ugyanúgy nézzen ki neki a szöveg, mint amikor beírja, erre pedig a pre a megfelelő megoldás.
-
j0k3r!
őstag
válasz
Sk8erPeter #6139 üzenetére
omg : )
na erre nem gondoltam, mukodik mostmar, koszonom.pm: amugy a koddal kapcsolatban valami eszrevetel? valami nem lekezelt biztonsagi res?
-
Inv1sus
addikt
válasz
Sk8erPeter #6133 üzenetére
Ezek a hibák valamennyire visszadobhajták egyébként a teljesítményt? Vagy csak szemantikailag nem helyénvalóak.
-
H.O.D.
senior tag
válasz
Sk8erPeter #6121 üzenetére
A for és a while a határoló kifejezés kiértékelése miatt lassabb., ha csak végig akarod pörgetni.
A foreach() - amennyire én tudom - csak referencia szerint olvassa a tömböt, ezért lassul le, ha közben hozzányúlsz (ugyanaz a szitu, mint amikot egy tömböt referencia szerint adsz át egy függvénynek és ott módosítod). -
Sk8erPeter
nagyúr
válasz
Sk8erPeter #6121 üzenetére
Na, már megint rosszat írtam:
"Van viszont read loop, ahol gyorsabb a for ciklus."
helyesen:
"Van viszont read loop, ahol gyorsabb a foreach ciklus." -
Inv1sus
addikt
válasz
Sk8erPeter #6121 üzenetére
Magyarán foreach kell a beolvasgatásra, for vagy while a módosításra.
Bár nem értem, miért ennyire lassú módosítás esetén.
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #6120 üzenetére
Ja jó, most látom, hogy itt épp az a lényeg, hogy pl. egy tömb minden elemének megváltoztatása esetén milyen rossz eredmények tudnak kijönni a foreach ciklusra a forral szemben, lásd Conclusion:
"Conclusion:
Proof in this example shows how functionally murderous the foreach() loop can be."DE ez a modify loop-ra vonatkozott.
Van viszont read loop, ahol gyorsabb a for ciklus."Conclusion:
In all cases I've found that the foreach loop is substantially faster than both the while() and for() loop procedures. One thing to note is that when using an entire loop from the start it's extremely good to use the reset() function in all examples."Érdekes eredmények jönnek ki egyébként minden frissítésnél, pl. több frissítés után már az idézőjel vs. aposztróf kérdés is megfordult.
"Is a there a difference in using double (") and single (') quotes for strings. Call 1'000x
[...]
Conclusion:
In today's versions of PHP it looks like this argument has been satisfied on both sides of the line. Lets all join together in harmony in this one!" -
Speeedfire
félisten
válasz
Sk8erPeter #6112 üzenetére
Majd lehet egyszer lemérem valami random változókkal.
Én is arra tippelek, hogy a 2. gyorsabb lehet, de hogy mennyivel. Meg ugye abban az esetben kicsit körülményesebb lehet a kódolás szerintem, legalább is nekem az első eset kényelmesebb, főleg ha sok adat van, sok változó....Tedd azt én is azt szoktam.
-
Speeedfire
félisten
válasz
Sk8erPeter #6109 üzenetére
Na most ha már sebesség akkor, ha jól emlékszem valaki anno mondta, hogy a sztring műveletek amúgy is lassúak.
pl mennyi lehet, egyáltalán mérhető-e a különség a 2 között?
Maradjunk a példádnál.1.eset:
echo '<img src="/images/misc/valid-xhtml10-blue.png" alt=".'$altimg'." height="31" width="88" />';
2.eset
<img src="/images/misc/valid-xhtml10-blue.png" alt="<?php echo $altimg; ?>" height="31" width="88" />
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #6103 üzenetére
Urban legend. Amíg nincs benne változó, addig nincs mérhető különbség az idézőjel és az aposztróf sebessége közt.
-
Speeedfire
félisten
válasz
Sk8erPeter #6103 üzenetére
Akkor én eddig tökéletesen csináltam. Bár én a sebességet nem néztem, csak az érdekelt, hogy ne kelljen a html elemeket escapelni.
-
Inv1sus
addikt
válasz
Sk8erPeter #6025 üzenetére
Elég nekem az a csomag, ami a php-t tartalmazza?
-
Speeedfire
félisten
válasz
Sk8erPeter #6004 üzenetére
Az lesz majd, a beküldésnél már az van az eleje óta. Csak a szerkesztésnél kellett valami gyorsan oda "firkantani".
Más: A session-őket nem lehet valahogy elkülöníteni?
Hírtelen most 2 admin panelen is dolgozok és mind a kettőnél ugyan azt a sessiont állítom be, és amikor a másikon be akarok lépni akkor már azt jelzi, hogy belépve.... -
Speeedfire
félisten
válasz
Sk8erPeter #6000 üzenetére
Tényleg iframe-s.
Mindegy mostmár hála a PH! debugger csapatnak kiderül mi volt a hiba. Ugye 1. óra $_POST['valami'] kapcsos zárójel és nem sima.
A lényege annyi volt, hogy adott egy admin panel ahol galériában lévő fájlokat lehet mostmár nem csak törölni, hanem hozzá is lehet adni. Csak ugye nem akartam külön menüpontot neki, hanem beágyaztam ezt a többihez.
Meg ugye már megint kihagytam az apró dolgokat....kezd néha idegesíteni, hogy ennyire figyelmetlen vagyok.
-
Speeedfire
félisten
válasz
Sk8erPeter #5964 üzenetére
Oh, hogy...
Kössz! -
Speeedfire
félisten
válasz
Sk8erPeter #5962 üzenetére
Köszi!
Esetleg azt megtudod mondani, hogy ezt, hogy lehetne escapelni? A netbeans szép piros jellel jelzi is, hogy bibi van. Php meg ugye error dob.
Már mindent próbáltam, de nem jön össze.echo '
<a href="'.$file.'" class="w" onmouseover="o(13, ''.$file.'');" onmouseout="f(13);">
<img src="'.$file.'" alt="'.$file.'"></a>
'; -
Speeedfire
félisten
válasz
Sk8erPeter #5959 üzenetére
Egyre jobban kell nekem!
Még csorog lefele, kicsi a sávszél. Az egész pakkot leszedem, háhta épp valami kell majd. Java, vagy más. Erőforrásból csak egyél egy mezei pc neki. Remélem azért nem memory_leaks-es.Más sehol sem találok leírást arra, hogy hogyan kell a tabulátor és egyéb hasonlókat használni php alatt.
A \n az működik, de más nem akar. Van valami leírás a neten erről. Egyszerűen, akárhogy keresem nem találom. -
Tele von Zsinór
őstag
válasz
Sk8erPeter #5920 üzenetére
Nekem sem működik, Chrome 9.0.597.83 beta, Ubuntu 10.10 x64.
-
Brown ügynök
senior tag
válasz
Sk8erPeter #5920 üzenetére
Igen, egyenlőre a Chrome beépített Developer Tools-át használom és majdnem olyan jó mint a Firebug. De a Firebug külön színezte a margót&eltartást.
Ez a HTML Validator bővítmény nem is rossz. Gyorsan tudsz vele ellenőrizni. -
Brown ügynök
senior tag
válasz
Sk8erPeter #5904 üzenetére
Ez csak egy példaoldal, kísérletezek. Nem az a lényeg mi van rajta, hogy mit írtam el, meg hogy mit hívok meg az osztályokból stb. Hanem ,hogy miért nem valid amikor a html kimenetnek annak kéne lennie.
-
LW
őstag
válasz
Sk8erPeter #5881 üzenetére
Értem, elnézést.
- - -
Itt elérhető a kis app amit készítek a CMSnek csúfolható alappakkomra.
Azt még nem tudom miért, de azért gondoltam megosztom veletek.
A lekérdezést még a másik topikban írt válasznál egyszerűbben sikerült megoldanom, bár így sem az igazi.Amúgy irodalomórán pattant ki az ötlet. Az osztályunkban mindenkinek adok egy felh/jelszó párost és meg tudjuk osztani egymással a tételeket, meg a többi agyromboló anyagot, amit érettségi előtt át kell nézni.
-
ArchElf
addikt
válasz
Sk8erPeter #5545 üzenetére
Stored procedure-re pedig:
MySQL Stored Procedure link, példa:
CREATE PROCEDURE kutyak_lekerese
(IN p_nev INTEGER, IN p_adatokkal INTEGER)
BEGIN
IF p_adatokkal = 0 THEN
SELECT * FROM view_kutyak WHERE nev = p_nev;
ELSE
SELECT * FROM view_kutyak_adatokkal WHERE nev = p_nev;
END IF;
ENDPHP Stored produre link, példa:
<?php
$stmt = $dbh->prepare("CALL kutyak_lekerese(?,?)");
$stmt->bindParam(1, $azonosito);
$stmt->bindParam(2, $adatokkal);
if ($stmt->execute()) {
while ($row = $stmt->fetch()) {
elemek_kiiratasa($row);
}
}
?>Amúgy ahogy korábban is mondtam (más topicokban is), konkatenálás helyett tessék paramétereket használni (már biztonsági szempontból is jobb, nem beszélve az átláthatóságról:
<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);
// insert one row
$name = 'one';
$value = 1;
$stmt->execute();
// insert another row with different values
$name = 'two';
$value = 2;
$stmt->execute();
?>AE
-
ArchElf
addikt
válasz
Sk8erPeter #5545 üzenetére
Csinálj rá egy view-t (vagy kettőt, igénytől függően) és akkor csak a view deklarálásakor kell egyszer leírnod (és átnevezgetned az esetleg azonos nevű, de más tartalmú) mezőneveket.
Utána már tudod *-al selectelni, és nem néz ki dzsunkának a php kód sem.
SELECT * FROM view_kutya WHERE akármi = @akármi;
SELECT * FROM view_kutya_adatokkal WHERE akármi = @akármi;AE
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #5535 üzenetére
Nem tudom, hogy lehet csak egy-egy mezőt átnevezni úgy, hogy közben a *-ot használod a mezők kijelölésére. Alternatíva lehet, hogy select * helyett csak azokat jelölöd ki, amik majd kellenek.
A tárolt eljárások egy sql-hez hasonlító nyelven megírt függvények, amiket az adatbázisszerver tárol és futtat. Lehet paraméterük, visszatérési értékük, stb., de ilyenekkel még csak oracle-ben foglalkoztam. Manual szerint a mysqlben is van hozzá valamennyi támogatás.
-
D@ni88
addikt
válasz
Sk8erPeter #5539 üzenetére
köszi
legalább nem törik fel könnyen -
omega88
csendes tag
válasz
Sk8erPeter #5518 üzenetére
Az errort ki írattam az idézőjelet kiszedtem és a következő hibaüzenetet kaptam:
"110 A kapcsolat időtúllépés miatt megszakadt"
Az utólsó számot felvettem 250-re ,de így is ugyanezt írja ki.
A script működik ha apacheval be teszem a localhost-ra ,de a (000space.com) webhelyen nem működik. Lehe hogy a domain zárolja vagy lehet ,hogy a try.hu ra történű átírányítás miatt. Vagy a kettő együtt?
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #5523 üzenetére
Erre már érdemes lehetne, ha nem lenne benne a $page alapján négyféle kimenet.
Három megoldás jut eszembe hirtelen:
- a problémát okozó join marad php kódban, a többi megy viewbe, és ahhoz joinolsz
- a $page-től függő feltétel marad php kódban, select-kor where-rel szűrve
- írsz egy tárolt eljárást, mert annak tudsz paramétert átadni, és az rakja össze a teljes, $page alapján szűrt queryt (meg a $data_needed alapján is, ha már tárolt eljárás)Sajnos view-t nem lehet paraméterrel létrehozni.
A szintaktika egyszerű, a második megoldáshoz így csinálnám:
CREATE OR REPLACE VIEW valami AS
SELECT * FROM tbl_img
INNER JOIN tbl_ossze ON tbl_ossze.kep_id = tbl_img.kep_id
INNER JOIN tbl_kutya ON tbl_kutya.kutya_id = tbl_ossze.kutya_id
INNER JOIN tbl_torzskonyv ON tbl_kutya.torzskonyv_id = tbl_torzskonyv.torzskonyv_id
ORDER BY tbl_kutya.nev ASC ; -
fordfairlane
veterán
válasz
Sk8erPeter #5516 üzenetére
Akkor viszont az általános, valóban érzékelhető, eme bolygón született weblapkészítők számára hasznos gyakorlati jelentőségével még mindig nem vagyok tisztában.
Ezzel én sem. A View egy lekérdezés szerveroldali prezentációban, virtuális tábla formájában, de mivel lekérdezéseket kliensoldalon is lehet eszközölni (kliensoldalként a megjelenítőréteg nyelvét értem, PHP vagy más), most már akár mysql-ben is akár több query-t is lehet egymásba ágyazni, sok értelmét nem látom. Anno régen, mikor SQL-t tanultam, akkor a példa a View-k használatára olyan eset volt, amikor az adatbázis adminisztrátor olyan szinten akarta korlátozni a hozzáférést az adatok és az adatszerkezetekhez, amit a beépített jogosultságkezeléssel nem lehet megoldani.
Előfordulhat, hogy view-k segítségével átláthatóbbá tehető bonyolult program- és adatszerkezet, és csak én nem használtam még eleget, nem ismerem a módszertant, mindenesetre egyszerűbb szituációk esetén nem hinném, hogy bármi haszna volna.
-
fordfairlane
veterán
válasz
Sk8erPeter #5506 üzenetére
"Ez elég jól hangzik, ezek szerint biztonsági szempontok is közrejátszhatnak abban, hogy view-t használjunk."
Amennyiben el akarod rejteni a táblaszerkezetet a lekérdező elől, akkor számíthat, de egyébként fölöslegesnek tartom. Egy plusz absztrakciós szintet visz be. Esetleg még akkor lehet hasznos, ha elképesztően bonyolult táblaszerkezet van, de csak néhány jellemző nézetre van szükség a program több részén, egyébként csak fölöslegesen bonyolítja a dolgokat.
-
omega88
csendes tag
válasz
Sk8erPeter #5513 üzenetére
Azt észre se vettem ,de nem ez a hiba forrása kivettem az fclose és semmi változás. Változtattam a host előtagját (tcp-ről udp-ra) így viszont akkor is oline-t ír ki ha nem fut a szerver, de még akkor is ha a gép se fut. Lehet hogy nem a scriptel van baj hanem a portforwardal rontottam el valamit.
-
biker
nagyúr
válasz
Sk8erPeter #5506 üzenetére
az a vicc, az én összes gépem összes böngészőjén jó. de eddig volt olyan gép amin sosem ment, és volt, amin délelőtt jó volt, délután nem.
nem kapta meg a sessiont -
L3zl13
nagyúr
válasz
Sk8erPeter #5506 üzenetére
Sajnos probléma a View-kkal kapcsolatban, hogy az ingyenes tárhelyeken a hibás provilege beállítás miatt soxor nincs engedélyezve a create view...
Konkrétan két helyen is belefutottam a hibába. (atw.hu, okhost.eu) -
biker
nagyúr
válasz
Sk8erPeter #5491 üzenetére
köszi, ez kellett, beletettemmég egy str_replacet magamnak.
MÁS
mysql_query
limit 10 kiadja az első 10 sort ASC esetén, utolsó 10-et DESC esetén
DE
ASC-re rendzve kellene az utolsó 10 sor, mint php-ben a 10,-1, de ezt ugye nem eszi meg
mert ha DESC limit 10, akkor az utolsó sor van elől.
nekem az utolsó sor kellene utolsónak, de az utolsó 10 sor a táblából -
Tele von Zsinór
őstag
válasz
Sk8erPeter #5486 üzenetére
Ne gondolj semmi komolyra, üres osztályok ezek, a lényeg annyi, hogy a típus más legyen (mert ez alapján működik a catch blokk). Azért az SPL hibaosztályaival is illik tisztában lenni, sokmindent lefednek gyárilag.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #5461 üzenetére
Az apache csinálja, de nem emlékszem, melyik beállítás miatt.
-
Tele von Zsinór
őstag
válasz
Sk8erPeter #5462 üzenetére
Gyakorlatban van pár saját hibaosztályom (mind az Exception-ből származtatva), ezeket dobom a megfelelő helyeken - értelmes message paraméterrel, mert az bekerül a logba.
Egyszerűsített példa:
<?php
try {
// ide jön az egész oldal
}
catch (Exception $e) { // nem minden hiba jut el idáig, de legkésőbb itt elkapjuk őket
//$e logolása
//hibaoldal
}Hibaoldal az kb. annyi, hogy az alap design köretbe bekerül egy "olyan hiba történt, amire nem voltunk felkészülve, de ne aggódj: értesültünk róla" jellegű szöveg.
Hibakezelés részben még vizsgálhatod, honnan érik el az oldalt (localhostról nézve jó eséllyel te vagy) és akkor meg kiírod a $e-t, melyik file és hol dobta, esetleg stack trace.
Nem tudom, mennyire mennek a régi, mysql_query()-nek átadott kérések a pdo-n keresztül, nálam a kódom és a pdo közt van még egy réteg, és az írja meg nekem a queryket
-
Speeedfire
félisten
válasz
Sk8erPeter #5464 üzenetére
Hát én mindenütt használok htaccess-t, mindenesetre érdekes.
-
Speeedfire
félisten
válasz
Sk8erPeter #5461 üzenetére
Hát ilyet eddig még nem tapasztaltam. Elég érdekes és még biztonság szempontjából sem valami jó dolog. Ahogy olvasom ezt localhost alatt van. Nem tudom elképzelni, hogy a php lenne a hibás, az apache meg magától nem szokott ilyet csinálni, de próba képen szerintem kapcsold le a php szervert hátha meglátod, illetve lehet, hogy a log fájlok adnak valami magyarázatot rá neked.
Új hozzászólás Aktív témák
Hirdetés
- Háztartási gépek
- Milyen autót vegyek?
- Egyre csak fejlődik az AI, emberek tízezreit rúgja majd ki a BT
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Sütés, főzés és konyhai praktikák
- Autós topik
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- IGP nélküli processzorokkal készül az Intel és az AMD
- WoW avagy World of Warcraft -=MMORPG=-
- További aktív témák...
- MacBook felvásárlás!! MacBook, MacBook Air, MacBook Pro
- Azonnali készpénzes félkonfig / félgép felvásárlás személyesen / csomagküldéssel korrekt áron
- Asus TUF A15 FA507NU - 15.6"FHD IPS 144Hz - Ryzen 7 7735HS - 8GB - 512GB - RTX 4050 -2.5 év gari
- Csere-Beszámítás! AMD Ryzen 5 9600X Processzor!
- BESZÁMÍTÁS! Asus TUF B450M R5 5600X 32GB DDR4 512GB SSD RTX 3060 XC 12GB Rampage SHIVA Chieftec 600W
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest