- Vélemény: nem úgy tűnik, de Lip-Bu Tan most menti meg az Intelt
- AMD Navi Radeon™ RX 5xxx sorozat
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- HiFi műszaki szemmel - sztereó hangrendszerek
- Hobby elektronika
- Milyen joysticket vegyek?
- 3D nyomtatás
- NVIDIA GeForce RTX 5060 Ti (GB206)
- Amlogic S905, S912 processzoros készülékek
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
válasz
cidalain #17192 üzenetére
"A mysql_real_escape_string() függvény nem jó [...]
Hogy kellene ezt kulturáltan megcsinálni?"
A legkulturáltabban úgy lehet megcsinálni, hogy átállsz PDO-ra vagy MySQLi-re, az összes adatbázis-művelettel kapcsolatos dolgot átírod ennek megfelelően, prepared statementeket használsz, a mysql_* kezdetű függvényeket meg inkább megpróbálod elfelejteni, és sosem nézel vissza rá. Csak a szenvedés van vele, és amúgy is régóta deprecated, ki is fog kerülni a későbbi PHP-verziókban, szóval ha jót akarsz magadnak (és az emberiségnek), akkor még időben állj át alternatív módszerekre.
Choosing an API:
http://php.net/manual/en/mysqlinfo.api.choosing.phpHa valami fos legacy kód, és tényleg nagyon rá vagy kényszerítve a használatára, akkor sorry, de muszáj volt megjegyeznem.
(#17194):
Javaslom, kapcsold be a legszigorúbb hibajelzést a fejlesztés erejéig:PHP 5.4.0 fölötti változatoknál:
error_reporting=E_ALL
display_errors=OnPHP 5.4.0-nál régebbi esetén:
error_reporting=E_ALL|E_STRICT
display_errors=OnAkkor rögtön látni fogod, hogy hibának számít az ilyen, mint amit írtál, hogy
$_REQUEST[head_end_script]
Gondolom a head_end_script nem egy konstans nálad, hanem egy sima string, akkor legyen is az, kár, hogy a PHP ilyen esetekben túl toleráns.Ha túl sokszor lett escape-elve a szöveg, akkor kénytelen vagy először unescape-elni (pl. stripslashes), majd újra elmenteni az adatbázisba.
-
Sk8erPeter
nagyúr
1. a $mail->ErrorInfo-ból bővebb hibaüzenetet is ki tudsz nyerni, pakold ezt az errors tömbödbe fejlesztés erejéig, az éles kódban pedig az ilyesmit illik inkább naplózni, és nem a felhasználó tudtára adni mindenféle "belső" hibaüzenetet (mert rosszindulatú emberke számára minden információ jól jöhet).
2. javaslom, hogy használd ki, hogy a PHPMailer (is) képes inkább kivétel eldobására hiba esetén, azt pedig szépen el tudod kapni egy phpmailerException formájában, sokkal szebb és áttekinthetőbb megoldást eredményez, el tudod vele kerülni a csúnya if-else blokkokat:
http://phpmailer.worxware.com/index.php?pg=exampleamail
https://github.com/Synchro/PHPMailer/blob/master/examples/exceptions.phps
Szerk.: egyébként itt az exceptionök engedélyezéséhez a kulcs csak annyi, hogy true paraméterrel inicializálod a PHPMailert:
//Create a new PHPMailer instance
//Passing true to the constructor enables the use of exceptions for error handling
$mail = new PHPMailer(true); -
Sk8erPeter
nagyúr
válasz
Tele von Zsinór #17167 üzenetére
"esetleg az igény, hogy függvényhívásnak nézzen ki"
Jaja, és ez speciel még jobban is mutat.Ezért nem értettem, mi lenne a baj vele.
-
Sk8erPeter
nagyúr
"Az echonál ok, hogy ugyanaz ()-el mint nélküle, de mi vihet valakit arra, ilyet írjon le?"
Mármint ezt hogy érted? Mi a baj vele?Amúgy zseniális, hogy honda még engem nevez tahó parasztnak, amikor hónapokon át a legkitartóbbak között voltam, akik segítettek neki az oltásokkal együtt.
De ezzel a személyeskedő hozzászólásával (amire inkább nem is reagálok) elintézte, hogy innentől kezdve semmit ne segítsek neki többet.
-
Sk8erPeter
nagyúr
válasz
#81999360 #17156 üzenetére
Nagyon jól látod, igazából abban reménykedtem, hogy senki nem fog reagálni a baromságaira. Egy darabig naivan és kitartóan válaszolgattam neki én is (pl. CSS topic), aztán rájöttem, hogy tényleg reménytelen, pedig mindenkinek meg kell adni az esélyt, de ő már kicsit túl sokat kapott.
-
Sk8erPeter
nagyúr
válasz
DNReNTi #17132 üzenetére
"3. Kijavítanám Brian-t a hibajelzésekkel kapcsolatban:
Helyesen: ini_set('display_errors', '1');"
Mielőtt "javítasz" valamit, nem árt, ha meggyőződsz róla, hogy az eredeti információ valóban helytelen-e, vagy csak Te nem vágod, a másik miről beszél.
Amit írtam, az pont úgy helyes. Amit Te írtál, az értelemszerűen PHP-fájlban fog csak működni (egyébként az is helyes), a php.ini-be hiába írod bele...Én meg a php.ini módosításáról beszéltem, ha kicsit visszaolvasol.
Amit írtál, az minden alkalommal, amikor egy adott fájl (amiben a sorod szerepel) betöltésre kerül (már ha betöltődik egyáltalán), meg fog hívódni, nem egy globális beállítás, ami mindenhol érvényes (az összes PHP-kódra vonatkozóan a fejlesztői gépen).Tehát még egyszer: a php.ini konfigurációs fájlba mehetnek ezek a sorok:
PHP 5.4.0 fölötti változatoknál:
error_reporting=E_ALL
display_errors=OnPHP 5.4.0-nál régebbi esetén*:
error_reporting=E_ALL|E_STRICT
display_errors=On* magyarázat: http://php.net/manual/en/errorfunc.configuration.php#ini.error-reporting
"In PHP 5 a new error level E_STRICT is available. Prior to PHP 5.4.0 E_STRICT was not included within E_ALL, so you would have to explicitly enable this kind of error level in PHP < 5.4.0. Enabling E_STRICT during development has some benefits. STRICT messages provide suggestions that can help ensure the best interoperability and forward compatibility of your code. These messages may include things such as calling non-static methods statically, defining properties in a compatible class definition while defined in a used trait, and prior to PHP 5.3 some deprecated features would issue E_STRICT errors such as assigning objects by reference upon instantiation."Egyébként nekem nem tűnt úgy, hogy le kell neki egyszerűsíteni az infót, nekem úgy jött le, hogy értette ő.
Csak még utána kell néznie alapvető dolgoknak is.
-
Sk8erPeter
nagyúr
Na pont ez egy tökéletes példa arra, hogy miért is egy rakás szar még mindig a w3schools, ahhoz képest, hogy sokan azt hiszik, ez a webfejlesztők referenciáinak alfája és omegája, miközben tele van okádmány példakódokkal, rossz praktikákkal.
Egy külön szekciót szentel annak, hogy elmagyarázza, miért csinálja ezt:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
ahelyett, befejezné a szerencsétlenkedését, és ennyit írna:
<form method="post" action="">
üresen hagyva az action-attribútum értékét, ha már önmagára akarja irányítani a formot... Kész, probléma megoldva...De még véletlenül sem hívja fel a figyelmet, hogy amúgy nem igazán üdvös megoldás nem szétválasztani a megjelenítéshez tartozó kódot a kapott adatok feldolgozásához tartozó kódtól...
Az input fieldeknél meg még véletlenül se használna labelt az accessibility és könnyebb kezelhetőség jegyében (pl. labelre kattintva ugorjon bele a mezőbe, ezt a böngészők támogatják, ha a label tartalmazza az általa felcímkézett elemet, vagy össze van kapcsolva egy for attribútum segítségével), nem használ placeholdert, mert ugyan miért is lenne HTML5, töketlenkedik azzal, hogy egyesével adogatja át a $_POST tömbben szereplő változókat az indexszel azonos nevű változóknak validálás után, ahelyett, hogy jóval általánosabb és szebb módon oldaná meg, és így tovább... nem értem, miért nem tudják az embereket spagettikód írása helyett végre valami jóra is tanítani.
Szóval látom, a w3fools.com-nak sajnos még mindig van relevanciája."Itt találtam egy pár funkciót ami a hibakijelzésekre vonatkozik, igazából vakvilágban tapogatódzom, segítenél, hogy pontosan mely fájlokat kell a php.ini-ben bekapcsolni ahhoz, hogy kijelezze a php-s hibákat is?"
Jó helyen tapogatózol, de itt nem "fájlokat" kapcsolsz be (ezt nem is tudtam értelmezni), hanem opciókat állítgatsz be (a php.ini egy konfigurációs fájl).Hibajelzésekre:
PHP 5.4.0 fölötti változatoknál:
error_reporting=E_ALL
display_errors=On
PHP 5.4.0-nál régebbi esetén:
error_reporting=E_ALL|E_STRICT
display_errors=On"Majd ezt követően a debuggolás történhet pl. etc. Firebuggal, konzolon keresztül? (Perpill ugye ott nem ír ki semmit sem)."
Húha, itt alapvető fogalmi tévedések vannak. A kliensoldalnak semmi köze a szerveroldalhoz, attól még, mert kommunikálnak, azok fejlesztése, debuggolása, lehetőségei is totálisan eltérnek. Bármilyen böngészőbeli webfejlesztő panelen csak akkor látnád ezeket a hibákat, ha JavaScripttel kiíratnád őket explicite valahogy a konzolra (ez már a gányolás kategória).
Ezért kell megtanulni rendesen debuggolni, de ez egyelőre sztem még nehézkes lenne neked, gondolom most kezded tanulni a PHP-t."Tehát pl. hozzak létre egy contatform.php és külön csak abba legyen a kontaktformhoz tartozó php kód?"
Egy olyan fájlról beszélek, aminek elküldöd az űrlap adatait (ezt a fájlnevet az action-attribútumban adod meg), és aminek a megjelenítéshez semmi köze, nincs benne az űrlap kiírásáért felelős kód, stb. Megkapod az adatokat, validálod őket, gondolva az esetleges csúnyabácsikra, kezdesz az adatokkal valamit (jelen esetben küldesz egy mailt), aztán visszairányítod az egészet abba a fájlba (header() segítségével), amiből kiindultál (vagy valahova átirányítod a júzert, ahol jelzed neki, hogy milyen ügyes volt, és sikeresen elküldte a cuccát). Itt a feldolgozó fájlban a különböző, másik oldalon kiírt adatokat el lehet tárolni $_SESSION-változókban, de ha ez egyelőre magas, akkor maradj az eredeti megoldásodnál, amikor önmagára irányítod az űrlap adatait (üres action-attribútummal).
Vagy ha valakinek van türelme elmagyarázni, akkor az remek.Most látom, így is qrva sokat írtam.
-
Sk8erPeter
nagyúr
"Ez alapján próbálkozom perpill.."
Ez nagyon durva.És te ezt képes vagy hallgatni anélkül, hogy 1 perc után inkább le akarnád tépni a füledet?
(én inkább azt választottam, hogy kilőttem a francba, egyébként még egy tákolmány is, amit összehoz)
Látom a többi közben nagyjából megoldódott.
(#17127):
Ezt úgy illik, hogy a feldolgozás külön fájlban történik, nem ugyanott, ahol a megjelenítéshez tartozó dolgok."A form validálását is majd egybekötöm a submit button lenyomásával (ezt majd később JS-el megoldom)"
A validálást először SZERVEROLDALON írjuk meg, és csak UTÁNA kliensoldalon! A szerveroldali kódodban egy darab ellenőrzés sincsen, amíg ez nincs kész, addig tovább se lépj, először ezt oldd meg.A PHP-s hibák kijelzése be van állítva a php.ini-ben a fejlesztői gépen? Fejlesztés során mindig a legtöbb hibát kiíró hibabeállítás legyen meg, élesben kell csak elrejteni a hibákat, és azokat inkább naplózni.
Az alapján, amiket írtál, még azt sem tudhatjuk, hogy egyáltalán melyik kódsornál akadt el. Ezt tisztességes debuggolással illik kideríteni, de legalább akkor itt-ott kiíratásokkal derítsd már ki, melyik résznél van a probléma. -
Sk8erPeter
nagyúr
válasz
PumpkinSeed #17119 üzenetére
Bevallom, nem igazán értem, hogy hogyan hasonlítható össze a Transmission nevű torrentkliens, amint az daemonként fut, annak esetleges hibáival, és a cron, mint egy ettől teljesen különálló, időzített feladat-ütemező, ami szintén daemonként fut.
A kettőben a közös tényleg csak annyi, hogy mindkettő tud daemonként futni (pontosabban a cron csak úgy fut).
Na meg ilyen alapon bármi bármikor összeomolhat, elromolhat, történhet szolgáltatás-kiesés, ami valóban adott esetben éppen beleeshet az ütemezett feladat szükséges lefutásának időtartamába. Erre két kerülő megoldás van:
- magas garantált rendelkezésre állású tárhelyet választasz
- egyes oldalbetöltések végén megvizsgálod, hogy utoljára mikor futott az ütemezett feladat (ezek időpontját tárolod adatbázisban), és ha régebben, mint mondjuk 1 hét, akkor lefuttatod azt is. -
Sk8erPeter
nagyúr
válasz
PumpkinSeed #17117 üzenetére
"Nem nagyon bízok az ilyen html fájl megjelenítésénél bonyolultabb dolgok tényleges működésében."
De hát akkor a PHP interpreter működésében sem bízol.Hát ha a szolgáltatónál nem cseszték el a cron konfigurálását, és az időzített feladatként beállított scripted is hibátlanul működik, akkor nyilván menni fog.
A cron a háttérben futkorászik (daemon), és bizonyos beállított időzönként lefuttatja a kívánt folyamatokat. Igazából nagy mágia nincs a működésében. -
Sk8erPeter
nagyúr
válasz
PumpkinSeed #17112 üzenetére
Ha van cron a szolgáltatónál (és valóban műxik), akkor mi a kérdés, miért ne menne?
-
Sk8erPeter
nagyúr
válasz
DNReNTi #17108 üzenetére
Ebben a hsz.-ben azt írta, hogy adott oldalak látogatása után (is) kapna pontot. Tehát az oldal betöltésekor ellenőrizni kellene, hogy ennek az oldalnak a látogatásáért kapott-e már pluszpontot, ha nem, jóváírni, ha igen, akkor nem történne ponthozzáadás. A "naplót" abban az értelemben muszáj lesz vezetni, hogy járt-e már az adott oldalon, de a felhasználó pontjainak növelése egyből az oldal meglátogatása során történhetne (nem pedig pl. ütemezett feladattal, "majd valamikor"), hadd kapja meg a vállveregetést a felhasználó egyből, amint meglátogatta az oldalt.
-
Sk8erPeter
nagyúr
válasz
DNReNTi #17091 üzenetére
"Igazából még csak nem is plusz lekérdezés, ha ügyesen csinálod, akkor az egész felhasználó objektumodat annak minden tulajdonságával létre tudod hozni egyetlen lekérdezéssel. Kb nulla plusz terhelés."
Mármint úgy érted, hogy hozzácsapod egy joinnal az eredményhalmazhoz azt is, hogy mondjuk adott oldalon járt-e? Csak mert szerintem ez meg már a lekérdezést bonyolítaná agyon (ha valóban egyetlen lekérdezéssel akarsz mindent megoldani), és nem hiszem, hogy megéri azzal szemben, hogy plusz egy lekérdezést intézel, hogy megtudd, járt-e az adott oldalon. Elméletileg nem szabadna, hogy ezek a lekérdezések jelentsenek komoly szűk keresztmetszetet, ha igen, akkor érdemes vizsgálódni az adatbázisban például megfelelő indexelés hiánya miatt, és ezeken javítani. -
Sk8erPeter
nagyúr
válasz
PumpkinSeed #17084 üzenetére
"Amúgy azért lenne fontos, mert pontokat kapnak a felhasználók bizonyos oldalak meglátogatásáért, és hogy ne legyen minden oldal töltésnél adatbázis művelet így úgy gondoltam, hogy letárolom cookieba és csak valamilyen időközönként tárolom le."
Hát pedig de, az ellenőrzést és szükség esetén a pontnövelést, és ezzel az adatbázis-műveletet azonnal az oldalletöltésnél, szerveroldalon végezd el, ilyen feladatokat semmiképp se rakj át kliensoldalra. Egy normálisan karbantartott adatbázisnál, nem feleslegesen agyonbonyolított query-knél ez nem szabadna, hogy gondot okozzon. Ha gyorsítani akarsz ezen, akkor ezt szerveroldalon végezd, ne úgy akarj gyorsítani, hogy azon töröd az agyad, hogy hogyan fogadj el megbízhatatlan adatforrást (minden adatforrás megbízhatatlan, ami a klienstől származik) valamilyen szinten megbízhatónak. -
Sk8erPeter
nagyúr
válasz
Speeedfire #17060 üzenetére
Korábban sem tiltotta senki, hogy engedélyezve legyen.
Ízlés kérdése, én azért nem komálom, mert szerintem rontja az olvashatóságot, én feleslegesnek látom lespórolni azt a pár karaktert, számomra csúnyább tőle a kód, de ez tök szubjektív, a fejlesztőre vagy fejlesztőbrigádra van bízva ennek az eldöntése.
-
Sk8erPeter
nagyúr
válasz
#68216320 #17057 üzenetére
Most, hogy engedélyezted, cseréld is le az összeset
https://gist.github.com/jankkhvej/1117678 -
Sk8erPeter
nagyúr
válasz
fordfairlane #17052 üzenetére
Ja, és valóban, ott volt egy tök felesleges kódblokklezárás, majd üres sor, majd megint kódblokk-kezdés, észre se vettem. Mondjuk a kódban továbbra sincs egy sornyi validálás sem, szóval ez még mindig úgy, ahogy van, fos...
-
Sk8erPeter
nagyúr
válasz
martin66 #17049 üzenetére
Hát sorry, de másokhoz hasonlóan éppen adódó szabadidőmben látogatok csak fel, hobbiból, nincs tengernyi időm, konkrét hiba javításában, konkrét kérdés megválaszolásában szívesen segítek, de elölről megírni neked egy ilyet melós. Persze reméljük, hogy lesz lelkes önkéntes, aki bevállalja (amikor először kezdtem segítgetni a topicban, akkor még én is lelkes voltam, aztán rájöttem, hogy nem érdemes, az ember a kisujját nyújtja, akkor az esetek többségében az egész karja kell, és mindez véget nem érő folyamat, aminek az eredménye az, hogy nekem rengeteg időm elment, a másik meg copy-paste-el, aztán köszönés nélkül távozik
).
Rengeteg témához kapcsolódó, de az általad írtnál sokkal szebb megoldás, tutorial létezik, ha pár percig guglizol, biztos lehetsz benne, hogy kész megoldásokat kapsz. Persze főleg angol anyagokban érdemes keresni, "form validation php", "form processing php", stb. kulcsszavak segítségével... -
Sk8erPeter
nagyúr
válasz
martin66 #17047 üzenetére
Ezek szerint van output még a header-kiküldési kísérlet előtt, ez így nem fog működni (pontosan ezzel kezdtem), úgyhogy ne legyen. A feldolgozás legyen teljesen különálló fájlban, ne legyen egybeömlesztve azzal, ahol kiíratod az űrlapot.
Ez a kód egyébként még borzalmasan hiányos, sehol sem validálod az űrlapot (nem ellenőrzöd, hogy egyáltalán léteznek-e az általad elvárt kulcsok a $_POST tömbben, illetve a felhasználó által megadott adatok megfelelnek-e bármilyen elvárt formátumnak), az ELSŐ feladat mindig az legyen, hogy elkészíted a felhasználótól kapott adatok ellenőrzésére szolgáló kódrészletet. Soha ne bízz meg felhasználótól kapott adatokban. -
-
Sk8erPeter
nagyúr
válasz
tothjozsi96 #17015 üzenetére
Sejtettem, hogy ilyesmi lesz...
-
Sk8erPeter
nagyúr
válasz
tothjozsi96 #17013 üzenetére
Ennek egészen biztos, hogy SEMMI köze nincs ahhoz, hogy miért kaptál eredményt mégis úgy, hogy állításod szerint üres volt az egész adatbázis (?? akkor milyen táblát kérdeztél volna le? Ha pedig a táblára gondoltál, hogy üres, akkor miért adott volna vissza találatot?!). Ezzel erőforrásokat szabadítasz fel, de a problémáid oka tuti nem ez volt, közben valami mást is babrálhattál.
-
Sk8erPeter
nagyúr
válasz
tothjozsi96 #17009 üzenetére
Pedig akkor egészen biztos, hogy valami nem stimmel. Mutass komplett kódot, amivel csinálod.
(#17010) Flashback:
Első körben próbáld meg azt, hogy még a <!DOCTYPE elé rakd be az említett sort (igen, ott van a meta tagben, de nem biztos, hogy elég):
<?php header('Content-Type: text/html; charset=utf-8'); ?>
<!DOCTYPE ...
(nyilván az alsó sor nélkül, csak hogy egyértelmű legyen)
Egyébként mivel gyaníthatóan most alakítod ki az oldalt, lehetőleg ne XHTML 1.0 Strict legyen, hanem HTML5-ös, van jópár igen hasznos feature, amit így kihasználhatsz (az mellékes, hogy a böngésző sokszor engedékeny, és más doctype ellenére is esetleg használhatsz HTML5-től létező dolgokat, de legyen szabályos). Az meg csak annyiból áll, hogy a szokásos tagek elé a
<!DOCTYPE html>
deklarációt rakod, és máris HTML5-ös a doksid. (Az xmlns és xml:lang attribútum ennek megfelelően itt már nem szükséges, csak XHTML-nél.) -
Sk8erPeter
nagyúr
válasz
tothjozsi96 #17006 üzenetére
COUNT-tal könnyen tudod ellenőrizni, hány rekord van, ami a feltételeknek megfelel:
$stmt = $mysqli->prepare('SELECT COUNT(*) FROM users WHERE username = ? OR email = ?');
$stmt->bind_param('ss', $username, $email);
$stmt->execute();
// a $numberOfUsers változó fogja tárolni a prepared statement eredményét a fetch után
$stmt->bind_result($numberOfUsers);
$stmt->fetch();
if($numberOfUsers > 0) {
// para, van már ilyen felhasználó, tehát nem regisztrálhat ezekkel az adatokkal
// kivételdobás, stb.
}
// egyébként mehet tovább...Ja, még annyi, hogy a die() létezését inkább felejtsd el, dobj kivételt, kezeld is le valahol tisztességesen, stb.
-
Sk8erPeter
nagyúr
válasz
tothjozsi96 #17002 üzenetére
Na ne. Ezek szerint amikor feltöltesz egy felhasználót, akkor UTÓLAG ellenőrzöd, hogy duplicate key hibára hivatkozik-e (mivel az az 1062-es), nem is ellenőrzöd még feltöltés ELŐTT, hogy van-e már olyan felhasználó? Még beszúrás előtt ellenőrizz minden szükséges adatot, ne a beszúrási kísérlet után...
Kb. így kéne kinéznie a folyamatnak: felhasználó elküldi az űrlapot » formvalidálás: egyáltalán jók a bevitt adatok, nem tartalmaznak nem elfogadott karaktert, ilyesmik? » van már ilyen felhasználó? » ha igen, hibaüzenetet mutatunk; ha nem, beszúrjuk, sikerre utaló üzenetet írunk ki.
Nem pedig úgy, hogy beszúrjuk, és az arra kapott esetleges hibaüzenetből derítjük ki, hogy volt már olyan felhasználó...Amúgy mysqli vagy PDO?
http://php.net/manual/en/mysqli.errno.php
http://php.net/manual/en/pdo.errorcode.php
http://php.net/manual/en/pdostatement.errorcode.php
PDO-t viszont egyszerűbb/szebb úgy beállítani, hogy dobjon exceptiont, ha probléma volt a lekérdezéssel. -
Sk8erPeter
nagyúr
válasz
tothjozsi96 #16982 üzenetére
"Lenne egy olyan kérdésem hogy adott egy letöltés számláló."
Igen. -
Sk8erPeter
nagyúr
válasz
trisztan94 #16979 üzenetére
Nem próbáltam, de esetleg azzal eggyel beljebb lehetnél, ha minden jármű után (tehát bármilyen újabb fejléc előtt) beszúrnál egy-egy page breaket, ahogy itt a példában minden 10. sor után beszúr egyet:
https://github.com/PHPOffice/PHPExcel/blob/develop/Examples/09pagebreaks.php
$objPHPExcel->getActiveSheet()->setBreak( 'A' . $i, PHPExcel_Worksheet::BREAK_ROW );
Persze ki kéne próbálni, hogy látsszon, ez milyen újabb megoldandó problémákat vet fel. -
Sk8erPeter
nagyúr
válasz
Dr.Burn #16947 üzenetére
1. Úgy próbáld elérni az értékét a cikluson belül, hogy $row['firstWord'].
Ha meg kifejezetten egy értékre van szükséged, akkor nyilván korlátozni kell a query-t egy WHERE feltétellel (pl. ahol az azonosító értéke 123)."Probaltam $result-bol kinyerni azt."
Az úgy nem lesz jó.2. már megszámolni se tudnám, hányszor írtuk le a topicban, hogy a mysql_* kezdetű függvények FELEJTŐSEK, ÖRÖKRE. Még a mysql_query doksijában is ott van az ember arcába vágódó, piros hátterű szöveg:
"Warning
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:
mysqli_query()
PDO::query()" -
Sk8erPeter
nagyúr
válasz
honda 1993 #16937 üzenetére
IKSZDÉNÉGYNÉGYNÉGY
-
Sk8erPeter
nagyúr
válasz
honda 1993 #16935 üzenetére
Hát ez botrány!
-
Sk8erPeter
nagyúr
válasz
PumpkinSeed #16915 üzenetére
Ne legyen így szétdobálva külön-külön fájlokra, inkább legyen egy REST API-szerűséged.
-
Sk8erPeter
nagyúr
válasz
honda 1993 #16907 üzenetére
Miért nem kezded azzal, hogy megpróbálsz minimális saját energiát is belefektetni?
(#16906) PumpkinSeed:
"Csak mivel változók voltak bent ezért ez nem jutott az eszembe"
Merthogy a változók valami mágikus dolgokat művelnek, és nincsenek nekik értékeik, amiket akár "kézzel" is behelyettesíthetsz? -
Sk8erPeter
nagyúr
válasz
PumpkinSeed #16901 üzenetére
Ömm, hát
ex(12, NULL, "Imre");
Ugyanígy lehetne akár ex(12, NULL, NULL, "Imre"); is... -
Sk8erPeter
nagyúr
válasz
PumpkinSeed #16896 üzenetére
Ideje volt...
Amúgy a múltkorira b@sztál reagálni, azzal mi lett?
(#16898) premierpark:
Szerintem első lépésként kezdd el itt:
http://studio.code.org/s/frozen/stage/1/puzzle/1 -
Sk8erPeter
nagyúr
válasz
PumpkinSeed #16880 üzenetére
Ez így nem fog menni, pipe-olni kell a jelszót, és a sudo-nál a standard inputról kell azt levenni, valahogy így:
echo JELSZÓ | sudo -S parancs_amit_végrehajtasz && másik_parancs_amit_végrehajtasz
VAGY
echo JELSZÓ | sudo -S su -c "parancs_amit_végrehajtasz && másik_parancs_amit_végrehajtasz"
Ezt tudnád mondjuk aposztrófok közé berakni, és végrehajtani shell_exec segítségével, DE ez biztonsági szempontból elég veszélyes, hogy közvetlenül egy scriptfájlba belerakod a rendszergazdai jelszót, úgyhogy lehetőleg kerüld el.
-
Sk8erPeter
nagyúr
Amíg nem escape-eled legalább ezzel az amúgy is elavult fostos módszerrel a lekérdezéseidet, addig szerintem ne beszéljünk tovább a dologról.
Inkább nem linkelem a függvényt, ami erre való ehhez az elavult módszerhez, hogy érezd, hogy ez bizony nem a jó út, amin jársz.
Fúdekőkeményöcsém.
-
Sk8erPeter
nagyúr
A kódod tökéletesen alkalmas az SQL Injectionre. Ha nem tudod, mi az, nézz utána, ezenkívül használj valami normális módszert az adatbázis-kezelésre, felejtsd el a mysql_* kezdetű függvényeket, használj helyette PDO-t vagy MySQLi-t (i a végén). Ha úgyis most készül a kód, teljesen értelmetlen toldozni-foldozni egy kapásból elvi hibás kódot.
-
Sk8erPeter
nagyúr
válasz
PumpkinSeed #16857 üzenetére
"Nem említetted, hogy hogyan akarod ezt megtenni, de itt egy elképzelhető megvalósítás."
Az oldalon látható kód borzalmas több tekintetben is (mind a JS-, mind a PHP-kód), ezt az oldalt inkább ne... -
Sk8erPeter
nagyúr
válasz
honda 1993 #16853 üzenetére
Szívesen, de mi lenne, ha egyből arról a gépről írnád meg a problémát, amin előfordul, és akkor nem menne a töketlenkedés és a topicszemetelés?
-
Sk8erPeter
nagyúr
válasz
honda 1993 #16849 üzenetére
Önmagában annak, hogy Linux és Windows üzemel nálad dual boot módban, semmi köze az általad említett problémasorozathoz. Pedig az "Amióta linux és Windows van telepítve, azóta ilyen" mondat azt sugallná, de ez a következtetés ebben a formában nyilvánvalóan helytelen (okolni a Linuxot a problémákért, miközben user errorról van szó). Nyilván ha mondjuk Linux alól érdekes módon végzel Windows-hoz tartozó rendszerfájl-babrálásokat, az tudna érdekes helyzeteket okozni, de speciel a problémák, amiket írtál, olyan jellegűek, hogy nem hiányzó rendszerfájlra, vagy ilyesmire utalnak, ennyi információ alapján rejtélyesek, és bár az okuk kideríthető lenne, ez már inkább az operációs rendszered topicjába tartozó kérdések ([link]/[link]), hiszen nálad OS-szintű problémák vannak, nem PHP-val kapcsolatosak.
Egyébként ahogy PumpkinSeed írta, ignoráltad a kapott információk nagy részét, de megpróbálhatnád azt is, amit ő javasolt, vagyis egy hordozható megoldást, ha most nincs kedved a problémaforrás kiderítésével foglalkozni.
-
Sk8erPeter
nagyúr
válasz
honda 1993 #16844 üzenetére
És mégis mi köze a teljesen különálló Linuxodnak a Windows-hoz?
-
Sk8erPeter
nagyúr
válasz
honda 1993 #16841 üzenetére
A feladatkezelőben is ellenőrizted, hogy egészen biztos nem fut-e? Korábban telepítetted egyébként az EasyPHP-t? Az, hogy újraindítottad, semmit nem old meg, ha egyébként telepítve van az EasyPHP, mivel gondolom alapértelmezetten azt állítja be, hogy automatikusan induljon a rendszerrel együtt ő is, meg a szolgáltatások is...
Ha meg sosem telepítetted még, akkor tényleg furcsa anomáliák vannak a gépeden. Nem valami crackelt fos Windows? Nem tudok jobbat ennyi alapján, mint backup, és telepítsd újra az OS-t, hátha jobb lesz... -
Sk8erPeter
nagyúr
válasz
honda 1993 #16839 üzenetére
Olvastad a hibaüzenetet? Azt írja, hogy "Setup has detected that EasyPHP is currently running", ezek szerint már fut a háttérben az EasyPHP...
Nézz körül talán a tálcán, gondolom ott tudod buzerálni (pl. leállítani, elindítani, újraindítani a webszervert vagy a MySQL-szolgáltatást).
(#16838) Speeedfire: Te sem Vagranttal kezdted, és ha valakinek Windows-on is nehézséget okoz összekattintani egy működő webszervert, akkor nem a Vagrant fogja megoldani a problémáit... Kezdőnek nem azt kell ajánlani, ami szerintünk, a jelenlegi tudásunkkal, számunkra a legkényelmesebb, hanem azt, amin a kezdőnek a legkevesebbet kell agyalnia, mert nem jó, ha kapásból ez elveszi a kedvét az egésztől, hogy próbálkozik, de azt se tudja, mi van.
-
Sk8erPeter
nagyúr
válasz
honda 1993 #16820 üzenetére
Jó, hogy csak a kérdésre nem válaszoltál, hogy hol van az a nyomorék fájl. Lehet, hogy nincs a PATH-ban (egyik környezeti változó) az a könyvtár, ahol ez(ek) a dll(-ek) található(k). Vagy tudja a franc ennyiből.
De nem nagyon értem, miért éppen csak és kizárólag egyfajta telepítéssel próbálkozol, ezer alternatíva van még, ott az EasyPHP, a XAMPP, és így tovább.Azt az alternatívát is többször írtam, hogy az IIS telepítése a Microsoft Web Platform Installer segítségével pár kattintás. Miután felraktad a WebPI-t, annak a keresőjébe példa gyanánt írd be, hogy Drupal, rakd fel azt, aztán majd max. utólag leszeded, ez csak azért érdekes, mert így minden függőség behúzásra kerül, amit az igényelne, és itt egyből beállíthatod a MySQL-hozzáférés adatait is. Nyilván beírhatsz mást is a keresőbe, mondjuk egy WordPress-t is; most azért említettem ezt a kettőt, mert ezeket kiadja a kereső, de mondjuk egy Symfony-t sajnos nem, de jó lesz most példaként egy CMS is (mondom, aztán majd max. letörlöd).
(Nyilván ha az utóbbi megoldás mellett döntesz, akkor töröld le előtte a többi, eddigi próbálkozással felrakott szutykot, ha nem akarsz utána pluszban konfigurálgatni még.)Persze így IIS-ed lesz, nem Apache-od (jujjjjjj, vigyázz, mert a végén megharap). Ha Apache-ot akarsz, mert a tutorialok azt mondják, akkor maradj az első részben említett megoldások valamelyikénél.
-
Sk8erPeter
nagyúr
válasz
honda 1993 #16818 üzenetére
"Ha beírom a keresőbe [...] akkor van rá találat [...] Azt mondjuk nem tudom, hogy amit talál az hiányzik-e"
Most akkor melyik keresőbe írod be?A Google-be vagy az Everything keresőjébe vagy Windows saját keresőjébe vagy a Total Commander keresőjébe vagy...? És ha a gépeden keresgélsz, és van rá találat, akkor miért kérdés, hogy amit TALÁLT, az hiányzik-e?
Amit talált, azt hol találta meg, melyik könyvtárban?
Elég nyögvenyelős ez így, ezzel a tempóval két hét múlva sem oldjuk meg, kicsit több infót ossz már meg. -
Sk8erPeter
nagyúr
válasz
honda 1993 #16813 üzenetére
Mindegy, az Everything csak egy nagyon hasznos keresőprogram, amivel pillanatok alatt lehet megtalálni a háttértáraidon lévő fájlokat, nem úgy, mint a hagyományos keresőkkel, és gondoltam ezzel majd jól leellenőrzöd, hogy a telepítő által hiányolt dll valójában neked megvan-e, és esetleg nincs a PATH környezeti változóban, és így tovább, de látom, csak összekavartalak vele, úgyhogy akkor hagyjuk.
Mindenesetre ha más olvassa ezt a hsz.-t, annak nagyon ajánlom az Everythinget!(#16814) Speeedfire:
És azzal miért is jár jobban?Még a Windows-környezet is mutat újat neki, szóval csatlakozom DNReNTihez.
Meg úgy amúgy sem hinném, hogy "jobban" járna. A next-next-kész nem vesz igénybe több időt, mint a Vagrantos módszer (persze attól függ, miről beszélünk, de jelenleg csak egy sima webszerver felpakolásáról).
-
Sk8erPeter
nagyúr
válasz
honda 1993 #16811 üzenetére
Volt újraindítás, vagy logout-login ezután? Csak mert a környezeti változók beállításánál néha szükség van ezek valamelyikére (elvileg elég a logout-login), sokszor nincs, de tudja a franc. Legalábbis akár egy lehetséges problémaforrás.
Az Everything segítségével amúgy másodperc törtrésze alatt lehet az indexelést követően (ami tipikusan olyan max. fél perces folyamat) megtalálni a gépeden lévő fájlokat, így például kideríthetnéd, hogy valóban fent van-e a rendszerpartíciódon például az MSVCP110.dll fájl, vagy épp a többi, amit hiányol. Ennek elvileg fel kell mennie a korábban belinkelt "Visual C++ Redistributable Packages..." csomaggal. -
Sk8erPeter
nagyúr
válasz
honda 1993 #16809 üzenetére
Jó, akkor ahogy már írták, mehet fel:
Visual C++ Redistributable Packages for Visual Studio 2013 -
Sk8erPeter
nagyúr
válasz
honda 1993 #16803 üzenetére
Egész konkrétan milyen dll-eket hiányol?
Linkelj már egy screenshotot, mert így nyilván semmi értelmeset nem lehet mondani.
Komolyan, piros betűkkel kéne kiírni valahova, hogy a "valamiért nem jó", "nem működik, mi a baja"-jellegű hibaüzenetekkel SENKI nem tud mit kezdeni, legfeljebb elkezdeni tippelgetni, ami meg hosszas huzavonával és oda-vissza válaszolgatással, így sok felesleges pluszhsz.-szel jár.
-
Sk8erPeter
nagyúr
válasz
honda 1993 #16801 üzenetére
Dehogy veszlek komolyan, csak nem veszed észre, hogy oltogatlak, hogy menj el segédmunkásnak inkább, ha ilyen kérdéseid vannak.
-
Sk8erPeter
nagyúr
válasz
honda 1993 #16799 üzenetére
Hát majd amikor segédmunkás leszel egy építkezésen, jól fog jönni arra, hogy beledobáld a platóba az építési hulladékot.
-
Sk8erPeter
nagyúr
válasz
DNReNTi #16796 üzenetére
Első megközelítésként az URL Rewrite modul telepítése után (ezt úgyis felrakja a Web Platform Installer, ha pl. kezdésnek rámész, hogy mondjuk rakja fel a Drupalt, aztán ha ez nem kell, leszedheted, de jó példa lehet, hogy minden függőséget behúzzon, ami pl. ehhez kellene) amit lehet, meg kell próbálni importálni a .htaccess-fájlból az adott oldalnál az URL Rewrite menüpontban, az Import Rules segítségével:
Teljesen általános módszer nincs, mert nem mindent ismer fel a .htaccess-fájlból automatikusan, amit kellene (de azért jópár dolgot), erre alternatív megoldásokat kell ilyenkor keresni.
(#16794) honda 1993:
Nem, ez egy billenő platóval ellátott teherautó, vagyis egy dömper. -
Sk8erPeter
nagyúr
válasz
sztanozs #16783 üzenetére
"Nem szükségszerűen biztosítható az internetkapcsolat a gépen."
Ezt most nem mondod komolyan, hogy ez volt az oka, hogy behánytátok a dokumentumba egy <script> tagen belülre a jQuery-t, ugye csak viccelsz?Lokálisan letöltve a jQuery-t, helyi webszerverről, megadva a fájl relatív elérési útját is nyilvánvalóan ugyanúgy működik, de még a file:/// protokollon keresztül, teljes elérési utat megadva is megy.
(#16782) DNReNTi:
"Azt azért előre borítékolhatod, hogy míg egy WAMP-ot beüzemelni mondjuk 5 perc, addig ha nem vagy gyakorlott linux user, akkor a LAMP-ra rá fog menni egy napod, aztán nem megy és leformázod az egészet a francba."
Ez azért nem feltétlenül igaz, egy apt-get install phpmyadmin azért elég gyors és egyszerű tud lenni, és behúzza a függőségeit is...
Mondjuk ha már Windows, akkor ott van az amúgy is jelenlévő, csak nem engedélyezett IIS, ezt bekonfigurálni a Microsoft Web Platform Installer segítségével meg pár kattintás...(#16781) honda 1993:
"A haverom tanacsolta hogy inkabb terjek at a linux webszerverre, mert szerinte a windows-os egy nagy rakas sz@r."
Na hát az ilyen vélemények azok, amiket ilyen formában nem szabad komolyan venni.Hozzáteszem, én azt tapasztaltam többszöri próba után is, hogy nálam Windows-on az Apache-szerveren keresztüli futtatás sokszor valóban észrevehetően vánszorgósabb volt, mint Linux+Apache segítségével, éppen ezért próbáltam ki Windows-on az IIS-t, ez számomra sokkal jobban bevált teljesítmény szempontjából, meg a konfigurálhatóság is JÓVAL egyszerűbb, mint Apache esetében (kezdjük ott, hogy nem kell szövegfájlokat konfigurálni (bár azt is lehet, ha valaki akarja), hanem grafikus felületen végzed el a beállításokat, bekattintgatod a változtatásokat, és vonatkozik ez a php.ini-s módosításokra is).
Ettől függetlenül haverod véleménye abban a formában igen erős túlzás, meg kéne tudni, mire is vonatkozik.Ha van kedved, kipróbálhatnád egyébként az IIS-t is. (Pl. ezt letöltöd, bepötyögöd, hogy Drupal, rakja fel azt, csak azért, hogy behúzza az összes függőséget, ami ilyenhez kell, onnantól használhatod a webszervert (persze figyelj rá, hogy ne ütközzön Apache-csal).)
-
Sk8erPeter
nagyúr
válasz
don_peter #16777 üzenetére
Na jó, ez így elég akadozós, mert nem mutattad meg, milyen forráskódot írtál ehhez, úgyhogy próbáld meg azt, hogy innen egy az egyben kimásolod a tartalmat egy szövegszerkesztőbe, elmented a fájlt, aztán megpróbálod megnyitni a böngésződben, mint látható, itt a demóoldalon hibátlanul működik, tehát nálad is muszáj mennie, ha nem, akkor ideje alaposan körülnézned a webszervered beállításainál:
http://jsbin.com/bemeropura/1/edit?html,outputSzerk.: azért raktam fel JS Binre, mert egyrészt ez is jó, másrészt főleg mert itt nincs figyelmeztetés, ha a dokumentum keretéül szolgáló tageket (<html>, <head>, <body>) is hozzáadom (mint jsFiddle-nél, ami automatikusan kiegészíti a kódot ezekkel (ami egyébként nem is baj)), és így egyben ki tudod másolni a komplett kódot, aminek működnie kell nálad is.
-
Sk8erPeter
nagyúr
válasz
don_peter #16774 üzenetére
Akkor viszont nem a jQuery-vel van a baj, hanem valami mással, de nagyon...
Mutathatnál a konzolról (Ctrl+Shift+I vagy F12) egy screenshotot, konkrétan pl. a Network fülről... Persze nekem mindegy, de eléggé könnyen átléptél egy eléggé meglepő és fundamentális hibán: mi az, hogy fehér kép lesz egy sima JS-library betöltésétől?
Ez így nem zavar?
-
Sk8erPeter
nagyúr
válasz
don_peter #16772 üzenetére
"valamiért nem ment"
Ez egy igen jó hibaleírás, amiből sok minden kiderül, és sok tanácsot lehet ez alapján adni a probléma orvoslására...
Szóval mit jelent az, hogy "nem ment"? Mit írt a konzol? Nem jelezte neked például 404-gyel, hogy nem ott található a fájl, amit megadtál neki elérési útként? -
Sk8erPeter
nagyúr
válasz
sztanozs #16770 üzenetére
És mi volt a magyarázat arra, hogy inline legyen a komplett jQuery ilyen kopipésztes megoldással?
Az egy dolog, hogy nálatok így történt, de másnak nagyon nem javasolt.(#16769) don_peter:
Ahogy minden más JavaScript-fájlt, ezt is ugyanúgy kell behúzni egy <script> tag formájában, az src-attribútumnak megadva a fájl elérési útját... ami nem muszáj, hogy saját tárhelyen legyen, behúzhatod CDN-ről is. -
Sk8erPeter
nagyúr
válasz
don_peter #16764 üzenetére
Bocsi, de ezzel csak elcsúfítottad az amúgy jó megoldást.
Külön CSS-ben nyugodtan megadhatod a stílusokat, semmi szükség ehhez bedrótozott style-attribútumokra (sőt, kifejezetten kerülendő, ajánlott irodalom). -
Sk8erPeter
nagyúr
válasz
disy68 #16758 üzenetére
Pontosan ilyesmi megoldásra gondoltam.
Nice one.(#16757) don_peter:
"Amúgy még annyival kiegészíteném, hogy a 0 is értékes adat mert a pixel vagy be van kapcsolva vagy nincs."
Ettől még a 0 nem értékes adat, mert mint említettem, feltételezhetjük, hogy alapból egy pixel 0 értékű, csak az az igazán érdekes és értékes adat, hogy mikor és hol VAN bekapcsolva (hol 1-es) . Pontosan ahogy disy68 megmutatta: számontartja, melyik sorokban mely cellák azok, amelyek be vannak kapcsolva, tehát ott 1 bit van, a 0-val meg nem foglalkozunk, mert tudjuk, hogy a többi pixel (ami nem 1-es) az 0."Erre a formára azért van szükségem, mert e struktúra szerint írtam meg C-ben a kijelzővezérlést."
A kapott adatokat nyugodtan átalakíthatod az általad elvárt formába, szóval akár maradhat is a jelenlegi forma, amit elvársz a C-kódban, ez a vesszővel elválasztott, sortöréses változat. Na meg a C-ben írt megoldást is átírhatod az új megközelítésnek megfelelően.(#16759) biker:
Na ez már nem szép megoldás.Nehezen kezelhető (stringet kell robbantgatni, törékeny), meg a megmutatott megoldáshoz képest ez is pazarló.
-
Sk8erPeter
nagyúr
válasz
don_peter #16754 üzenetére
Uhh, szerintem ez így borzalmasan pazarló, valami olyan adatstruktúrát kellene alkalmaznod, ahol csak az értékes biteket (ami itt nyilván az 1-es) viszed át pl. kliensoldalról szerveroldalra, pl. kliensoldali előfeldolgozással, JavaScript segítségével; sőt, ebben az alternatív adatstruktúrában is tárolod (legalábbis a memóriában biztos, a perzisztens adattárolás most más tészta). Nyilván a táblázatos módszer egyszerűbb, de óriási helyet igényel a memóriában, igazából feleslegesen, mert a 0 értékek senkit nem érdekelnek (feltételezhetjük, hogy az az alapértelmezett).
Egyébként esetedben többek közt a post_max_size ÉS a max_input_vars (default: 1000) is korlátot jelenthetnek, (a max_input_nesting_level elvileg nem, mert az alapból 64-re van állítva). A memory_limit túl alacsony értéke is korlátozhat, de ha ezzel kapcsolatos lenne a gond, akkor azt egy Fatal error formájában úgyis látnád.
-
Sk8erPeter
nagyúr
válasz
PumpkinSeed #16705 üzenetére
"Ez azért érdekelt engem, mert $valami['asd'][1] így hivatkoztam az asszociatív tömbbe helyezett elemekre és nem akart értéket visszaadni semmilyen módon."
Mert ez így értelmetlen, de erre már megadta a választ fordfairlane."Amikor elkezdtem csinálni ezt a hobbi projektet akkor prepared statement-el készítettem, de annyira nem akart összejönni"
De akkor miért nem kérdezel inkább, vagy guglizol tovább?És mi nem jött össze konkrétan?
Igazából egyébként Amazont (!) lehet rekeszteni stackoverflow.com-os, prepared statementtel kapcsolatos kérdésekkel is. Direkt nem Dunát írtam, mert az elcsépelt, az Amazon meg a legszélesebb-leghosszabb-legbővízűbb, szóval ezzel legalább nagyobbat mondok. -
Sk8erPeter
nagyúr
válasz
PumpkinSeed #16703 üzenetére
"nem létezik akkora facepalm amit erre be tudnék tenni"
Jól látod a helyzetet.Így, hogy a kolléga igen egyszerűen megválaszolta, már az eredeti kérdést is értem, bár bevallom, azt feltételeztem, hogy ennél valami bonyolultabb problémakör megoldásában kérsz segítséget, de mindezt csak jóindulatból.
Szóval mi volt a gondod a prepared statementekkel? Amíg azt nem érted, nem használod, addig ne is folytasd a paraméterek átadásával történő adatbázis-lekérdezgetéseket bármilyen szerveroldali nyelvből.
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #16699 üzenetére
Most megnéztem a kérdést, és idézek:
"oké, hogy $images[img_path]-nak definiálja azt amelyiket a while ciklus épp beleteszi. De nem lehet erre valahogy máshogy hivatkozni, pl. $images[img_path] ahol az i egy olyan változó ami az adatbázisból kiolvasott elemek sorszámát jelöli."
Ezt ha valahogy elmagyaráznád úgy, hogy legyen bármi értelme a kérdésnek, akkor talán választ is kaphatnál.A folyamatos adatbázis-lekérős ötletedet meg aztán végképp nem lehet érteni.
Basszus, itt nem PHP-ban kell megfogalmazni a kérdést, hanem az anyanyelveteken, nem igaz, hogy az se megy...
-
Sk8erPeter
nagyúr
válasz
PumpkinSeed #16698 üzenetére
"Előre szeretném kérni, hogy ne prepared statement-t mondjatok, mert az utál engem."
Ezek után tovább sem olvastam.Mégis miért nem szeretitek egymást, akarsz róla beszélni?
Szerk.:
rákattintottam a példádra, nem $images[img_path], hanem $images['img_path'], mivel egy stringet akarsz átpasszolni, nem egy valahol definiált konstanst...És ugyanígy a másik tömbindexelésnél megint elkúrtad. Ennyi idő PHP-zás után ezt azért remélem, nem kell megindokolni...
-
Sk8erPeter
nagyúr
Egyszerűbb is annyiból, ha belerakja a metaadatokat, hogy így bárhol egyből meg tudod nyitni a projektet, ahol van NetBeans, tehát az egész könyvtárat bárhova tudod hurcolni, nem kell külön importálgatni. Meg lehet így spórolni pár kattintást, plusz a projektspecifikus beállítások is egyből ott lesznek a projekt mellett.
Ha már szóba került, verziókezelő használata esetén (Git, SVN, Mercurial, stb.), ha egy csapat dolgozik a projekten, érdemes kizárni az nbproject/private könyvtárat, mert így legalább nem buzeráljátok egymás saját beállításait - és még ezeket:
https://github.com/github/gitignore/blob/master/Global/NetBeans.gitignore -
Sk8erPeter
nagyúr
A NetBeans metadata nem feltétlenül kell, hogy a forráskódokkal azonos könyvtárba kerüljön, külön könyvtárba is lehet rakni, ezt a projekt létrehozásánál be lehet kattintani.
Egyébként itt van a hivatalos kapcsolódó doksi screenshotokkal együtt (az is benne van, amit írtam):
https://netbeans.org/kb/docs/php/project-setup.html#importSources -
Sk8erPeter
nagyúr
válasz
PumpkinSeed #16688 üzenetére
Most nincs előttem a NetBeans, de olyasmi, hogy File > New Project > PHP Project with Existing Sources. Vagy simán létrehozol egy új projektet, és szépen belepakolod a fájljaidat utólag (akár úgy, hogy importálod a fájlokat, akár úgy, hogy simán belemásolod fájlkezelővel, aztán ráfrissítesz).
-
Sk8erPeter
nagyúr
válasz
honda 1993 #16662 üzenetére
Tehát akkor "szugseged" van némi nyugalomra?
-
Sk8erPeter
nagyúr
válasz
tothjozsi96 #16649 üzenetére
"Én ezt ajánlom: [link]
Bocs, de engem rohadtul tud zavarni ha valaki nem használ ékezetet, vagy az hogy ilyeneket ír hogy "XD"."
Hú, hogy mennyire szívemből szóltál.
Ez az ikszdézés amúgy különösen rettentő retardált dolog, amikor ott vannak az előredefiniált smiley-k, ha nagyon akarja.Mondjuk felőlem ikszdézhetne többet is, ha legalább tudna magyarul és értelmesen írni+fogalmazni.
(#16657) tothjozsi96:
Igaz, hogy ez JavaScripthez kapcsolódik, de a különböző nyelvek (itt: HTML, CSS, JS) tényleges elválasztásáról szerintem egy nagyon jó link (amit még régen berakattam a JavaScript topic összefoglalójába is, hogy szem előtt legyen):
http://www.slideshare.net/fgalassi/refactoring-to-unobtrusive-javascript
Most nyilván egy PHP-kódot totálisan szétválasztani a generált HTML-kódtól igen nehéz lenne, és a template-ezéssel sincs szétválasztva, csak legalább kezelhetőbbé van téve a kód, nincs totális kutyulódás a kódban, így a logika elválik. A rétegezést nem véletlenül találták ki.(#16659) fordfairlane:
"Jó akkor úgy írom, hogy szétebbenválasztani. A nézetet széttebben szokták választani"
Azért ezek is szép magyar szavak. -
Sk8erPeter
nagyúr
válasz
tothjozsi96 #16619 üzenetére
"Nem szeretem a lekérdezéseket, az az igazság"
Akkor hagyd abba a webfejlesztés tanulását még most.(#16617) tothjozsi96:
EZ MI?(Szerk.: nehogy elkezdd magyarázni, tudom, mi ez a hibakód.)
Persze biztos ennél ocsmányabbul is megoldhattad volna, végül is jó úton jársz a spagettikód felé. Drukkolok, hátha lehet még rosszabb is. -
Sk8erPeter
nagyúr
válasz
tothjozsi96 #16612 üzenetére
Miért nem ellenőrzöd először még beszúrási kísérlet előtt, hogy van-e már ilyen felhasználó?
Szerk.: ja, látom (#16615) PumpkinSeed ugyanezt írja. -
Sk8erPeter
nagyúr
Szerintem meg teljesen felesleges a perjel a végére. Mégpedig azért, mert ha van a végén, akkor az azt az érzetet kelti, hogy annak az oldalnak vannak még további aloldalai is (például nemcsak example.com/about/ van, hanem example.com/about/foo is). Persze ha így van, akkor még oké, de egyébként szebb úgy, hogy egy útvonal be van fejezve. Ez amúgy is az általánosan bevett szokás, nem igazán látni olyan nagyobb site-ot, ahol oda lenne erőltetve még egy perjel is az URL végére, akkor is, ha a felhasználó azt eredetileg nem adta meg.
(#16593) CSorBA:
Dehogyis, rájöttem, hogy inkább nem szívatom magam. Van, amikor és akinek megéri, és van, amikor egyszerűen hatástalan, úgyhogy csak a saját időmet szúrom el vele. (Mondjuk végül is szigorúan véve simán az önzetlen segítségnyújtás amúgy is saját időm elszúrása.)
(#16602) DNReNTi:
Szerintem megérdemelne összefoglalót, de a nyelv alapvető dolgainak összeszedése annyira hosszú lenne, hogy nem hiszem, hogy beleférne egy összefoglalóba, így lehet, hogy inkább valami jó linkgyűjteményt kellene első körben belerakni. Még mielőtt megkérdeznéd, nekem nincs időm ilyesmire, úgyhogy skippelem. -
Sk8erPeter
nagyúr
válasz
honda 1993 #16571 üzenetére
"szugsegem lesz -e meg masra", "megirom az ehez szugseges kodot", "szugseg lehet Mysql-re is, (en pedig azt sem tudom hogy az pontosan mi is lehet)"
Ne szívassál már, először még jóindulatúan azt hittem, csak elgépelés volt a "szugseg" (még leírni is nehézkes ezt a szart, szóval elgépelés kilőve), akkor megpróbálom a fejedbe verni, szóval így a helyes: SZÜKSÉG. K-val, érted?! NEM G-vel!! Az "ehhez" pedig KÉT DARAB H! Hogy akarod megtanulni a PHP nyelvet, ha még a saját anyanyelvedet sem ismered?
Az meg már a szinte kommentálhatatlan kategória, hogy fogalmad sincs, mi az a MySQL. Mégis mi a lóf@szra való a Google?Asszem tényleg abba kéne hagyni a topic követését, mert ez már szánalmas, hogy hol tartunk. De még egy rohadt kérdést sem képesek mostanában megfogalmazni értelmesen az emberek, hogy mégis mi a frászt akarnak tudni. Most már bennem is eltört valami.
-
Sk8erPeter
nagyúr
válasz
PumpkinSeed #16567 üzenetére
Mostanában kb. hasonló szinten tartunk a topicban ezekkel a "kimásoltam Notepad++-ba, és úgy láttam, milyen hosszú a karaktersorozat"-jellegű megnyilvánulásokkal.
-
Sk8erPeter
nagyúr
válasz
Peter Kiss #16565 üzenetére
Jól hangzik.
-
Sk8erPeter
nagyúr
válasz
tothjozsi96 #16561 üzenetére
"Kiírattam a takelogin-ban és nyomtam egy CTRL+A-t, és beraktam egy Notepad++-ba ami kiírja hogy hány chars pontosan."
Atyaég... stringhossz-visszaadó függvényekről hallottál már? -
Sk8erPeter
nagyúr
válasz
tothjozsi96 #16559 üzenetére
Jó, és mivel ellenőrizted, hogy valóban 63 karakter lett?
Mikor lett annyi, adatbázisba való feltöltés után, vagy még az alkalmazás "szintjén"? Az a baj, hogy csomószor harapófogóval kell kiszedni belőled az érdemi, nem mellébeszélő infókat, még sokszor így sem sikerül, és így az embernek csomószor elmegy a kedve a segítéstől.
-
Sk8erPeter
nagyúr
válasz
tothjozsi96 #16556 üzenetére
"Így írtam bele.
echo password_hash($_POST["password"], PASSWORD_DEFAULT);
Alapból így van megadva amúgy:
$password = !empty($_POST["password"]) ? $_POST["password"] : '';
Azt hittem hogy valami baja lesz az empty-vel, de nem ..."
Már kapásból ennek a pár sorodnak sincs értelme.Ellenőrzöd a kulcs meglétét, átadod a tömbben ezalatt található értéket egy változónak, csak azt a változót ($password) nem használod fel a password_hash()-nél... ezért mondom, hogy ember legyen a talpán, aki érti a gondolatmenetedet.
Egyébként meg nyilván ellenőrizni kell egy kulcs/változó meglétét, mielőtt felhasználod, nem tudom, mit kell csodálkozni az Undefined index-szel kapcsolatos Notice-on.
-
Sk8erPeter
nagyúr
válasz
tothjozsi96 #16552 üzenetére
"Nem tudom mi folyik itt."
Igazából ebből a leírásodból ember legyen a talpán, aki megérti, miről beszélsz, hogyan is tesztelted, úgyhogy mi sem tudjuk, mi folyik nálad.==========================
(#16554) mrpiko :
Egy ilyen igénytelenül összeb@szott "álláshirdetésre" ne várd, hogy értelmes ember jelentkezzen. Nem túl jó ómen, ha még egy becsábító üzenet megfogalmazásába sem vagy hajlandó fektetni 30 másodpercnél többet, és még egy vesszőt sem vagy képes használni a tagmondataid elválasztásához. -
Sk8erPeter
nagyúr
válasz
PumpkinSeed #16526 üzenetére
Jól mondod. Ez a kód szerintem az utóbbi idők összes példaként linkelt kódját felülmúlja ocsmányságban.
Megkapja a PHP topic Arany Málna díját.
-
Sk8erPeter
nagyúr
válasz
Peter Kiss #16505 üzenetére
Szerintem mindenki jobban jár, ha leírod a megfelelő megközelítést.
-
Sk8erPeter
nagyúr
válasz
PumpkinSeed #16477 üzenetére
Jó, és a tanácsokat elolvastad, hogy hogyan javítsd ki az útvonalat? Akár relatív útvonalakat használva a webalkalmazáshoz, akár $_SERVER['DOCUMENT_ROOT']-ot felhasználva. Nyilván amíg az elérési utat nem javítod ki, és még egy egyszerű tesztcélú fájlírás sem működik a célkönyvtárba, addig hiába megy az oda-visszaírogatás.
Amúgy meg kéne tanulni az Xdebug használatát, nem pedig kiírogatni, hogy épp milyen a változó értéke, hanem normálisan debuggolni, arra találták ki, hogy egyszerűbb legyen a fejlesztés, és az ember rájöjjön a hibáira.Korábban is javasoltam, a kolléga igen gyorsan rá is jött, hogy kell használni.
Követhetnéd a példáját, és akkor menetközben kapásból látnád, milyen útvonalakra próbál írni, az egyes visszatérési értékeket pedig korrektebb módon ellenőrizhetnéd.
Azt sem ártana tudni, milyen HTML-kód van a frontenden. Pl. a mező neve (name attribútum) valóban egyszerűen "file"? Hogy néz ki akkor a most használt, komplett kódod (miután elvileg javítottad)?(#16483) tothjozsi96 :
Hol olvastad ezt a hülyeséget?Nem árt megnézni, az ember milyen forrásokból tájékozódik, és milyen fórumos kommentárokat vesz komolyan.
(#16478) tothjozsi96:
Akkor már végképp nem értem, most épp milyen kódról beszélsz, mert
ez a kód, amit ide bemásoltál, tele van preg_match-csel és preg_replace-ekkel. -
Sk8erPeter
nagyúr
válasz
PumpkinSeed #16475 üzenetére
Az utóbbi két hibaüzenet alapján elég egyértelmű: a $file_name változód üres. A $target = $target.$file_name; soroddal tehát ez esetben olyan, mintha azt írtad volna, hogy $target = target;, mivel nem fűztél hozzá semmilyen nevet (így marad a könyvtárnév). Így nem csoda, hogy nem tudja mozgatni.
Az első hibaüzenet meg csak annyit mond, hogy nem létezik uploaded_img/people.txt fájlod...
Az igazából nem tudom, hogy jött ide, a lényeg az volt, hogy a célkönyvtárba tudsz-e írni. (file_put_contents() használatát javasoltam) Gondolom valóban nem létezik a people.txt fájl, vagy még mindig rosszul adod meg az elérési útvonalat... Ez esetben nem ártana, ha elmondanád, hogy milyen a könyvtárszerkezet (mi hol van), akkor még meg is tudnánk mondani, mit rontasz el.
-
Sk8erPeter
nagyúr
válasz
disy68 #16473 üzenetére
Igen, a DIRECTORY_SEPARATOR atombiztos megoldás, de mivel Windows-on is nyugodtan lehet használni a forward slash-t (/) az elérési útvonalaknál (attól még, mert Windows esetén a backslash (\) a bevett konvenció), ezért nem biztos, hogy megéri vele szenvedni (pl. ronthatja az olvashatóságot). Tudsz mondani olyan esetet, ahol a forward slash használata elvérezne?
(Windows+IIS alatt én még nem találkoztam ilyen esettel (vagy csak nem emlékszem), de ettől még lehet.)
(#16471) fordfairlane:
Ja igen, az végül lemaradt, köszi a kiegészítést.
Mondjuk azért az esetek nagy részében a feltöltött kép elég közeli viszonyban van a konkrét webalkalmazással, szóval a webalkalmazás rootjához képest relatív útvonal talán az esetek többségében talán egy fokkal használhatóbb.(#16472) PumpkinSeed :
Mi az, hogy "más lehetőséget oda nem tudok elképzelni"?Ezt mire írtad?
"uploaded_img/-el kezdtem"
Az épp futtatott szkripthez képest az uploaded_img könyvtár elérhető volt, jól adtad meg az útvonalat? Oda tudsz bármit is írni? Pl. csak próbából file_put_contents() segítségével tudsz egy akármilyen fájlt létrehozni a célkönyvtárba? -
Sk8erPeter
nagyúr
válasz
disy68 #16469 üzenetére
Mondjuk sokkal jobban is tenné, ha nem ilyen módon adna meg elérési útvonalakat, mint a /var-ral kezdődő, ami igencsak rossz megoldás, akkor már legyen a webalkalmazáshoz képest relatív (és persze az az útvonal legyen helyes is) - pl. ez ilyen módon kb. lehetetlenné teszi egy Windows-os szerverre való átköltöztetést (hacsak ott nincs var könyvtár az adott partíció rootjában (még a forward slash nem lenne probléma az útvonalnál, hiába Windows)).
Szerk.: félre ne értsd, ez nem neked szól, mert Te a lehetséges problémát tártad fel, inkább a kérdezőnek.
-
Sk8erPeter
nagyúr
válasz
DNReNTi #16466 üzenetére
Nézd meg a linken található kódot, ott nem nagyon van olyan rész, amire ez megoldást jelentene...
Amúgy meg korábban azt írta a srác, hogy megoldódott a probléma, mert eleve feltöltésnél átalakítja a szövegeket (amit párszor korábban is javasoltam neki, de akkor valamiért neki nem jött át
), és akkor nem észrevehető a különbség, szóval most nem tudom, miért került elő újból a probléma...
-
Sk8erPeter
nagyúr
válasz
tothjozsi96 #16462 üzenetére
Nem fogsz tudni kitalálni jobb általánosan alkalmazható, bizonyos szabályokat megfogalmazni képes "egyedi kivitelezést". Azért ez nem egy triviális feladat. Maradj csak a könyvtári függvényeknél, vagy max. keress valami komplex library-t... Amúgy a javasolt strtr sem tudom, mitől lenne jelen esetben jobb, mint az str_replace...
Mellesleg a te esetedben pont nem az str_replace a probléma, ami a lassúságot okozza, hanem az iszonyat sok smiley és hozzá tartozó külön-külön reguláris kifejezés, preg_replace-szel annak illeszkedésére való keresgélés és csere...(Magyarul a preg_replace jobban lassít, mint az annál jóval egyszerűbb cserére alkalmas str_replace.)
De ezt már egyszer kifejtettem neked. Ismétlés a tudás anyja. -
Sk8erPeter
nagyúr
válasz
tothjozsi96 #16457 üzenetére
"Lehet valahogy úgy átalakítani szöveget, tehát nem str_replace-el hanem ilyen fgv.-ek nélkül?"
Direkt idéztem a kérdésedet, csak hogy még egyszer lásd - szerinted mi értelme van ennek a kérdésnek? -
Sk8erPeter
nagyúr
válasz
PumpkinSeed #16447 üzenetére
Szerencsére a többiek elég alaposan válaszoltak az érdemi részre.
"Illetve egy függvény, hogy tud több String típust is visszaadni, például egy adatbázisból kiolvasott név és lakcím adatot például?"
Csak a pontosság kedvéért: nincs olyan, hogy "több String típus", string van, és kész, szerintem Te arra gondoltál, hogy mondjuk több string "értéket" szeretnél visszaadni. Tehetsz ilyet összetett típussal, tömbbel vagy objektummal is vissza tudsz térni egy függvényből. Egy függvénynek egy darab visszatérési értéke van.
Szerk.: ja, most látom, disy68 ezt is leírta neked.
Amúgy ilyen, hogy "adatbázisból kiolvasott név és lakcím adat", tipikusan valami objektumhoz kellene, hogy tartozzon ahhoz, hogy ez normálisan kezelhető legyen (ne pedig többdimenziós asszociatív tömbborzalmakat kelljen kezelned), például van egy Person osztályod (most csak a példa kedvéért), és ezt megfelelően példányosítod (példányosítás után lesz belőle objektum). Ha sok személy van, akkor objektumok tömbje is egy jó megoldás lehet (értsd: egy tömbbel térsz vissza, ebben pedig egy vagy több objektum van).(#16451) disy68 :
Szépen összeszedett válasz!
Új hozzászólás Aktív témák
Hirdetés
- SZÉP Lenovo ThinkPad P15 G2 Tervező Laptop -75% 15,6" i9-11950H 64/2TB RTX A4000 8GB UHD OLED
- Szép! Lenovo Thinkpad T14s G2 Üzleti "Golyóálló" Laptop 14" -50% i7-1185G7 4Mag 16GB/512GB FHD IPS
- Eladó Apple MacBook Pro 13" A1706 (Late 2017, Silver - EMC 3163)
- Amazfit GTR 2 Classic okosóra dobozában töltőkábellel
- Mac mini M1 chip 8 magos CPU-val, 8 magos GPU-val
- Bomba ár HP X360 11 G5 - Intel 4020 I 4GB I 128GB SSD I 11,6" HD Touch I Cam I W11 I Garancia!
- Macbook White 13" unibody
- Bomba ár! Dell Inspiron 5405 - Ryzen5 4500U I 8GB I 256SSD I 14" FHD I HDMI I Cam I W11 I Garancia!
- PlayStation Plus Premium 24 hónapos előfizetés , egyenesen a Sony-tól!
- Gyors, Precíz, Megbízható TELEFONSZERVIZ, amire számíthatsz! Akár 1 órán belül
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest