Új hozzászólás Aktív témák
-
Brown ügynök
senior tag
Szükségem lenne egy kis rálátásra. Adott egy elég nagy rendszer elég nagy adatbázissal (~900 tábla). Ezt a rendszert kell hamarosan újratervezni. Arra gondoltam, hogy lehetne alkalmazni orm-t ( doctrine 2-t) mert elég sok előnnyel járna. Felvetődött ezzel kapcsolatban pár kérdés.
- A doctrine új adatbázissémát kíván. Van-e mód arra, hogy az adatokat könnyen importáljuk a régi adatbázisból az újba?
- Ha később bővíteni kell az adatbázist, akkor kézzel kell felvinni az új táblákat? Nincs mód az új entitás szerint legenerálni az új táblát és kapcsolatait?
Ha ezenkívül van még valakinek tanácsa, az is jöhet.
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz Brown ügynök #9732 üzenetére
Oké, a másodikra: van olyan parancs a doctrine-ban, hogy doctrine orm:schema-tool:update --force.
Az első kérdés még fennáll.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
echo "{$obj->values[3]->name}";
Valaki megvilágítaná nekem, hogy milyen szerkezeti felépítés kell ahhoz, hogy a fent ábrázolt módon kapjuk meg a name attribútumot?
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz fordfairlane #10638 üzenetére
Ah... Inkább nem szólok semmit.
Köszi.
Sk8ter-nek is.Visszavonva. A duma nem kell.[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
-
Brown ügynök
senior tag
A php script életciklusát szeretném jobban megérteni. A kézikönyvben három(?) állapot van. parse, compile, run. Ezek hogy követik egymást? Én így értelmeztem:
parse -> compile -> run
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz j0k3r! #10855 üzenetére
Találtam egy jó diasorozatot: [link].
A 18. dia mutatja a folyamatot magát:
(scan) -> parse -> compile -> execute
Tulajdonképpen a értelmezés (parse) után lefordítja (compile) gépközeli nyelvre a kódot, így jön létre az opcode. Úgyhogy szerintem nem voltál messze az igazságtól.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz j0k3r! #10869 üzenetére
Ezt azért szerettem volna tisztázni, mert a PHP manual szerint vannak hibák amik fordításkor (compile-time) és vannak, amik futáskor (run-time) időben születnek és tudni akartam, mi történik az egyes "időkben".
Compile-time-ban van tehát az értelmezés és fordítás, run-time-ban pedig maga a futtatás. A folyamat tehát helyesen:
scan -> parse & compile -> execute
Most már befejeztem.
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
Az is segíthet, hogy jobban megértsd miről beszél a kolléga, ha elmélyülnél a PHP manualban (jelen esetben mondjuk az osztályok működésébe [link]) majd, ha minden világos egy keretrendszerben. Egy keretrendszer megismerése sokat segíthet a saját kódod megírásánál. Ehhez persze idő és türelem kell.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz SureStudio #10970 üzenetére
Egy egyszerű példa:
define("PSW", "Ide írod a jelszót");
if ( PSW === $_POST['amit_a_user_irt']) { //ha egyezik, átirányítod
header("Location:http://ahova-akarod.com");
exit;
} else { // ha nem egyezik meg visszairányítod
header( "refresh:2;url=http://ahol_a_jelszót_kéred.com" );
echo "Helytelen jelszó! Próbáld újra";
exit;
}[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz SureStudio #10972 üzenetére
Ha több inputot akarsz vizsgálni akkor több állandót kell deklarálnod:
define("ALLANDO_NEVE", "erteke");
majd az if feltételnél:
if (PSW === "pass" && ALLANDO_NEVE === "erteke" )
Az "&&" jel azt mutatja, hogy mindkét feltételnek teljesülnie kell.
és így tovább.
Persze ez nem alkalmas arra, hogy komplett beléptetőrendszerként funkcionáljon! Csak egy egyszerű példa.
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz SureStudio #10978 üzenetére
Abba a fájlba is belerakhatod ahol ezt a beléptetést el kell végezni. Ez esetben a fájlnév .php-ra végződjön. De külön fájlba is rakhatod (.php végződéssel természetesen).
A form action-je a fájlra mutasson, ahol az ellenőrzés végbemegy!
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz SureStudio #10980 üzenetére
Én fogalmaztam pontatlanul. Ellenőrzést kellett volna írnom beléptetés helyett, Nem lehetetlen, de mi lenne ha kipróbálnád?
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz SureStudio #10982 üzenetére
Jelöld ki a <form>-tól a </form>-ig a kódodat és illeszd be a következőt:
<?php
define("PSW", "jelszó");
if ( isset($_POST['jelszo']) ) {
if ( PSW === $_POST['jelszo']) { //ha egyezik, átirányítod
header("Location:http://www.facebook.com");
exit;
} else { // ha nem egyezik meg visszairányítod
header( "refresh:2;url=http://www.surestudio.freebase.hu" );
echo "Helytelen jelszó!";
exit;
}
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="tesztUrlap">
<label for="email">E-mail</label>
<input name="email" id="pass" type="text">
<label for="jelszo">Jelszó</label>
<input name="jelszo" id="pass" type="password">
<input type="submit" value="Belépés" />
</form>Akkor vegyük sorba:
- A form mező action-jébe beraktuk, hogy az űrlap elküldésekor ezt a fájlt futtassa. <?php echo $_SERVER['PHP_SELF']; ?>
- Amikor az egyes html tagek attribútumainak adsz értéket, akkor nem kell ";"-el lezárni. Helytelen: name="jelszo;" Helyes: name="jelszo"
- Ne használj ékezetes betűket értékadásnál, csak az angol abc betűit. Helyes name="jelszo". Kivéve, ha az a szöveg kikerül a képernyőre: value="Belépés"
- Az input mező "name" értéke lesz a $_POST változóban, így tudsz majd hivatkozni rá (ez esetben tehát a $_POST["jelszo"]-ba kerül az, amit a felhasználó begépelt).
- A form elküldését szintén input taggel kell megoldanod:
<input type="submit" value="szöveg" />- A isset($_POST['jelszo'] kóddal pedig azt vizsgáltuk, hogy létezik-e már a jelszo értéke. Ha igen, akkor megvizsgáljuk, hogy ugyanaz-e amit te megadtál (jelen esetben "jelszó").
- Ja, és így mentsd el: Fajlnev.php
Tudom, kicsit sok a duma de nem leszek mindig itt, hogy megírjam.
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz Brown ügynök #11002 üzenetére
Jobban belegondolva, ennek akkor van értelme, ha ugyanazt az űrlapot több oldalról is elküldhetik és te arra az oldalra akarod visszairányítani ahonnan küldte. Ilyenkor is meg kell azonban vizsgálni, hogy arról az oldalról (HTTP_REFERER) küldték-e a kérést, ahonnan te várod. Ha nem, az illetéktelen hozzáférésre utal (CSRF).
Egyébként szerintem egyszerűbb, ha simán megadod, hogy hova irányítson.
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
Szerintem itt alapvető probléma néhány embernél, hogy úgy gondolkodik, hogy "ki tudja, ha én nem". Hőzöng, újjal mutogat a másikra, hogy mekkora szar kódot írt. Szerintem alázatosabbnak kéne lennünk, nem biztos, hogy mindig az a legjobb ahogy mi csináljuk.
Tavaly ilyenkor én is nagyon el voltam telve magamtól, hogy mekkora király programot írtam és amikor írták, hogy lehetne jobban, hát nem hittem el. Ma már látom igaza volt az illetőnek. Az más kérdés, hogy a fentebb illusztrált viselkedési módban tett javaslatot.
Peace
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz CSorBA #11070 üzenetére
Tipp: ha minden fájl UTF-8, az adatbázisban és a html head-ben is beállítottad, akkor minek kell még egy header ami beállítja ami már be van?
Egyébként én a sima validatorral szoktam ellenőrizni.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
-
Brown ügynök
senior tag
A Settings osztály getInstance() metódusa egy statikus fv. amit anélkül meghívhatunk, hogy előtte példányosítanánk az osztályt.
Itt ezt úgy sikerült meghívni, hogy vagy egy fájlban van a két osztály vagy include-tuk az osztályt tartalmazó fájlt, esetleg használtuk a namespace importálás szolgáltatását egy kis __autoload()-dal megtámogatva.
Szerk: design patternre én ezt találtam: [link]. Érthető példákat hoz.
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz CSorBA #11232 üzenetére
Én meg épp pár napja láttam be, hogy a header szükséges.
Elolvastam ezt a cikket a karakterkódolásról. A webes alkalmazásokban történő alkalmazásáról pedig ezt. Nagyon hasznos!
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz CSorBA #11237 üzenetére
Azért ez a rész engem meglepett a cikkben, hogy a böngészőnek először el kell olvasni a dokumentumot, hogy kitalálja milyen kódolásban íródott. Viszont, ha belegondol az ember, teljesen logikus. Egyszóval kell a header.
@trisztan94: Egy jó kis összefoglaló munkamenet kezelésről: [link]
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz CSorBA #11243 üzenetére
De, javítottak már. 5.4-től elérhető a SessionHandlerInterface.Ezt a cikket csak iránymutatónak szántam a lehetséges veszélyekről és megoldási elvekről (pl. hogyan generáljunk session id-t).
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz CSorBA #11247 üzenetére
Igen, cookie-ban érdemes tárolni a session id-t.
Egy cookie-t sokféleképpen meg lehet szerezni, de úgy gondolom a hálózati forgalom figyelés nem éppen a legegyszerűbb módszerek közé tartozik. (Ha nem így lenne, valaki felvilágosíthat). Egyébként ez ellen jó védekezési forma a TLS (SSL).
A User-Agent figyelni mindenképpen hasznos. Szerintem ezt sem olyan egyszerű kitalálni, hiszen van x darab op rendszer, y darab böngésző z darab verziószámmal. Mindezt egy munkameneten belül kell kitalálnia a támadónak! Ip címet figyelni tényleg nem a legjobb megoldás.
Itt van egy nagyon jó összefoglaló a lehetséges támadásokról és ellenintézkedésekről: [link]
Összefoglalva:
- Gyakori session_id újragenerálás
- munkamenet lejárati idő beállítása
- User-Agent figyelése
- HTTP_REFERER figyelése
- kijelentkezés lehetőségét biztosítani
- érzékeny adatok előtt ismételt azonosítás
- titkosított kapcsolat[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz CSorBA #11253 üzenetére
Én is adatbázist használok, mert olvastam, hogy a $_SESSION tömb tartalmának előállítása fájlműveleteken alapul és sok adat esetén belassulhat. Adatbázist használva szerintem, strukturáltabb is lesz a kód.
Egy tapasztaltabb embert én is szívesen meghallgatnék ez ügyben.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz Peter Kiss #11258 üzenetére
"Adott felhasználó bejelentkezve tartása" - igen, erről beszéltünk. E területen a megoldási elveink egyeznek pl.: sütibe csak session kulcs.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
Üdv!
Van egy enyhén szólva is pocsék kódú oldal. Ha rámegyek a honlap címére, akkor nem az index.php hívódik meg hanem egy alkönyvtár mappájának index.html fájlja, ami átirányít az oldal egy másik részére. Ez miért történhet így? A .htacces-ben ez van:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA]Megoldás: Van egy index.html fájl is és először az hívódik meg. Ezt nem tudtam.
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz Sk8erPeter #11960 üzenetére
Ilyesmi nincs beállítva a .htaccess-be de jó tudni.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
Órák óta küzdök egy problémával, valami nagyon bagatell dolog lesz megint de egyszerűen nem látom a hibát.
Adott egy fájl amibe behúzok egy másikat - ami egy osztályt tartalmaz- ugyanabból a könyvtárból. Ebben a fájlban szintén behúzok egy másikat ugyanabból a könyvtárból. Illetve csak behúznék mert nem húzza be.
Tehát a 3 fájl egy könyvtárban van, másodjára azonban már nem tudok behúzni semmilyen fájlt ugyanabból a könyvtárból. Az egyel kijjebb lévőből viszont igen. Szóval nem értem. Hibaüzenettel nem tudok szolgálni. A fájlok jogosultsága 644.Jöhetnek az ötletek.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz Sk8erPeter #12016 üzenetére
Semmi logolás nincs. Ez a kód nem embernek való. Átneveztem az osztályokat amiket behúzok és most működik.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
"Emlékezz rám" funkcióval kapcsolatban szeretnék segítséget kérni.
Ugyanaz a kód fut élesben és a gépemen is. Létrehozok egy plusz cookie-t, hogy vizsgálni tudjam, hogy a felhasználó bejelentkezve akar-e maradni. A session_id-t és a cookie értékét adatbázisban tárolom. Ha jön a felhasználó, megnézem, hogy van-e cookie-ja. Ha igen, akkor megnézem, hogy van-e ilyen cookie az adatbázisban és hogy érvényes-e még. Ha van de az érvényességi ideje lejárt, akkor a cookie-t érvénytelenítem , a session-t és az adatbázis bejegyzést törlöm.
Nos, ez élesben működik, de a gépemen, ha olyan cookie-val próbálok bejelentkezni ami már érvénytelen, akkor kiléptet. Majd amikor ismét bejelentkezek, az egyik menüpontnál a korábban lejárt cookie-t veszi és annak az azonosítójára keres rá az adatbázisban. hogy Azt látom, hogy ilyenkor kettő ugyanolyan nevű cookie van a gépemen. Ez mitől lehet?
Igazából azért hozok létre egy plusz cookiet, hogy az "emlékezz rám" funkció működjön.
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
Igen, mégpedig így:
setcookie('PHPSESSID', $_COOKIE['PHPSESSID'], strtotime('+ 30 days'), '/', 'munka.dev');
Azt látom, hogy a pluszban létrejövő cookiek csak bizonyos útvonalakra érvényesek. Pl.: '/termek'. Pedig mindenhol úgy állítottam be ahogy fent írtam.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
Bocsi a kavarásért. Csak kipróbáltam, hogy lehet-e olyat, hogy annak a cookienak az érvényességét állítom be ahol a session is tárolódik de úgy továbbra is fennállt a hiba.
Most leszedtem a szerverről a működő kódot, átírtam a cookie hatókörét helyi URL-re és úgy tűnik működik. Kop-kop. Tehát marad a két cookies megoldás.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
Egy kis rálátásra lenne szükségem. A szülő osztályban a konstruktor a következőképpen néz ki:
public function __construct()
{
$this->view = new View;
}Ha példányosítok egy származtatott osztályt:
$controller = new $class;
var_dump($controller);
object(App\Controller\SomeController)[6]
public 'view' => nullEz mitől lehet?
ClassLoader-t használok"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
Van egy email feldolgozó kis program ami imap-pal működik. Az ékezetes csatolmány azonban elég csúnyán jelenik meg. Mégpedig így:
ISO-8859-2''%4D%F3%64%6F%73%ED%74%6F%74%74%20%E9%70%65%6E%67
A kódot nem én írtam és imap-ban sem vagyok járatos de talán valami kódolási/dekódolás megoldaná a problémát. Van ötletetek?
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz Brown ügynök #12715 üzenetére
URL kódolva volt, nem karakterkódolási probléma. Egyébként egy hasznos oldal ezzel kapcsolatban: [link]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
Szeretném kikapcsolni a magic_quotes_gpc-t mert a tárhelyszolgáltató nem hajlandó rá. Azt mondja "nem lehetséges, próbálják megoldani php.ini használatával...".
- Próbálkoztam .htaccess de elszállt.
- Aztán php.ini-vel, amit beraktam a gyökérkönyvtárba és ennyit írtam bele magic_quotes_gpc = Off. Szintén nem működött.
- Majd abba a mappába ahol kezdődik a program futtatása. Elszállt.
- .user.ini-vel is próbálkoztam amit beraktam ugyanoda a két helyre ahova php.ini-t, szintén semmi.Egyéb ötlet?
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
Köszi srácok, de egy keretrendszernél ezek biztosan nem játszanak.
Nem voltunk elég körültekintőek a tárhelyszolgáltató kiválasztásánál.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz Sk8erPeter #13293 üzenetére
Valószínűleg tudnék de a motorba nem akarok belenyúlni.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz Tele von Zsinór #13296 üzenetére
Jól emlékszel. Köszönöm, erre nem gondoltam. Működik Sk8erPeter-nek és DanielK-nek is köszi.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
válasz Brown ügynök #13297 üzenetére
Az ironikus az egészben, hogy (miután egész nap magyarázkodtam és könyörögtem a szolgáltatónak), most kaptam az emailt, hogy kikapcsolták.
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
Az mitől lehet, hogy email küldésnél, a csatolt fájl megsérül? PDF fájlokról van szó, random minden kb. 10. levélnél a mellékletek egy része, vagy az összes sérülten megy ki. Volt egy elavult email kezelő könyvtár, amit lecseréltem Swiftmailer-re de már a második levélnél az egyik PDF meghibásodott. A szerveren a fájlok megnyithatók.
Valami ötlet?
"hacsak nem jön a jó tündér break utasítás képében..."
Új hozzászólás Aktív témák
- Milyen okostelefont vegyek?
- Diablo IV
- Autós topik
- Milyen monitort vegyek?
- Dragon Age: The Veilguard címmel jön a sorozat régóta készülő új része
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Gyúrósok ide!
- Redmi Note 12 4G - valaki fizetni fog
- Kertészet, mezőgazdaság topik
- Samsung Galaxy A52s 5G - jó S-tehetség
- További aktív témák...
- ÚJszerű Samsung Galaxy S20 Plus 5G (83e-től)
- Eladó Cablemod kábelszettek tápokhoz, moddinghoz a bolti ár töredékéért!
- Beszámítás! ASUS Prime B450M-A R5 5600 16GB DDR4 500GB SSD RTX 3070Ti 8GB CM MasterBox MB530P 650W
- Macbook pro 13 i7, 4gb ram, 512gbHdd
- Beszámítás! GIGABYTE B760 Aorus i7 13700F 32GB DDR4 1TB SSD RTX 3080 10GB CM MasterCase Maker 5 750W
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs