- 80% vs. 100% – Tönkreteszed az aksit, ha mindig feltöltöd? – Tech Percek #6
- HDD probléma (nem adatmentés)
- Micro Four Thirds
- Fujifilm X
- Jóárasítja két Arrow Lake-S CPU-ját az Intel
- Home server / házi szerver építése
- Vezetékes FEJhallgatók
- Soundbar, soundplate, hangprojektor
- AMD vs. INTEL vs. NVIDIA
- OLED TV topic
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
válasz
Lacces #15037 üzenetére
"De lemértem a feldolgozás idejét microtime()-al is, és hát érdekes módon az add(new DateInterval()) utasítással 10-ből 8 alkalommal gyorsabb volt, mint a modify()-os megoldás."
Ezt most ugye nem gondoltad komolyan?És akarsz róla beszélni, hány milliszekundumot nyertél vele?
-
Sk8erPeter
nagyúr
válasz
Lacces #15030 üzenetére
$dateTime->add(new \DateInterval('P'.$dayNumber.'D'));
Szerintem ez elég ronda.Szebb lenne helyette így:
$dateTime->modify('+1 day');Érdemes egyébként odafigyelni rá, hogy a DateTime osztálynak nagyon szépen megvannak a maga hülyeségei, ahogy írják is php.net-en, a hivatalos doksiban:
http://www.php.net/manual/en/datetime.add.php"Example #3 Beware when adding months
<?php
$date = new DateTime('2000-12-31');
$interval = new DateInterval('P1M');
$date->add($interval);
echo $date->format('Y-m-d') . "\n";
$date->add($interval);
echo $date->format('Y-m-d') . "\n";
?>The above example will output:
2001-01-31
2001-03-03"Ez remek, hogy tudnak róla, de nem ártana talán némi korrekció, ahelyett, hogy felhívják a figyelmet erre a hülyeségére.
-
Lacces
őstag
válasz
Lacces #15029 üzenetére
Megvan egy megoldás:
A $dayNumber-t majd nekem kell átkonvertálni, mert összevissza van a rövidített neve a magyar napoknak. (H, Sze, Cs, V, stb....)
A setIsoDate-nek átadom az aktuális évet és az aktuális hetet, ez mindig a hét első napjára (hétfő-re mutat).
Ezek után a nap numerikus értékét felhasználva növelem a napok számát (akár az eredeti angol-t is fel lehet így hasznáni PHP 5.1.0+-tól)
És akkor megkapom a kívánt dátumokat napra pontosan.
(már csak a time-ot kell belőni, ha valaki szertné még hozzá// TODO: Convert Hungarian day name to Number of day.
$dayNumber = 1;
$dateTime = new DateTime();
// Set to the first day of the current week.
$dateTime->setISODate(date('Y'),date('W'));
// Add the
$dateTime->add(new \DateInterval('P'.$dayNumber.'D'));
echo $dateTime->format('Y-m-d'); -
fordfairlane
veterán
válasz
Lacces #14747 üzenetére
Minek használsz két különböző xml feldolgozót, a SimpleXML-t a beolvasáshoz, a DOM-ot meg a kiíráshoz? A kiírás honnan tudja, hova kell írni? Eléggé zavaros ez.
Nem értem, mi a nehéz a SimpeXML használatában, ha javaban meg tudtad oldani ezt. Pár sor az egész, a php.net-es példa bőven elég hozzá.
<?php
$file = dirname(__FILE__).'/../../../../sms_data.xml';
$simpleXMLObject = simplexml_load_file($file);
$simpleXMLObject->pass = "000";
file_put_contents( $file, $simpleXMLObject->asXML() );
?> -
Tele von Zsinór
őstag
válasz
Lacces #14747 üzenetére
Közel jártál. Kezdetnek felejtsd el azt a simplexml dolgot, és próbáld meg így:
<?php
$xml = <<<END
<?xml version="1.0"?>
<node>
<pass>test</pass>
</node>
END;
$domd = new DOMDocument();
$domd->loadXML($xml);
$node = $domd->getElementsByTagName("pass")->item(0);
$node->nodeValue = "000";
var_dump($domd->saveXML());A kimenet pedig:
maerlyn@biliskner:~/tmp$ php xml.php
string(58) "<?xml version="1.0"?>
<node>
<pass>000</pass>
</node>
"Ami hiányzik: annak lekezelése, ha nincs pass node az xml-ben. A getElementsByTagName egy DOMNodeList-et ad vissza, aminek a számosságát le tudod kérni.
-
Lacces
őstag
válasz
Lacces #14588 üzenetére
Alapból gyökérséget írtam... Látszik, hogy idehaza, már nem gondolkodom úgy ahogy kellene...
Biztos, hogy nem minden egyes oldal betöltésre kéne ezt csinálni, ha felhasználók 100-ai látógatnák az oldalt..
Bár ahogy most olvastam, a sima XMLparser függvény a leggyorsabb, mások ezt írták.
LOL, inkább alszom egyet. -
Sk8erPeter
nagyúr
válasz
Lacces #14586 üzenetére
"Egyszer csak azt vettem észre, hogy én sosem használtam így az include '/path/to/file' a behúzást."
Hogy micsoda? Mármint úgy érted, még sosem include-oltál másik fájlt? Most szívatsz, ugye? Azt hogy csináltad eddig? Mit csináltál eddig?Most tényleg az volt a gondod, hogy másik fájlban voltak az osztályaid, és az a fájl nem volt behúzva vagy autoloadolva, és még ráadásul a hibajelzéseid is el voltak nyomva, és ha már így alakult, még hibanaplózás sem történt?
A vércukorszinteddel akkor az egészséged és hatékonyságod érdekében is javaslom, hogy kezdj valamit.
-
Sk8erPeter
nagyúr
válasz
Lacces #14435 üzenetére
Végül mivel oldottad meg?
Itt írnak ignore-ról, de nem olvastam el részletesen. -
Sk8erPeter
nagyúr
válasz
Lacces #14359 üzenetére
Hát akkor valamit nagyon félreértesz a webszerverhez érkező kérések kiszolgálásában, meg abban, hogy a SAJÁT WEBALKALMAZÁSOD milyen kimenetet generál...
A saját webalkalmazásod olyan kimenetet generál, amilyet mondasz neki, hogy generáljon (meg nyilván amire képes). Elvárnád a webszerveredtől (!), hogy a kiszolgálás során, még a kliensnek való elküldés előtt parse-olja az egész HTML-kimenetet, vizsgálja meg, szerepel-e benne olyan URL, amit te át szeretnél írni, majd szépen az összes ilyet írja felül, és csak utána adja oda a kliensnek a HTML-kimenetet?
Hát ez így elég vad lenne, és főleg totálisan értelmetlen, amikor a HTML-kimenetedet NEKED kell módosítanod, generálnod úgy, hogy az úgy nézzen ki, ahogy akarod.
A RewriteRule szerepe elég "egyszerű": kliens szól, hogy szeretné az ezen az URL-en lévő tartalmat megkapni, a webszervered pedig ezt a kérést megkapja, eldönti, mit kell ezzel az URL-lel csinálni, mindezt az alapértelmezett webszerver-beállítások vagy a .htaccess/web.config/egyéb felülbírálások alapján, és ha olyan URL-t talál, amit át kell írni, akkor átírja arra, és kiszolgálja az ott lévő tartalmat. Így fordulhat elő az, hogy megadhatsz egy olyan URL-t, ami "mögött" ténylegesen, fizikailag nincs fájl, de a webszervered elintézi, hogy a kérésed végül ráfusson egy fájlra, amiben pedig eldöntöd, hogy ettől függően milyen tartalmat szolgálsz ki.Így működik a Prohardver fóruma is: pl. a
http://prohardver.hu/tema/php_kerdesek_2/hsz_14201-14400.html
cím mögött nyilván nincs fájl, hanem a webszerver "futtatja rá" valamilyen fizikailag is létező fájlra ezt a kérést, például a háttérben lesz valami ilyesmi (fogalmam sincs az igazi megvalósításról, úgyhogy csak példa):
http://prohardver.hu/index.php?q=tema/php_kerdesek_2/hsz_14201-14400.html
VAGY
http://prohardver.hu/index.php?q=tema&topic_name=php_kerdesek_2&from=14201&to=14400
VAGY
...............
(számtalan példa lehetne még)
aztán ennek feldolgozása szerveroldali kóddal...
Remélem, így már tisztább."Erre kaphatnék egy példát? Ezt hogyan lehetne másképp átírni?"
Nem Te készíted az adott oldalt, amit kiszolgálsz?Csak mert erről sem írtál semmit...
Amire gondoltam:
van egy linked, például:
<a href="web/oldal1.php">asd</a>
szépen átírod a kódodban kis kezeddel úgy, hogy helyette inkább ezt generálja:
<a href="oldal1.php">asd</a>
... vágod... -
Sk8erPeter
nagyúr
válasz
Lacces #14357 üzenetére
"De ha a basic-2/index.php-ban van egy link, ami az oldal1-re mutat, rá kattintok, és akkor már ez jön elő a címsorba:
localhost/basic-2/web/oldal1.php
"Ha a link valóban a localhost/basic-2/web/oldal1.php címre mutat, akkor mégis minek kéne előjönnie a böngésző címsorában?
Miért nem írod át a linkek href attribútumában megjelenő URL-t? Aztán ha a megfelelő címre mutató átírás RewriteRule-lal helyesen működik, akkor nincsen gond...
Igazából ezért nem értem a problémát.A RewriteRule nem arra való, hogy az általad generált akármilyen HTML-kimenetnek a linkjeit egyenként átvizsgálja, és azokat is szépen átírja, érdekes is lenne...
"Jólvan, a képet nem jelenít meg"
Ne szórakozzá' mármég jó, hogy nem jeleníti meg innen, mivel itt egy komplett oldalnak a linkjét raktad be az <img> tag src-jébe, ahelyett, hogy a képre jobb klikkeltél volna, és "Open image in new tab" (böngészőfüggően hasonló a szöveg), aztán EZT linkelted volna be, és még működött is volna...
Amúgy vágod, van a Prohardvernek is képfeltöltője.Bár tény, hogy nem túl kényelmes, például a SnagItnek - ami egy igen jó kis screenshot- és videókészítő progi - is az Imgurhoz van pluginje, ami egyből felküldi oda, böngészőben való szarakodás nélkül.
-
Sk8erPeter
nagyúr
válasz
Lacces #14350 üzenetére
"A basic-2 mappában van a .htaccess"
Akkor viszont nem tudom, mi a gondod, mert most kipróbáltam Apache-on, és jól működik, amit írtam
Most erre létrehoztam egy könyvtárstruktúrát, így:...
basic-2/
|- web
|- index.php
|- .htaccess
|- z_index.php
...A basic-2 könyvtárban direkt z_index.php fájl van, így nem is tud ráfutni ottani kezdőlapra (bár kiíratható lenne, hol vagyok épp).
A basic-2/.htaccess fájlban mindössze ez szerepel:
RewriteEngine on
RewriteRule ^$ web/index.php?r=site/login [L]a web/index.php fájlban pedig kiírom, hogy "web", meg egy blabladumát, aztán egy var_export()-tal kiírom a $_GET tömb értékét, és kész, és itt egy screenshot az eredményről:
Ez alapján ez pont az az eredmény, amit Te szeretnél.
Egyébként itt elég következetlenül írtad, mert egyszer úgy tűnik, csak cím-átírásról, egyszer pedig átirányításról beszélsz, a kettő pedig nem ugyanaz.
"Bár itt igazság szerint azt sem értem, hogy miért a (I)web(/I) és nem a (I)/web(/I) működik."
Mit nem értesz rajta?A basic-2 könyvtárban vagy, amiben van egy web alkönyvtárad.
A RewriteRule ^$ web [L] viszont nem fogja neked beírni a címbe a kívánt query stringet..."Ha ezt írom be: http://localhost/basic-2/
Akkor ez legyen a böngészőben: (I)http://localhost/basic-2/index.php?r=site/login"
Na várjunk.
Akkor tehát azt akarod, hogy ha valaki beírja a basic-2 címet, akkor kerüljön átirányításra a basic-2/index.php?r=site/login címre, ami viszont átíródik a basic-2/web/index.php?r=site/login címre?
Picit egyértelműbben plíz. -
Sk8erPeter
nagyúr
válasz
Lacces #14291 üzenetére
Most nem tudom kipróbálni, úgyhogy csak fejből írom, de az alábbiakat tesztelhetnéd:
ha a localhost fő document rootjába akarod tenni a .htaccess-t, akkor abba:
RewriteEngine on
RewriteRule ^basic-2/$ basic-2/web/index.php?r=site/login [L]
## ezután jöhet a többi RewriteRule!!VAGY ha magába a basic-2 könyvtárba rakod a .htaccess-t, akkor esetleg ez:
RewriteEngine on
RewriteRule ^$ web/index.php?r=site/login [L]Aztán persze lehet, hogy ez így nem jó, most csak gyorsan bepötyörésztem, egy próbát megér, ja, és természetesen legyen bekapcsolva a mod_rewrite modul az Apache-ban!
-
AtHoS
nagyúr
válasz
Lacces #14303 üzenetére
Az összeépítésről csak sejtéseim vannak, tényleg nem értek hozzá
Van több téma mappa is, melyek választhatóak wp admin felületén a sablonoknál, így józan paraszti eszemmel úgy gondolom azok nem ehhez a témához tartoznak.
Rákérdeztem nincs-e valamerre elmentve a használt téma eredeti verziója, bár, ha "mókoltak" vele, akkor talán az sem visz előbbre. Minden esetre köszi a helpet
-
AtHoS
nagyúr
válasz
Lacces #14296 üzenetére
Még a régi tárhelyen feltörték az oldalt és átírták a header.php-t.
Ezt helyrerakták akkor (találtam a téma mappában egy ugyanolyan nevű, de a végén egy aláhúzást tartalmazó mappát, ami a témát tartalmazza)Mivel nem működött a jobb oldalsáv, "kínomban" a WP sablonválasztó részén újra kiválasztottam ugyanazt a témát. Természetesen a hackelt verzió köszönt be. Itt kezdtem nézelődni a téma mappában és találtam az előbb írt tartalmat. Kicseréltem a header.php-t a másik mappában lévőre, de pontosan ugyanaz az eredmény: jobb oldalsáv nincs.
A srác aki átrakta az oldalt mókolt-e vele azt nem tudom. Szóltam barátomnak, hogy jó lenne a régi tárhelyről lementett fájlokat megkapnom, de nem tudja elérni a srácot. Viszont adtál egy ötletet. Benézek cpnle-be, mert elvileg napi mentése készül a tárhelyről, hátha korábbi mentésből tudok valamit kezdeni
-
Tele von Zsinór
őstag
válasz
Lacces #14119 üzenetére
Integrációs teszt - több komponens együttes működésének ellenőrzése.
Headless - nincs rajta grafikus felület, szervereken ez az általános.
A PhantomJS egy teljesértékű, webkit alapú böngésző, csak a nevében látod, hogy JS. A gyakorlatban nálam egy úgy megy, hogy Behatban van a teszt, a Mink be van húzva extensiönnek, annak a Sahi driverét használom, ami meg a PhantomJS-t használja böngészőnek. Összetettnek hangzik, de vagy tíz perc volt belőni elsőre; és remekül muzsikál azóta is.
-
Tele von Zsinór
őstag
válasz
Lacces #14116 üzenetére
A PHPUnit (ahogy a neve is sugallja) unit tesztek írását segíti. A selenium integrációs tesztekhez használható.
A különbség: unit tesztben azt próbálod ki, hogy az a-ból b-t csinál ez az x osztály y függvénye z paraméterekkel hívva. Integrációs tesztben meg komplex működést vizsgálsz, szóval mondjuk a regisztráció oldalon rossz adatokat megadva kapsz-e helyesen hibaüzenetet.
Integrációs tesztekhez nézd meg a Behatot, én ezzel játszom mostanság. Selenium helyett PhantomJS-t ajánlom, jóval gyorsabb, és headless szerveren is jól működik.
-
sztanozs
veterán
válasz
Lacces #13371 üzenetére
A level++ lefele azért nem változik, mert miután átadta az értékét, utána növekszik egyel; így az egyel lejjebb levő szint is ugyanazt az értéket kapja meg. (Persze, ha jól feltételezem a level++ működését ebben az esetben - ha nem, akkor ugyanúgy működik, mint a ++level; amit azért kicsit kétlek).
++ működése általában
1)
a = 0;
b = a++; // b = 0; a = 1
c = a; // c = 12)
a = 0;
b = ++a; // b = 1; a = 1
c = a; // c = 1Counter - számláló - ahogy lerajzoltam rájöttem, hogy nem is igazi számláló, hiszen több elem kaphat ugyanolyan értéket. A probléma abban van, hogy a ++ megváltoztatja a változó értékét, és az azonos ágon levő leágazások nem ugyanazt az értéket kapják, hanem mind eggyel nagyobbat.
Branch - ág (ha fa struktúrában képzeljük el a felépített listát, akkor egy ág az, amiről bármi leágazik, és levél az, amiből már nem jön ki semmi) - a fenti ben már aszsem leírtam, hogy gondoltam... -
sztanozs
veterán
válasz
Lacces #13360 üzenetére
Bevezetsz még egy változót, pl $depth. Amúgy az UL helye szerintem a for cikluson kívül volna:
function GenerateNavHTML($nav, $depth = 0)
{
$html = '<ul>';
foreach($nav as $f)
{
$html .= '<li>';
$html .= '<a href="' . $f['feladat_kod'] . '">' . $f['rovid_nev'] . '</a>';
$html .= GenerateNavHTML($f['sub'], $depth + 1);
$html .= '</li>';
}
$html .= '</ul>';
return $html;
}Itt ugyan a $depth változó nincs felhasználva, de azt csinálhatsz vele amit akarsz.
-
Lacces
őstag
válasz
Lacces #13359 üzenetére
Esetleg ha ez nyújt plusz infót a HTML-s kigenerálás:
Pedig szépen kint is látszik az <ul><li>-vel a hierarchia, de "mégsem látom a fától az erdőt"...function GenerateNavHTML($nav)
{
$html = '';
foreach($nav as $f)
{
$html .= '<ul><li>';
$html .= '<a href="' . $f['feladat_kod'] . '">' . $f['rovid_nev'] . '</a>';
$html .= GenerateNavHTML($f['sub']);
$html .= '</li></ul>';
}
return $html;
} -
cucka
addikt
válasz
Lacces #13305 üzenetére
Fát kell építeni és nem bonyolult.
1. Beolvasod az összes menüpont adatait egy tömbbe. Az adatbázisban eltárolod minden elemhez, hogy a struktúra hanyadik szintjén van, így aszerint rendezve tudod lekérdezni. Ezzel biztosítod, hogy egyszer végiglépkedve a tömbön fel tudd építeni a fát.
2. A tömbön végigmész és felépíted a fát. Egy elemet tárolhatsz egy tömb elemeként vagy objektumként is, mindegy, én OOP-t javaslok.
3. Szélességi kereséssel végigiterálsz a fán, kiírod a menüt. Ha OOP-sen építetted fel a fát, akkor a fa elemei "ki tudják írni magukat", szóval egész elegánsan megoldható. -
sztanozs
veterán
-
cucka
addikt
-
Soak
veterán
válasz
Lacces #12762 üzenetére
Ilyenkor érdemes megnézni a dokumentációt, annál talán nincs hitelesebb forrás ... http://httpd.apache.org/docs/2.2/rewrite/flags.html
-
válasz
Lacces #12617 üzenetére
Nem raktam kódot, mert elég egyszerű, de pótolom. Itt az érdemi rész, ezen hasal el:
$fp = fopen($tmpName, 'r');
$content = fread($fp, $fileSize);
$content = addslashes($content);
fclose($fp);A httpd.conf-fal meg csak az a baj, hogy tudtommal restartolni kell hozzá az apacsot, ami nálam nem járható.
-
-
Soak
veterán
válasz
Lacces #12477 üzenetére
Én itt szoktam matatni ha végleg elveszek : http://txt2re.com/
-
Tele von Zsinór
őstag
válasz
Lacces #12271 üzenetére
A salt hasznossága nem abban rejlik, hogy titkos, hanem hogy segítségével nem lehet rainbow table-öket használni a megszerzett jelszavak megfejtésére. Szóval ha minden felhasználónak más és más értéket generálsz, akkor a támadónak minden felhasználónál nulláról kell indulnia.
Kombináld ezt egy lassú algoritmussal, mint az általam korábban linkelt új php függvények, és egész jó védelmet kapsz.
-
Sk8erPeter
nagyúr
válasz
Lacces #12106 üzenetére
Azt senki nem mondta, hogy ne lehetne attól még érdekes megoldásokkal találkozni ASP.NET-ben is...
(#12107) Speeedfire :
ha nem lenne használható, akkor ez a topic már rég döglött lenne, vagy meg sem született volna.
Használható, viszont sajnos megengedi a gányolást, és ez alapvetően káros, én jobban örülnék neki, ha sokkal szigorúbb és főleg típusos lenne. Tudom, akkor térjek át az ASP.NET-re. -
Peter Kiss
őstag
válasz
Lacces #12099 üzenetére
Próbáltál valami okosat mondani ezzel a kódbiztonsággal kapcsolatban, de valahogy nem sikerült. Itt nem arról van szó, hogy egy fejlesztő mennyire ügyes, hanem egyáltalán a lehetőségek milyenek: egy gyengén típusos nyelvnek esélye sincs egy típusos, fordított nyelvvel szemben, de, ha nagyobb képet nézem, akkor az vicc például, hogy a DateTime osztály működése PHP-s verziókon keresztül billeg, hibásan működik, ez nem megengedhető.
-
Peter Kiss
őstag
válasz
Lacces #11890 üzenetére
A PHP ad rá "keretet" (http://php.net/manual/en/session.customhandler.php), több gyakorlatilag nem is kell, mert onnantól egyértelmű, mikor mit kell csinálni, a megvalósítás pedig már nagyban függ attól, mi van a rendszer körül.
-
Peter Kiss
őstag
válasz
Lacces #11888 üzenetére
Bármikor célszerű lehet, ha nagyobb kontrollt szeretnél a session-ök fölött (néha a biztonságot is említik itt), de számolni kell a remote call költségeivel, viszont, ha több alkalmazás függ elvileg azonos session-öktől, akkor kötelező adatbázisba (vagy más tárolóba) központosítani mindent (ugyanez ll arra is, ha az alkalmazást elosztott környezetben szolgálod ki több webszerverről).
-
Sk8erPeter
nagyúr
válasz
Lacces #11624 üzenetére
"De amúgy /index esetén és atw-s 404-es hibát kapsz. Nem tudom minek hívják ez, amikor a .php-t lehagyod az url routing során, szkript fájlnév, vagy valami ilyesmi, na az ilyen linkek nem működnek."
És az miért lenne baj, ha nem működik, ha lehagyja a végét? Sztem jobb is, hogy így van konfigurálva.Ja, egyébként Apache-nál a kiterjesztések nélküli fájlkeresgélést ez állítja: MultiViews. (Példa a .htaccess-ben: Options +MultiViews, de ez sztem kerülendő. Felesleges load a szerverre.)
Amúgy sztem eleve az a baj, hogy azon a rakás szar ATW-n teszteli.
-
fordfairlane
veterán
válasz
Lacces #11559 üzenetére
Az a baj, hogy az $a az egy false... pedig $r-nek van értéke.
$r egy mysql resource, a while pedig addig teker, amíg a fetch false-sal tér vissza. Így tehát normális, hogy $a-ban false van a while ciklus után. Ez valószínűleg egy üres result, a query feltételei nem teljesülnek egy sorra sem.
-
Sk8erPeter
nagyúr
válasz
Lacces #11562 üzenetére
Miért label_description szerint rendezed a tömböt, miért nem id szerint?
Amúgy a $data tömböt kéne még deklarálni a ciklus előtt, bár nem mintha pont ez lenne a baj.
$data = array();
while(...){
$data[] = ....;
}állítsd kivételdobálásra a PDO-t:
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);Van még ilyen is: errorInfo
Az eredményhalmazon egyébként foreach-csel is végig lehet rohangászni, és érdemes is, ha már támogatja az ilyen jellegű iterációt:
foreach ($stmt as $key => $row) {
// ....
} -
Sk8erPeter
nagyúr
válasz
Lacces #11559 üzenetére
Tényleg nem sokat árultál el a szerkezetről, ahogy Athlon64+ hsz.-éből is kiderül.
"Ilyennel még nem találkoztam az eredménynél:
r: resource(52) of type (mysql result)
a: bool(false)
datas: NULL
"Az $r értelemszerűen egy erőforrás-azonosító, az $a-nak a false visszatérési értéke meg gondolom jelzi, hogy valami gáz van, a $datas meg ebből következően üres.
Csak jelzem, hogy a data (adatok) eleve többesszám, nem kell mögétenni az "s"-t. -
Soak
veterán
-
Sk8erPeter
nagyúr
válasz
Lacces #11549 üzenetére
Nincs mit! Hát én meg nem gondoltam volna annak idején, hogy egyáltalán össze fogom tudni ezeket hasonlítani, de a GlassFish fényévekkel modernebb volt akkoriban, kb. asszem 1,5 éve, mint a Tomcat. Van egy hozzá tartozó, normálisan kezelhető, dokumentált (!) admin-felület, a Tomcatnél meg van kábé 10 lehetőség, azt' csá. A GlassFish-nél meg minden szart bekonfigolhatsz, meg nem '90-es évek feelingje van.
De amúgy rohadtul f×ngom sincs a Java-s webfejlesztésről.(ASP.NET inkább.)
-
Speeedfire
félisten
válasz
Lacces #11539 üzenetére
Keress rá, apache tomcat.
A virtualhostra meg nem tudok mit írni. Így keress rá. Van pár cikk.
Szerintem csinálj egy homokozót virtualbox alatt, ott tudod tesztelgetni.Sokat nem kell vele szerintem molyolni. Beállítod a sima apachot, felnyomod a tomcat-et, aztán hajrá. Itt ph-n is van cikk debian-ról, elég részletes, webhosting kialakításról. [link]
-
KKope
tag
válasz
Lacces #11416 üzenetére
Hallod ezt nem hiszem el.
Ha így használom:
mysql_query("DELETE FROM mozgastetel WHERE mozgastetel_id='" . mysql_real_escape_string($_GET['id'])."'") or die(mysql_error());Akkor az eredmény: Access denied for user ''@'localhost' (using password: NO)
Ha kiveszem az or die(mysql_error()) akkor meg lefut a lekérdezés. Bár a sort továbbra sem törli ki
Ahogy átadom a kódot az helyes? <td><?php echo "<a href=\"inc/teteltorles.php?id=" . $sor['mozgastetel_id'] . "\">Törlés</a>";?></td>
-
-
KKope
tag
válasz
Lacces #11273 üzenetére
Igen, valószínűleg erre lesz szükségem.
$list = mysql_query ("SELECT sz.szallitonev, t.telephelynev, th.telephelynev, mt.cikkszam, j.jellegnev, m.datum
FROM mozgas_fej as m
LEFT JOIN szallito as sz ON sz.szallito_id=m.szallito_id
LEFT JOIN telephely as t ON t.telephely_id = m.honnan
LEFT JOIN telephely as th ON th.telephely_id = m.hova
LEFT JOIN mozgas_tetel as mt ON mt.bizonylatszam = m.bizonylatszam
LEFT JOIN jelleg as j ON j.jelleg_id = m.jelleg_id)");
while ( $row = mysql_fetch_array ($list))
pl: echo $row[szallitonev]Sajnos a lekérdezés nem ad semmi eredményt.
Hol rontottam el?
-
Tele von Zsinór
őstag
válasz
Lacces #11264 üzenetére
Ezt a cikksorozatot ajánlom, Fabien Potencier írta, aki például a symfony keretrendszer eredeti szerzője. What is Dependency Injection?
-
Peter Kiss
őstag
válasz
Lacces #11264 üzenetére
A dependency injection-ben semmi sötét mágia nincs, annyiról szól, hogy egyértelműen megmondod, mi kell az adott objektumot létrejöttéhez/működéséhez, vagy épp egy metódus működéséhez ahelyett, hogy valami kiskaput válassz: ez lehet a new operátor (pfuj
) vagy épp az említett singleton vagy singleton-jellegű global object. Constructor-okban lehet sokszor olyat látni, hogy a paraméterlistája tök üres, de van benne vagy 5-ször valamilyen példányosítás new-val vagy mással (ez egyébként amiatt is bukta megoldás, hogy a ctor-okban nem végzünk semmilyen műveletet gyakorlatilag [példányosítás, adatbázishoz kapcsolódás, bármi ilyesmi]).
A container ezen csak annyit segít, hogy ne kelljen annyit írnod, hogy egészen egyszerű legyek. Ha lenne egy olyan osztályod, aminek a ctor-a kérnek másik 3 objektumot, akkor nem szívesen írnál ilyeneket mindenhol, ahol kellene:
new (new (), new (), new ())
A container-ek ezen tudnak segíteni: az adott megoldás leírását használva felépíted, hogy, ha valaki X objektumot kér, akkor annak a függőségeit hogyan oldja fel, és utána csak ennyit kell írnod:
container.GetService(type)
Általában a container-ekhez járnak különböző lifetime service-ek (vagy írhatsz sajátot), ilyennel tudsz singleton-féle működést előidézni.
---
Az a final indoklás nem győzött meg, teljes osztályt szerintem a legritkább esetben kell lezárni. Ha azt szeretnéd, hogy valami az öröklődés ellenére is változatlan maradjon, azt rakd private-re vagy final-re, és kész.
-
Peter Kiss
őstag
válasz
Lacces #11262 üzenetére
Azt, hogy mit zársz le, és mit nem, nehéz kérdés, általában érdemes arra törekedni, hogy kiterjeszthető legyen majdnem minden osztály, de a kötelező dolgokat ne ronthassa el senki sem.
A singleton faszság, azért.
Ha singleton-szerű működést akarsz, akkor használj dependency injection container-t (de egyébként is érdemes).
---
Egyébként a válaszoló is csinál érdekeset, a beállítások betolásának biztosan nem így kellene lennie (parse_ini_file-os történetre gondolok), illetve szerintem ctor-ban nem szabad kapcsolódni az adatbázishoz (én is csinálok ilyeneket, de fokozatosan jövök le a cuccról).
-
Sk8erPeter
nagyúr
válasz
Lacces #10753 üzenetére
Jójó, értjük, ne magyarázd agyon.
Tehát a lényeg röviden: minden hirdető júzer, de nem minden júzer hirdető.
Ezért a hirdetőhöz kapcsolódó extra adatokat külön táblában szeretnéd tárolni, hogy ne legyen csupa NULL annál a júzernél, amelyik nem kíván hirdetni. Ez így teljesen érthető és jogos szempont.
De az SQL-topicban elsőre úgy tűnt, mintha a hirdetőt külön állatfajnak tekintenéd a júzertől.De akkor tisztáztuk.
-
CSorBA
őstag
válasz
Lacces #10750 üzenetére
Szia!
Pont most csinálok egy ilyen jellegű oldalt. Biztos így gondoltad, hogy "1 hirdetőhöz, 1 hirdetés tartozik?" Szerintem gondold át, egy hirdetőnek lehet több "terméke", azaz több hirdetései is, nem?
Nálam úgy van, hogy van egy user tábla, hátha mondok érdekeset (vagy ti nekem
):
id (auto increment)
email, passhash, (emaillel lép be)
email publikus-e? email meg van-e erősítve (csak akkor tud belépni, ha ezt megteszi előtte)
számlázási cím, postázási cím (mindkettő lebontva irányítószám, város, utca)
telefonszámok (előhívó, körzet, szám)
online (engedélyezve van-e?)
regdate, utoljára itt, utolsó belépés
ügyfél típusa (vég v. magánszemély),
ügyfél titulus, keresztnév, vezetéknév, cégnév (ha nem magánszemély)Illetve van maga a termékek táblája. Aminek persze van egy id-je (ez a termék azonosítója), meg van egy userid-je, ami ugye mondhatni foreign key a usertábla id mezőjéhez.
Ha user adatlapon vagyok, akkor lekérdem a termékek táblájából a userem idjének megfelelő userid mezővel egyező sorokat.
Ha a termék adatlapján vagyok, akkor pedig a termék táblájának userid mezője alapján kérem le a users táblából a felhasználót.
Jah igen, a szerkesztés: Én úgy oldom meg, hogy sessionban tárolom az épp belépett user id-jét. Így mindig ezt ellenőrzöm, mikor szerkeszt egy terméket. Azaz ha a termék userid-je egyezik a sessionban tárolt id-vel, akkor jelenik meg csak a szerkesztési lehetőség. Meg persze a tényleges szerkesztésnél ezt megint le kell ellenőrizni (nehogy valaki átírja az url-ben, vagy postnál a postolt azonosítót, stb stb. ).
-
Cathfaern
nagyúr
válasz
Lacces #10747 üzenetére
Szerepkörnek ott van jelentősége, amikor a felhasználókat valamilyen csoportba szeretnéd rendezni. Például az teljesen jó ötlet, hogy a hirdetők legyen egy szerepkör, és csak ezen szerepkörbe tartozók láthassák a hirdetőknek szóló menüket.
De a szerkesztést ezzel nem tudod megoldani, mivel ott egyedileg kell figyelni a dolgokat. Szerintem a legegyszerűbb, hogy mivel egy hirdetéshez mindenképp csak egy hirdető tartozhat (ha jól értem nincs olyan, hogy egy hirdetést több hirdető kezel), ezért egyszerűen a hirdetésbe mentsd bele a hirdető ID-ját, és csak ezen ID-jú felhasználónak engedd szerkeszteni. És akkor nem kell külön kapcsoló tábla -
Lacces
őstag
válasz
Lacces #10747 üzenetére
Esetleg a mögötte lévő adatbázist megérteni segíti a következő hsz-em:
http://prohardver.hu/tema/sql-kerdes/hsz_1353-1353.html -
PazsitZ
addikt
válasz
Lacces #10673 üzenetére
itt talán az url-ben lévő port-al lehet a gond. file_get_contents egyébként se távoli elérésre találták ki.
Szvsz. a Curl szerintem megoldaná ezt a gondot CURLOPT_PORT opció használatával.
Új hozzászólás Aktív témák
Hirdetés
- Acer Predator Helios 300 - 15,6"FHD IPS - i7-7700HQ - 8GB - 256GB SSD+1TB HDD - GTX 1060 6GB -MAGYAR
- HP LaserJet Pro M404dn
- ÚJ aktiválatlan Apple iPhone 16 Pro Max 256GB ! 1ÉV nemzetközi APPLE GARANCiA
- teljesen ÚJ aktiválatalan Apple iPhone 16 Pro 256GB ! 1ÉV nemzetközi APPLE GARANCiA
- HP ProDesk 600 G2 Mini PC (i5,16GB, 256GB+1TB, Win10) Csere/Beszámítás!
- 18 éve! Billentyűzet magyarítás magyarosítás. Festés vagy lézerezés és egyebek! 3 lehetőség is van.
- Apple iPhone 13 128GB, Kártyafüggetlen, 1 Év Garanciával
- Ryzen 7 CPU-k
- Huawei Nova Y90 128GB, Kártyafüggetlen, 1 Év Garanciával
- ÁRGARANCIA! Épített KomPhone Intel i9 14900KF 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest