- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- eBay-es kütyük kis pénzért
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- bambano: Bambanő háza tája
- M0ng00se: Hardvert áruhitelre?
- Magga: PLEX: multimédia az egész lakásban
- sziku69: Szólánc.
- btz: Internet fejlesztés országosan!
Új hozzászólás Aktív témák
-
Tele von Zsinór
őstag
válasz
Speeedfire #14898 üzenetére
Nincs ilyen lehetőség. Alapvetően nincs rá szükség, mert azzal, hogy az autoloadert is generálja neked, nem kell tudnod, mi hova kerül. Az már csak kényelmi szempont, hogy így elég egy mappát ignorálni.
Persze a érme másik oldala az adott mappában dolgozó auto-discovery, ami neked kéne. Nem lehet a yii-ben az ezért felelős classt felülírni valami okosabb algoritmussal?
Esetleg a saját installer fejezetet nézd még meg.
-
fordfairlane
veterán
válasz
Speeedfire #14898 üzenetére
Mit akarsz a composerrel elérni, hogy hozzáadod ezeket? Ezek már letöltött könyvtárak, nem?
-
válasz
Speeedfire #14896 üzenetére
--working-dir (-d): If specified, use the given directory as working directory.
Szerk.: Többieknek is nem csak neked! Szemezek mostanában a Laravel keretrendszerrel. Vélemény? (sok lesz már a repertoár, Kohana, Yii és Laravel)
-
válasz
Speeedfire #14894 üzenetére
Most konkrétan arra gondolsz, hogy valami kapcsolóval megadod a destination folder-t?
-
Speeedfire
félisten
Composerben be lehet állítani egyesével a vendor-dir-ek helyét? Ahogy nézem a doksit, elvileg csak 1 fix helyet megadni. Yii modulokat, extension-öket akarnék berántani privát repóból, emiatt a composer autoloader se kellene nekem, a yii megoldana mindent, csak a megfelelő helyekre kellene ezeket pakolászni.
Esetleg ha definiálok egy script-et, ami a post-install-cmd után futna le és bepakolászná a megfelelő helyre a vendor mappa alatt található mappákat.
Ötlet? Egyszerűbb lenne az élet vele. -
rootkiller
őstag
válasz
modder #14892 üzenetére
Köszi!
Amúgy a Webes rendszerek programozása 1 c. tárgy előtt Programozási alapok 2 c. tárgy volt, ami JAVA-val foglalkozott, onnan az ismeret amit jelen esetben hibásan alkalmaznék.
Az volt az indíttatás hogy mielőtt nekiálltam átfaragni az oldalt if (empty($_GET['id'] { új_hozzáadás } else { módosítás } volt a szerkezet, nyilván form oldalon semmi/select-el, végrehajtási oldalon meg insert into/update-vel.Akkor fogom magam és kapnak új elnevezést ezek a paraméteres módosító függvények amik belekerülnek a controllerbe.
-
modder
aktív tag
válasz
rootkiller #14891 üzenetére
Sajnos nem csak a google számára nem sikerült megfogalmaznod a kérdésedet
A polimorfizmus az, amikor a gyerek osztályban felülírod a függvényt, amit az ősosztályban definiáltál, és ezentúl az fog meghívódni gyerekosztály típusú objektumnál.
Amit te leírtál, az függvény túlterhelés (function overloading), ami nincsen a PHP-ban nyelvi elemként. Helyette van hackelős módszer: http://stackoverflow.com/a/4697712/818375A polimorfizmusról pedig: http://stackoverflow.com/a/750309/818375
"Az én esetemben vannak függvények azonos névvel új létrehozásra valamint módosításra" ugyanaz a függvény módosítja és hoz létre újat? Nem túl fasza.
És lehetőleg a $_GET['id']-tól való függést ne az üzleti logika vagy modell részbe tegyed, hanem a controllerbe, ahol ellenőrzöd, hogy egyáltalán megvan-e a $_GET['id'] paraméter
-
rootkiller
őstag
Sziasztok! A vizsgaidőszak leteltével nekiálltam befejezni és egy kicsit áttúrni az oldalamat jobbá és átláthatóvá. Lenne egy kérdésem amiről azt gondolom hogy a google részére nem tudnám megfogalmazni.
Van egy dolog amit úgy hívnak hogy polimorfizmus, ez az én értelmezésem szerint arra jó, hogy lehet több azonos nevű függvényem eltérő paraméterlistával. Az én esetemben vannak függvények azonos névvel új létrehozásra valamint módosításra, az eltérés annyi, hogy szerkesztés esetén szerepel a paraméterlistában egy $_GET['id'], triviálisan az adott rekordra vonatkozóan.
A kérdés pedig az lenne hogy a switch vezérlő szerkezet case ágában szükséges-e a függvényhívás előtt megvizsgálni azt hogy a GET tömbnek van-e id eleme és eszerint a megfelelő függvényt meghívni, vagy pedig egyszerűen attól függően hogy létezik-e id elem a megfelelő függvény fog futni?
Köszönöm!
-
modder
aktív tag
válasz
PumpkinSeed #14887 üzenetére
-
-
modder
aktív tag
válasz
modder #14885 üzenetére
http://www.php.net/manual/en/mysqli-stmt.bind-param.php
Ezzel a paraméterek escapelve lesznek - ha jól tudom - így ha a $_GET['id'] változód bármit is tartalmaz, védve leszel az sql injection ellen.
Másik előnye, hogy így prepared statementet használsz, amit cache-el az adatbázis kezelő, ezért nem fogja ugyanarra a queryre újra és újra végrehajtani az optimalizációs eljárást, hanem elmenti a végrehajtási tervet. http://stackoverflow.com/questions/12286313/do-sql-bind-parameters-affect-performance
http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php -
modder
aktív tag
válasz
PumpkinSeed #14884 üzenetére
ha az emlékeim nem csalnak, az alábbival megkapod a $query_id-tól kisebb legnagyobb id-val rendelkező, a $query_id, és $query_id-tól nagyobb legkisebb id-val rendelkező képeket.
(SELECT * FROM ( -- ez a kulső select azert kell, hogy novekvobe rendezze
SELECT * FROM kepek WHERE id <= ".$query_id." ORDER BY id DESC LIMIT 2)
ORDER BY id ASC)
UNION
(SELECT * FROM kepek WHERE id > ".$query_id." ORDER BY id ASC LIMIT 1)Ezt azért így kell, mert, ha van öt képed, amiknek az id-ja rendre id = {1,2,3,4,5}, majd kitörlöd a 2-est, akkor azt kapod, hogy id = {1,3,4,5}. Persze azt is megcsinálhatod, hogy kódban végigmész az egész result seten, és kiválasztod a megfelelő rekordokat, de szebb, ha az egészet rábízod az adatbáziskezelőre.
Erről beszélt a kutya is itt [link]Ja, és természetesen használj a attribute binding-ot a mysqli apival, mert rohadtul nem biztonságos a query stringbe behányt get paraméter.
-
PumpkinSeed
addikt
válasz
Sk8erPeter #14876 üzenetére
Win!
Fel is akartam tenni az atw.hu-s domainomra... Hát nem nagyon tükrözi a valóságot.
Így néz ki (tudom, hogy helyi fájl van benne, de csak a kód miatt tettem fel), most még azt kell kitaláljam, hogy hogyan ugorja át azt a sort amelyikben nincs képfájl.
Köszönöm a segítséget!
[ Módosította: Ndruu ]
-
PumpkinSeed
addikt
válasz
Sk8erPeter #14876 üzenetére
Akkor most neki is kezdek, megpróbálok mindenre rájönni, de ha valamit nem tudok 2 napon belül megcsinálni akkor írok. Amúgy érthető volt a leírás elég jól rávezetett arra, hogy mit is kell csináljak.
-
Speeedfire
félisten
válasz
Tele von Zsinór #14880 üzenetére
Nincs ott, üres az a rész.
Sk8erPeter: Leszedtem a curl extension-t, de így is undefined function. -
Sk8erPeter
nagyúr
válasz
Speeedfire #14879 üzenetére
Nem tom, ha nincs a disable_functions direktívában beállítva (amit írt Tele von Zsinór), akkor annyi, hogy más is írt ilyen parát.
-
Tele von Zsinór
őstag
válasz
Speeedfire #14879 üzenetére
Tiltott függvények közt nincs?
-
Speeedfire
félisten
válasz
Sk8erPeter #14878 üzenetére
-
Sk8erPeter
nagyúr
válasz
Speeedfire #14877 üzenetére
Hogy érted azt, hogy "nem működik"?
Mi történik, amikor használod?
-
Speeedfire
félisten
Mitől lehet az, hogy nem működik a glob() függvény? A doksi szerint nem kell semmit sem beállítva, alapból benne van a php-ban.
php -v
PHP 5.4.17 (cli) (built: Nov 28 2013 14:12:16)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
debian 7.2 az OS -
Sk8erPeter
nagyúr
válasz
PumpkinSeed #14875 üzenetére
A megfogalmazásod csöppet furcsa és érthetetlen.
Nyilván nem fog működni, ha az adatbázisban a következő elem id-je nem pont a soron következő, plusz 1-gyel növelt szám, illetve az előző kép azonosítója nem épp az 1-gyel levont érték. Gyakran lesz ez a helyzet, mivel az adatbázisból töröl olykor az ember fia vagy lánya rekordokat. (Kukázol képet, ami nem kő'.)
Magyarul írj olyan query-t, amivel megkapod az előző és a következő pár képet is, meg az aktuálisat. Nálad mondjuk csak három kép jelenik meg: az előző azonosítóval ellátott, az aktuális, valamint a következő, és kész. Írj olyan query-t, ami ezt a hármat lekéri.Annak a mondatnak nem sok értelme van, hogy "ÉN azt nem értem, hogyan működik a $p változó léptetése a tag-en keresztül." A tag, amire gondolsz, egy link. Egyszerűen belinkeled a következő képazonosítót, úgy, hogy beleteszed a query stringbe (http://example.com/kepek/index.php?image_id=345, ahol 345 a következő kép azonosítója) azt az azonosítót, ami a következő kép azonosítója; ezt kaptad meg az előző bekezdésben emlegetett query-vel az adatbázisból. Az előzőre linkelés ugyanígy történik, csak az előző képhez tartozó id-vel.
Ha nem oké még mindig, kérdezz. -
PumpkinSeed
addikt
válasz
Sk8erPeter #14874 üzenetére
Ez alapján úgy tervezném meg, hogy beleteszem azt egy adatbázisba, hogy "img/img1.jpg". Majd SELECT elerhetoseg FROM kepek WHERE id = $p; és ezután echo $tarolo; amibe tettem a kép elérhetőségét. ÉN azt nem értem, hogyan működik a $p változó léptetése a tag-en keresztül. Reálisnak tűnik ez a <a href="?elem=<?php=p+1;?>">??
-
Sk8erPeter
nagyúr
válasz
PumpkinSeed #14873 üzenetére
"Hogyan tudok úgy változót deklarálni, hogy annak nem adok értéket?"
Mi a célod?Egyébként nyugodtan kérdezz vissza, ha nem tiszta a magyarázat. Ha nem érted, ne szégyellj kérdezni.
Amiről beszéltünk, hogy látsszon az URL-ben az a kép, amelyiket meg kell jeleníteni. Például http://example.com/images/index.php?image_id=65432Mint látható, itt $_GET['image_id'] == 65432, és legalább az URL könyvjelzőzhető, elküldhető másnak.
Tudsz úgy lekérést írni, hogy adatbázisból ezt a képet kérd le, és az előtte/utána lévő akárhány elemet, amelyiket mondjuk thumbnailként szeretnéd megjeleníteni.
Vágod? -
PumpkinSeed
addikt
válasz
Sk8erPeter #14872 üzenetére
Nem azt mondtam, hogy gyűlölöm hanem, hogy még nem tartok ott, de a kérdésedre válaszolva nem, "nem valami fájlbaírós bohóckodással oldo"tam meg.
Hogyan tudok úgy változót deklarálni, hogy annak nem adok értéket?
-
Sk8erPeter
nagyúr
válasz
PumpkinSeed #14871 üzenetére
Ezek szerint még mindig nem jött át, mit csinálsz rosszul. A query stringben legyen megadva a kép azonosítója. Ne sessionnel szórakozz, mert jelen feladatnál nem szabadna, hogy munkamenethez kötődjön, hogy melyik képnél jársz... Hogyan linkeled be az adott képet, ha mondjuk meg akarod mutatni ismerősödnek? Hogyan könyvjelzőzöd a megfelelő URL-t? (Az URL ugyanis jelen megoldásban BÁRMELYIK képnél is jársz, http://79.121.121.12:8080/imgshit/?elem=0 vagy http://79.121.121.12:8080/imgshit/?elem=1. SEMMI nem utal ebből arra, hogy pontosan melyik képet is kellene megjeleníteni.)
Ezeket gondold végig, és ennek alapján csináld meg.Korábban említetted, hogy GYŰLÖLÖD az adatbázis-kezelést (
). Ugye ezt nem valami fájlbaírós bohóckodással oldod meg?
-
PumpkinSeed
addikt
Megoldottam session-el, már csak annyi gond van, hogy mielőtt bármilyen gombot is nyomnék, az elem undefinied index. Hogyan lehetne ezt eltüntetni, mert elég csúnya, hogy az elején ott van.
-
modder
aktív tag
válasz
PumpkinSeed #14868 üzenetére
adok egy hintet:
<a href="?elem=<?= $p +1; ?>"><div id="button_next"></div></a>
A <?= -re be fogtok szólni, de én szeretem.
-
PumpkinSeed
addikt
válasz
Sk8erPeter #14866 üzenetére
A "szarom" úgy működik most, hogy az elején definiálom, hogy $p = 0; majd a $z felveszi a megfelelő értéket ami választ a két feltétel közül. Ebben az esetben mindenféleképpen két eshetőég van, ahol az egyik az, hogy $p = $p - 1 ami -1-et kap, de mivel a következő feltétel kinullázza azt ezért az 0 lesz, míg a másik feltétel teljesülése esetén $p = $p + 1. Ebben az esetben a $p = 1.
Az előző feltételnél az első képet íratja ki, ugyanis nullától indexelődik a tömb, míg a másiknál értelemszerűen a másodikat. Na de ezt eddig is tudta mindenki. Itt a probléma azzal van, hogy a $p mindig 0-ról indul és a második feltétel teljesülés után nem marad az értéke 1 hanem az újbóli lefutás után megint kinullázódik. Valahogy azt kellene megoldjam, hogy... így közben mintha rá is jöttem volna.Nem nem jöttem rá.. Hogyan lehet ezt normálisan megcsinálni?
-
modder
aktív tag
válasz
PumpkinSeed #14863 üzenetére
valami olyasmit akartál csinálni, hogy 0-ra lefelé vált, 1-re pedig fölfelé, de "valamiért" nem működik. Jobban járnál, ha az elem query param tényleg a kép sorszámát tárolná.
-
Sk8erPeter
nagyúr
válasz
PumpkinSeed #14865 üzenetére
Akkor most próbáld meg végiggondolni, hogy mit és miért írt DNReNTi úgy, ahogy. Oka volt rá, hidd el.
-
DNReNTi
őstag
válasz
PumpkinSeed #14863 üzenetére
Fixen meg van adva hogy mire linkeljen
href="?elem=0" és href="?elem=1" így persze hogy csak a 0. és 1. elemek közt léptet. -
PumpkinSeed
addikt
<?php $p = 0; $z = 2; ?>
<header>Fotóalbum</header>
<section>
<a href="?elem=0"><div id="button_prev"></div></a>
<div id="border">
<?php
$z = $_GET['elem'];
if($z == 0){$p = $p - 1;}
else if($z == 1){$p = $p + 1;}
if($p < 0){$p = 0;}
else if($p > 4){$p = 4;}
$images = array(
'<img src="img/img1.jpg"/>',
'<img src="img/img2.jpg"/>',
'<img src="img/img3.jpg"/>',
'<img src="img/img4.jpg"/>',
'<img src="img/img5.jpg"/>'
);
echo $images[$p];
?>
</div>
<a href="?elem=1"><div id="button_next"></div></a>
</section>Van egy ilyen fotóalbumhoz hasonló dolgom, ami így néz ki. Valamiért csak a 0. és az 1. elemet váltogatja. A hiba szerintem az, hogy az elején definiált $p = 0; lehet az oka, de viszont ha azt nem deklarálom le akkor hiányzik neki a $p változó és hibát dob. Hogyan lehet ezt kiküszöbölni?
-
válasz
Speeedfire #14841 üzenetére
Jenkins
-
DNReNTi
őstag
válasz
fordfairlane #14858 üzenetére
A 2. pont teljesen jogos.
Valami miatt nem akart jó lenni prepared statement-tel, ezért vettem ki, az még megoldásra vár.
Köszi az infót. -
DNReNTi
őstag
Sziasztok,
Egy villámkérdés:
Egy most készülő portálon a felhasználók belépése lehetséges mind felhasználónévvel, mind email címmel. (Persze kell a jelszó is.) No most kicsit megkavarodtam és nem tudom mi a jó megoldás logikailag.Látszik nem sokat aludtam...
Tehát hogyan jó, vagy hogyan jobb?
$SQL_command = "SELECT * FROM main_users WHERE (user_name = '$this->_user_name' AND user_password = '$this->_user_password') OR (user_email = '$this->_user_name' AND user_password = '$this->_user_password');";
Vagy:
$SQL_command = "SELECT * FROM main_users WHERE (user_name = '$this->_user_name' OR user_email = '$this->_user_name') AND user_password = '$this->_user_password';";
_user_name mind a két esetben a felhasználónév vagy az email (attól függ az user melyiket írta be) a _user_password pedig értelemszerűen a jelszó.Az én logikám szerint mind a kettő működik és jó, de a második, rövidebb a szimpatikusabb. Vélemények?
Köszke -
trisztan94
őstag
-
wis
tag
válasz
PumpkinSeed #14853 üzenetére
Azt az IP-t látod amelyikről elérik a szervert. A győri usernek az internetes IP-jét látod, kivéve, ha használ valami proxyt vagy vpn-t, hogy elérje az oldalad.
-
PumpkinSeed
addikt
A localhost a laptopom lokális IP címe, a saját IP címem a 79.121.121.....
De nekem az volt a kérdésem ha valaki más például Győrben megnézi akkor milyen IP címet fogok én látni? Azt az IP címet amiről ő felcsatlakozik az Internetre, vagy azt amelyik IP címre beérkezik a HTTP kérés?
-
wis
tag
válasz
PumpkinSeed #14851 üzenetére
A 127.0.0.1 és a ::1 is a saját IP címed. Példa a lekérdezésre
-
PumpkinSeed
addikt
válasz
Tele von Zsinór #14850 üzenetére
Értem már. Azt nem értem, hogy ha valaki megnézi ezt akkor az az ő saját IP címét adja vissza?
-
Tele von Zsinór
őstag
válasz
PumpkinSeed #14849 üzenetére
Ne v6-on kérd az oldalt. Modern oprendszereken a localhost ::1-re mutat, használd a 127.0.0.1-et (vagy szerkeszd a hosts file-odat).
-
PumpkinSeed
addikt
válasz
fordfairlane #14848 üzenetére
Akkor hogyan tudom megadni, hogy ne IPv6-os címet adjon vissza outputként?
-
fordfairlane
veterán
válasz
PumpkinSeed #14847 üzenetére
Ez az IPv6-os localhost.
-
PumpkinSeed
addikt
Vannak ezek a $_SERVER['REMOTE_ADDR'] meg társai szerkezetek amelyeknek elvben IP címet kellene visszaadniuk. Na nekem egyáltalán nem ad vissza IP címet hanem egy ilyennel kínál meg:
::1
Illetve var_dump-al megtekintve:
string(3) "::1"
Ez olyan mintha IPv6-os címet akarna használni.
Miért van ez illetve milyen IP cím lekérő szerkezetet érdemes használni?
-
válasz
trisztan94 #14845 üzenetére
köszönöm!
Abba esetleg tudnál még segíteni, hogy ne csak napok legyenek grafikonba, hanem óra és perc is, mert jelenleg elég bután néz ki
http://188.143.120.175/index.html -
sziasztok,
van egy mysql adatbázisom, amiben van két érték. Ezt a két értéket szeretném egy nagyon egyszerű grafikonon megjeleníteni.
Nincs valakinek egy példa programja a kiinduláshoz? -
Soak
veterán
válasz
Speeedfire #14841 üzenetére
Miert nem bamboo? Az ujban mar nagyon egyszeru deploy kornyezeteket configolni, tavoli gepre is.
-
Speeedfire
félisten
válasz
Speeedfire #14813 üzenetére
Végül a jenkins maradt, elég jól működik.
Annyi kérdésem lenne azoktól akik használtak/beállítottak már ilyet, hogy megoldható-e az, hogy távoli gépre pakolja ki a kész build-et?
Adott 3 szerver: 1 homokozó ezen van nagyon sok hasznos dolog, 1 teszt és 1 éles webszerver. Jobb szeretném ha a homokozó nyomná ki a kész buildeket, ne kelljen 2 helyen is a jenkinst karbantartani. -
moltam88
tag
válasz
trisztan94 #14830 üzenetére
A megoldásodban, ha a $data tömbben nem létezik a $pageID által meghatározott index, akkor a PHP notice-t dob (ettől még működni fog a dolog, de nem ez a legszebb megoldás).
A kérdésre a konkrét válasz, vagyis a következőképpen lehet megnézni, hogy egy tömbben létezik-e adott index-ű elem:
isset($data[$pageID])
vagy
array_key_exists($pageID, $data).
Ebben az esetben tehát a legjobb megoldás így ellenőrizni:
if (isset($data[$pageID]) && $data[$pageID] !== "N") {} (persze a konkrét esetben lehet nem erre kell vizsgálni, de a lényeg, hogy ilyenkor célszerű az isset()-et használni)
-
trisztan94
őstag
válasz
Sk8erPeter #14838 üzenetére
Ezen jót mosolyogtam, pedig tiszta ideg vagyok.
-
Sk8erPeter
nagyúr
válasz
PumpkinSeed #14837 üzenetére
Mindenképpen.
-
PumpkinSeed
addikt
válasz
Sk8erPeter #14831 üzenetére
Már régóta tervezem, hogy kicsit kiegészítem pár ilyen PHP fájlal a honlapkészítés segédlet mappámat, de úgy érzem most már érdemes lesz belekezdeni.
-
Sk8erPeter
nagyúr
válasz
trisztan94 #14835 üzenetére
Hát igen, nem árt, ha néha az ember gondolkodik.
Amúgy hidd el, ha néha elakadsz, akkor jót tesz egy 5 percnyi szünet, még akkor is, ha kapkodás van (tudom, milyen az), meg az, hogy leírod magadnak papírra az akár alapvető feladatot, és evidens dolgok is eszedbe fognak jutni, és utána a homlokodra b@szol, hogy ez hogy nem jutott eszedbe.
-
trisztan94
őstag
válasz
Sk8erPeter #14834 üzenetére
Késő van, stressz van, mert jön a határidő. Muszáj volt kérdeznem, mert nem nagyon van időm akármivel is bénázni (sőt, PH!-zásra sem lenne időm
), de mire leírtam meg is oldottam. Nagyjából.
-
Sk8erPeter
nagyúr
válasz
trisztan94 #14833 üzenetére
Ja értem, na jó, ez mentségedre szolgál.
(Csak a kérdés első felére nincs mentség.
)
-
trisztan94
őstag
válasz
Sk8erPeter #14832 üzenetére
Jelen esetben sem MySQLi-t, sem PDO-t nem tudok használni. Ez egy másik csapat összegányolt mocsadéka, amit nekem kell most működésre bírnom. Megrendelő azt kérte, hogy holnap-holnapután indulhasson el a dolog, amint elindult rögtön újraírjuk nulláról, normálisan.
PostgreSQL lekérdezések vannak, pg_fetch_array meg társaik. Mondjuk igen, elég ótvar a tömbözés, de az egész így van írva, nincs lelki erőm átírogatni mindent.
-
Sk8erPeter
nagyúr
válasz
trisztan94 #14830 üzenetére
Hogy ne lehetne már ilyet?
Javaslom, felejtsd el ezt a kutyult lekérési stílust, hogy asszociatív tömb és numerikus tömb keverve van (mysqli_result::fetch_all(MYSQLI_BOTH) vagy PDOStatement::fetch(PDO::FETCH_BOTH), PDO-nál utóbbi a default, mysqli-nél a MYSQLI_NUM).
Döntsd el, melyikre van szükséged, és ragaszkodj ahhoz. Valószínűleg a MYSQLI_ASSOC vagy PDO::FETCH_ASSOC fog kelleni legtöbbször. Akkor használd azt, csak indokolt esetben kutyuld a tömböt. -
Sk8erPeter
nagyúr
válasz
PumpkinSeed #14826 üzenetére
Nem, nem jó. Ha ilyesmikkel játszadoztál eddig, nem csodálom, hogy szívásnak érezted az egészet. Részletesen felsoroltam a teendőket ahhoz, hogy az UTF-8-karakterkódolással (és így a mindenféle nyelvben megtalálható specifikus karakterekkel, ékezetekkel, és egyéb, speciális karakterekkel) ne legyen problémád.
"Na én ezt nem akarom minden egyes gyakoroló feladatnál megcsinálni.
"
Ezt remélem, csak viccnek szántad.Ne már. Legegyszerűbb módon legyen egy vagy több fájlod, amiben mindenféle ilyen lépést megcsinálsz, és ezeket egyszerűen include-old mindig az index.php-dban, és kész.
Ezen fájlok valamelyikében kiküldöd az UTF-8-as fejlécet (a header() fv. mutatott használatával), máshol megnyitod a kapcsolatot az adatbázissal (ezt is úgy, hogy már a kapcsolat elején beállítod az UTF-8-karakterkódolást, ahogy írtam; hogy singleton-mintán keresztül kommunikálsz az adatbázissal, ami esetleg nehezíti a unit testet, vagy más, az tök mindegy most ebben a fázisban még, mivel valszeg azt sem tudod, mi az a singleton vagy a unit test). Az előző step-by-step útmutató szerintem eléggé világos.A fájljaidnak alapértelmezetten amúgy is UTF-8 without BOM-kódolásúnak kellene lenniük, egyszerűen az általad használt fejlesztőeszközben állítsd be (bár a fejlesztőkörnyezeteknél ez az alap, csak az egyszerűbb, Notepad++-szerű szövegszerkesztőknél szokott default lenni az ANSI, mármint Windows-on), hogy mindig UTF-8 without BOM-kódolású fájlokat hozzon létre.
Az adatbázisban is érdemes (szerintem) alapértelmezettre állítani valamelyik utf8_ kezdetű collationt.
Nem hiszem, hogy ezek olyan bonyolult lépések lennének. Hidd el, hogy az összhaszon nagyobb lesz vele, mintha lusta vagy egyszer ezt az utat végigjárni. Például akkor megtanulsz adatbázist kezelni, és nem bohóckodsz fájlokba írogatással és azokból olvasással olyan műveletek esetén, amiket illene adatbázissal elvégezni.
Adatbázis-kezelési ismeretek nélkül manapság egy fejlesztő akár éhen is halhat.
-
trisztan94
őstag
Hogyan tudom csekkolni, hogy egy változó értéke egyenlő-e egy asszociatív tömb indexével?
pl
tömb:
Array
(
[19] => Y
[page_1] => Y
[20] => N
[page_2] => N
[21] => Y
[page_3] => Y
[22] => Y
[page_4] => Y
[23] => N
[page_5] => N
)(csomó mindent kiszedtem most, ez print_r output)
változóm értéke:
$valtozo = "page_5";
tehát azt kellene ellenőrizni, hogy valtozo egyezik-e az egyik indexxel.. Lehet egyáltalán ilyet?
Szerk:
Megoldva, nagyon józan paraszti ésszel:
if ($data[$pageID] !== "N") {}
-
PumpkinSeed
addikt
válasz
Tele von Zsinór #14828 üzenetére
Én azt hittem, hogy pont fordítva van és a global kulcsszóval megadott változó a szuperglobális, a $_GET stb. pedig a globális, de akkor jó, hogy ezt is tudom most már.
(#14827) fordfairlane
Értem, ezt nem tudtam ezért kérdeztem meg. -
Tele von Zsinór
őstag
válasz
PumpkinSeed #14821 üzenetére
Pici fogalmi hiba: a superglobalok a $_GET, $_POST, $_REQUEST, $_SERVER, stb. tömbök. Azért superglobalok, mert nem kell importálnod őket függvényekbe, mindenütt elérhetőek korlátozás nélkül.
Amire te gondolsz (és amit használsz) az a sima global változó, ezt minden egyes függvénybe külön kell behúznod.
-
fordfairlane
veterán
válasz
PumpkinSeed #14826 üzenetére
Nem jó. Le lett írva, mi a jó.
Adatbázis: Legyen minden UTF8.
Alkalmazás kiszolgáló: Nincs teendő, csak a mysql kapcsolat inicializálásnál legyen beállítva SET NAMES UTF8.
Kliens: meta tag charset=UTF8Ez a konvertálgatás csak hibákat szül.
-
PumpkinSeed
addikt
válasz
Sk8erPeter #14825 üzenetére
Na én ezt nem akarom minden egyes gyakoroló feladatnál megcsinálni.
Amúgy a kódolást így szoktam megoldani (nem tudom, hogy ez jó-e):
$text['title']=utf8_encode($text['title']);
-
Sk8erPeter
nagyúr
válasz
PumpkinSeed #14824 üzenetére
"Lusta vagyok adatbázissal szenvedni (létrehozni, szenvedni az undorító karakterkódolással (amit nagyon gyűlölök))"
Ha a karakterkódolás szenvedés, akkor valamit eddig rosszul csináltál. Leírhatnád, hogy csinálod, és biztos kiszúrjuk a hibát.- PDO-val adatbázishoz kapcsolódás, meg a többi alapvető dolog itt van, Tele von Zsinór kolléga cikkében: http://maerlyn.eu/2011/12/03/pdo.html.
Ott van egyből az elején, már a kapcsolódás után:
SET NAMES UTF8
Magyarul itt a kapcsolat kódolását egyből UTF-8-ra állítod.
- A fájljaid karakterkódolása is legyen UTF-8 without BOM, ezt Notepad++-ban nagyon könnyen tudod ellenőrizni.
- A meta tagek is lehetőleg így legyenek beállítva a <head>-részben.
- A HTTP headert pedig módosítsd PHP-vel így még mindenféle kimenet előtt:
header('Content-Type: text/html; charset=utf-8');
- Ezenkívül az adattábláid is legyenek UTF-8-as karakterkódolásúak (collation), valamelyik utf8_ kezdetű ezek közül, amelyik kell.Igazából ennyinek elégnek kellene lennie, ha valamit nem felejtettem ki a listából.
-
PumpkinSeed
addikt
válasz
Sk8erPeter #14822 üzenetére
Lusta vagyok adatbázissal szenvedni (létrehozni, szenvedni az undorító karakterkódolással (amit nagyon gyűlölök)), a könyvben még ténylegesen nem tartok ott, de már olvasgattam bele, és ameddig nem tartok ott ténylegesen addig nem is akarom használni.
(#14823) fordfairlane
Ja értem már mire gondolsz.
A feladatban ez volt megadva, hogy az utolsó oldalon jelenítsek meg egy számlálót és ilyen képekkel jelenítsem meg. Ebben a feladatban az oldalletöltést kell számolni, majd a következőbe kell úgy átírni, hogy munkamenet alapján és azt naplózni is kell.
-
fordfairlane
veterán
válasz
PumpkinSeed #14821 üzenetére
Az első kérdést nem nagyon tudtam értelmezni, de úgy van ha lépteti akkor azonnal menti a fájlba, őszintén nem tudok rá válaszolni.
Ez világos, de a kiíratás miért ide került? A számlálót akár többször is megjelenítheted az oldalon, vagy változhat a mérési metódus, pl. azáltal, hogy nem letöltést számoltatsz, hanem munkamenet indítást.
Vagy, ahogy az általában lenni szokott, a számlálót nem a látogatónak kell megjeleníteni, hanem az oldal adminisztrátorának, hiszen neki kell ismerni a forgalmi adatokat. Tehát a számláló léptetést, és a számláló állapotának megjelenítését érdemes különválasztani.
-
Sk8erPeter
nagyúr
válasz
PumpkinSeed #14821 üzenetére
Fogalmam sincs, meddig tárolják. Eddig ritkán láttam ott 404-et, az valszeg amiatt volt, mert a szerző eltávolította. De lehet, hogy írják a honlapon a max. tárolási időt, keresd meg.
Amúgy már akartam kérdezni, miért játszadozol mindig fájlba írogatásokkal, abból olvasással? Ez a látogatószámlálósdi csak játék, még mindig a fájlba írogatást, olvasást gyakorolgatod? Vagy mi a célod vele? -
PumpkinSeed
addikt
válasz
fordfairlane #14820 üzenetére
Az első kérdést nem nagyon tudtam értelmezni, de úgy van ha lépteti akkor azonnal menti a fájlba, őszintén nem tudok rá válaszolni. Attól féltem, hogyha a "program" futása véget ér akkor a változóban lévő érték elvész, ezért azt egyből mentem.
Beolvasáskor szuperglobális változót használok azért, mert az első verzióban még úgy volt, hogy mindenhol azt fogom használni bele értve a szamlalo_write() függvényt is. Később ez változott.
A bonyolult osztás az egy fail!
Ugyanis a fájlból be lehetne olvasni karakterenként is, de én inkább beolvastam az egész sort, és ennek köszönhetően fel kellett osszam a beolvasott tartalmat számjegyekre.
A "main()" függvényrészt csak azért neveztem el main()-nek mert máshogy nem tudtam rá hivatkozni.
(#14819) Sk8erPeter
Igaz, csak most gyors bemásoltam azt ami a fórumon is bent van. Amúgy egy ilyen honlapon meddig tárolódnak az ilyen kódok?
-
fordfairlane
veterán
válasz
PumpkinSeed #14817 üzenetére
Miért raktad egy fájlba a számláló léptetést a kiíratással? Miért globális változót használsz a beolvasáskor? Mi az a bonyolult osztás a kiíratásnál? És akkor már azt a "main()" függvény szerű kódrészt is függvénybe rakhatod. Akár lehet main a függvény neve.
-
Sk8erPeter
nagyúr
válasz
PumpkinSeed #14817 üzenetére
Szívesen, de azért úgy rakd fel ideone.com-ra, hogy az működjön is.
Például kezdd a szokásos <?php nyitótaggal, meg nyilván helyi fájlokat ne próbálj megnyitogatni vagy írogatni (fopen, fwrite és társai felejtős), mert nem fog menni.
(Ahogy jsFiddle-nél is hiába hivatkozol képforrásként helyi fájlra, nem fog menni (hacsak nem a jsFiddle szerverén valóban ott lévő fájlt include-olod).) Ott például helyettesítheted valami példakimenettel az adott függvényt.
-
biker
nagyúr
válasz
PumpkinSeed #14817 üzenetére
A vegen a bohockodassal rontod el, amikor osztod millioval, kerekited, felszorzod
Bullshit
Beirod 1 2 45 akarmi, aztan ezzel szamolsz, majd ha kisebb mint sza 5 nullat irsz ele, ha kisebb mint ezer negyet stbEz nem elég?
a switch is egy felesleg, hiszen már megvan, az is, hogy előbb átadod az egyik változót, majd hozzárendeled másikhoz, majd azt növeled.$ertek = fopen("szamlalo.txt", "r") or die("nem sikerült");
while (!feof($ertek))
{
$karakter = fgetc($ertek);
if ($karakter == "")
{
//semmi
}
else
{
echo "<img src=images/";
echo $karakter;
echo ".gif border=0>";
$szam .= $karakter;
}
}
fclose($ertek);
$ertek = fopen("szamlalo.txt", "w") or die("nem sikerült");
$szam += 1;
fputs ($ertek, $szam);
fclose($ertek); -
PumpkinSeed
addikt
Na szóval, itt a kódrészlet értelmesen.
Viszont akkor átteszem, hogy adatbázisba tárolja le a következő úgyis az lesz, hogy a látogató ip címeit kell letárolni egy adatbázisban.
Viszont itt most a probléma nem ezzel van, hanem, hogy bug van a programban amely a main függvényben helyezkedik el ha lehet így mondani azaz nem a függvényekben. Ezen belül vagy azzal, hogy az $all_viewers-t rosszul bontom fel úgy, hogy mindig csak egy karaktert vizsgáljon, vagy a megfeleltetéssel, nem tudom.
Visszatérve az előzőre, ha nem is így csinálom akkor még adatbázissal tudom tárolni, gondolom nincs más megoldás?!
(#14816) Sk8erPeter
Köszönöm ez tökéletes.
-
Sk8erPeter
nagyúr
válasz
PumpkinSeed #14814 üzenetére
"nincs valami jsfiddle oldalhoz hasonló ahova php-t lehet feltenni?"
Olyasmi:
http://ideone.com/ -
biker
nagyúr
válasz
PumpkinSeed #14814 üzenetére
az egészet felejtsd el, ha egyszerre ketten akarnak majd bele írni, már gond lesz
+ nekem volt ilyen számlálóm, állandóan nullázódott random időnként, gondolom valami fread hiba miatt, és akkor 0áról indult, gagyi ez a file írogatós számláló -
PumpkinSeed
addikt
function szamlalo_read()
{
global $all_viewers;
$fp = fopen ("latogatok_szama.txt",'r');
$all_viewers = fgets($fp,999);
fclose($fp);
}
function szamlalo_write($ertek)
{
$fp = fopen ("latogatok_szama.txt",'w');
$viewers = $ertek;
$viewers++;
fwrite($fp, $viewers);
fclose($fp);
}
function szamlalo_img($szam)
{
switch($szam)
{
case 0: echo "<img src='img/0.gif'>"; break;
case 1: echo "<img src='img/1.gif'>"; break;
case 2: echo "<img src='img/2.gif'>"; break;
case 3: echo "<img src='img/3.gif'>"; break;
case 4: echo "<img src='img/4.gif'>"; break;
case 5: echo "<img src='img/5.gif'>"; break;
case 6: echo "<img src='img/6.gif'>"; break;
case 7: echo "<img src='img/7.gif'>"; break;
case 8: echo "<img src='img/8.gif'>"; break;
case 9: echo "<img src='img/9.gif'>"; break;
}
}
szamlalo_read();
szamlalo_write($all_viewers);
echo "<h1>Eddigi látogatók száma:</h1><p class='section_six'>";
str_pad($all_viewers, 6, '0', STR_PAD_LEFT);
$osztas = 1000000;
$osszeg = 0;
do{
$eredmeny = $all_viewers / $osztas;
settype($eredmeny,"integer");
szamlalo_img($eredmeny);
$osszeg = $osszeg + ($eredmeny * $osztas);
$osztas = $osztas / 10;
}while($osztas != 1);
szamlalo_img($all_viewers - $osszeg);
echo "</p>";Van egy ilyen kódrészletem ami annyit tesz, hogy oldalfrissítés számol (a változónevekkel nem kell törödni, nem reális neveket takarnak, csak éppen amit kitaláltam), és ezeket kicseréli egy megadott képre amit a számot takarja. Az a probléma, hogy
99nél így nézz ki az output amit képekből látok:
0000099
és amikor átvált 100-ra akkor ezt látom:
00001
Az lenne a kérdésem, hogy mi lehet a hiba ebben az esetben. Az biztos, hogy nem fájlból való beolvasánál lesz a probléma, hanem a számok képre való kicserélésénél lesz.
----
Illetve még az is kérdés, hogy nincs valami jsfiddle oldalhoz hasonló ahova php-t lehet feltenni?
-
Speeedfire
félisten
Gitlab ci-ről van valakinek tapasztalata? Gitlabot használok, gondoltam lehet jó lenne akkor az ő ci rendszerűket használni. A másik alternatíva a jenkins lenne.
Vélemények? -
Sk8erPeter
nagyúr
válasz
rootkiller #14811 üzenetére
Könyörgöm, használd már azt a nyomorult Google-t, folyamatosan kérdezel ilyen hülyeségeket, amiknek a megoldását nagyjából 10 másodperc alatt meg lehetne találni, de még ehhez is lusta vagy...
Most komolyan, neked gyorsabb fórumra bepötyögni a hsz.-t 30 másodperc alatt, aztán várakozni, mint rátalálni a megoldásra 10 másodperc alatt?
A hibaüzenetet bepötyögve egyből rátalálhatsz a megoldásra, úgyhogy most házi feladatként rádbízom, hogy megtaláld. Drukkolok hozzá. -
rootkiller
őstag
Jelenleg azaz eset állt elő, hogy bejelentkezéskor meghívódik egy login.php, amely a $_POST['user'] -ből előállít egy $_SESSION['user']-t. Nos, később mikor a jelszómódosításnál meghívódik a changepw.php akkor ezt a hibát kapom:
Notice: Undefined variable: _SESSION in
-
Dave-11
tag
válasz
Peter Kiss #14809 üzenetére
Bocsi, akkor átkódolni
Így jobb?
-
Dave-11
tag
válasz
Tele von Zsinór #14807 üzenetére
Tele von Zsinór: "A teljesen biztos megoldás az, ha te generálod a fileneveket."
Ja igen, gondolom itt arra gondolsz, hogy feltölthetnek akár kettő vagy több ugyanolyan nevű fájlt, és az bezavarhat. Akkor erre meg lehet olyat csinálni, hogy mondjuk a fájl neve elé hozzáfűzzük a feltöltés dátumát és időpontját, meg rárakunk egy MD5-ös titkosítást az így kapott stringre.
-
Tele von Zsinór
őstag
válasz
Dave-11 #14806 üzenetére
Próbálhatod akárhogy ellenőrizni, abban mindig lehet probléma, egy olyan eset, amire nem gondoltál. A teljesen biztos megoldás az, ha te generálod a fileneveket.
Pontosan erre gondoltam. Ha ő kontrollálja az index.php-t, akkor onnantól azt csinál a gépeden, amit akar. Itt nyilván korlátot szab a webszerver/php beállítása, de bármi, amit ezután csinálsz, csak kármentés lehet, ráadásul a gépet is nulláról újra kell telepíteni. Ez a téma viszont túlmutat a topik keretein.
A típusellenőrzés meg szerintem nem evidens olyannak, aki feltöltött file-t nem tud áthelyezni. Ráadásul az egy olyan probléma, amit messzi nem triviális jól megoldani.
-
Dave-11
tag
válasz
Tele von Zsinór #14803 üzenetére
Hát jó persze, de ő csak annyit kérdezett, hogy a feltöltött fájlt hogyan helyezze át más mappába, meg hogyan tárolja el az URL-t az adatbázisban, a fájltípus ellenőrzés meg evidens, azt úgy gondoltam hogy meg tudja oldani.
Azt hogy érted, hogy ha felmegy az index.php fájl akkor már is nem a tiéd a szerver. Attól még annak a "szabotálónak" tudnia kell az adatbázis használatához szükséges hozzáférési adatokat nem? Vagy esetleg arra gondolsz hogy olyan kódot írt bele abba az index.php-ba, ami kitörölheti a vele egy mappában lévő összes fájlt és mappát? Mert akkor igen, az tényleg veszélyes, ha nincs lekezelve a kiterjesztés.
Megoldásként akkor még akár azzal is meg lehet spékelni a kódot, hogy '/' karakterenként feldaraboljuk a fájl nevét egy tömbbe, és annak csak az utolsó elemét tekintjük fájlnévnek, nem? Gondolok itt az explode() függvényre. -
rootkiller
őstag
válasz
Tele von Zsinór #14803 üzenetére
Igazad van!
Másrészről úgy gondoltam hogy lesz neki külön mappa ahova csak ezek mennek, másrészről korlátozni kéne hogy jpg png only mehessen fel.
-
Tele von Zsinór
őstag
válasz
Dave-11 #14802 üzenetére
Ez így biztonsági hiba. A file neve usertől kapott adat, így megbízhatatlan. Mi van például akkor, ha valaki "../index.php" néven feltölt valamit? Rögtön felülírod a saját kódod és máris nem a tiéd a szerver. (Persze ha tényleg ott az indexed.)
Én úgy szoktam megoldani, hogy insert után a primary key alapján nevezem el a feltöltött filet; az megbízható adat.
-
Dave-11
tag
válasz
rootkiller #14801 üzenetére
Meghívsz egy move_uploaded_file() függvényt, valahogy így:
move_uploaded_file($_FILES['file']['tmp_name'], 'kepek/' . $_FILES['file']['name']);
Aztán fogod és egy táblába feltöltöd, mondjuk egy img_url rekordba a 'kepek/' . $_FILES['file']['name'] elérési útvonalat.Akár már a legelején is egy stringbe gyúrhatod őket:
$new_file_path = 'kepek/' . $_FILES['file']['name'];
És akkor már csak így írod:
move_uploaded_file($_FILES['file']['tmp_name'], $new_file_path);
Meg persze akkor már az adatbázisba is csak ezt a változót küldöd fel -
rootkiller
őstag
Azt gondolom, hogy még két dolgot kell megoldanom, és készen vagyok!
Az egyik az, hogy a főoldalra lehessen flyereket vagyis képeket felrakni. Az hogy miképpen tudok fájt feltölteni az megvan, ollóztam egy ilyen kódot:
<form action='uppic.php' method='post' enctype='multipart/form-data'>
<label for='file'>Filename:</label>
<input type='file' name='file' id='file'><br>
<input type='submit' name='submit' value='Feltöltés'>
</form>illetve
<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>Azt szeretném tudni hogy tudnám megoldani hogy a kép egy bizonyos mappába mentődjön. Innentől kezdve bele kéne írni az adatbázisba a kép elérési útját.
A másik probléma azaz adatbázis felületre a bejelentkezés lesz, de ez majd csak később, ha a flyeres dolog kész!
Új hozzászólás Aktív témák
Hirdetés
- Anime filmek és sorozatok
- Csak semmi szimmetria: flegma dizájnnal készül a Nothing Phone (3)
- Bemutatkozott a Poco X7 és X7 Pro
- Fájdalmasan gyenge kijelzőt válaszott a Switch 2-höz a Nintendo
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- E-roller topik
- PlayStation 5
- ZIDOO médialejátszók
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- Windows 11
- További aktív témák...
- Bomba ár! Lenovo X1 Yoga 1st - i7-6G I 8GB I 256SSD I 14" WQHD Sérült I W10 I CAM I Garancia!
- CarPlay / Android Auto adapter meglévő Android alapú fejegységhez
- Bomba ár! Lenovo ThinkBook 14s Yoga - i5-1135G7 I 16GB I 256SSD I 14" FHD Touch I Cam I W11 I Gari
- ÁRGARANCIA!Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RX 6600 8GB GAMER PC termékbeszámítással
- Samsung Galaxy A32 4G 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged