Hirdetés
- Milyen okostelefont vegyek?
- Bemutatkozott a Poco X7 és X7 Pro
- Poco F7 – bajnokesélyes
- Garmin Instinct – küldetés teljesítve
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- Okosóra és okoskiegészítő topik
- Megtartotta Európában a 7500 mAh-t az Oppo
- Fotók, videók mobillal
- Megérkezett a Google Pixel 7 és 7 Pro
- Ford SYNC 3 infotainment rendszer teszt
Új hozzászólás Aktív témák
-
ArchElf
addikt
válasz
Speeedfire
#7266
üzenetére
Nnem kötekedésből, de nálam fut a py a routeren.
AE
-
Alex91
félisten
válasz
Speeedfire
#7253
üzenetére
QuiXplorer, bar tomoritest nem tud...
eXtplorer, ez elvileg tomorit is. (Bar azt hiszem ezt nekem nem sikerult portolnom.) -
cucka
addikt
válasz
Speeedfire
#7260
üzenetére
cucka: Ezen nem tudom mit kell magyarázni. A python megeszi a vasat alólam. A php és a lighttpd meg még nem.

Csak szólok, hogy a python egyik nagy előnye pont a sebessége, a php-nál pl. lényegesen gyorsabb. -
válasz
Speeedfire
#7262
üzenetére
akkor legközelebb majd tudosítsd

-
válasz
Speeedfire
#7260
üzenetére
Routeren futtatod?
-
cucka
addikt
válasz
Speeedfire
#7255
üzenetére
mindent tud csak kell a python hozzá, ami meg megeszi a gépet
Ööö ezt magyarázd már el, hogyan is eszi meg a python a gépet? (És ezzel párhuzamosan a php hogyhogy nem eszi meg?) -
válasz
Speeedfire
#7257
üzenetére
hát akkor kapcsold be. mellesleg ennél jobbat nem fogsz találni.
-
válasz
Speeedfire
#7255
üzenetére
[link] ?
-
ArchElf
addikt
válasz
Speeedfire
#7253
üzenetére
Milyet?
AE
-
rt06
veterán
válasz
Speeedfire
#7250
üzenetére
viszont a tied nem kezeli peldaul a http://hosszu.osszetett.url.teszt.valami.hu/ domain-t
szerk.: alternativ port miert nem kell? nem ritka, hogy a https-hez odatuzik a 443-as portot az url vegere, az ilyeneket kapasbol kiuti a te ellenorzod
-
rt06
veterán
válasz
Speeedfire
#7248
üzenetére
ha jol latom, akkor a tiedhez kepest:
- kezeli a http authentikaciot
- kezeli az url-ben megadott portokat
- kezeli az ekezetes domain neveket
- kezel tetszoleges tld-tpeldaul
https://user:password@ez.egy.kinai.domain.xn--fsqu00a.xn--g6w251d:8080/index.html?x=y#z
vagy
http://בײַשפּיל.טעסט/ (egy egy yiddish domain) -
ArchElf
addikt
válasz
Speeedfire
#7246
üzenetére
http(s)?://(([^/@:]*:)?([^/@:]+)(@))?([^/@.:]*\.)*([^/@.:]*)(:(\d{1,5}))?(/.*)?
hmm?
AE
-
Speeedfire
félisten
válasz
Speeedfire
#7245
üzenetére
Talán ez már minden igényt kielégít.

http(s)?:\/\/(\w|[0-9-])+(\.(\w|[0-9-])+)?(\.[a-z]{2,4}){1,2}
-
L3zl13
nagyúr
válasz
Speeedfire
#7237
üzenetére
A 2-4 karakteres TLD már nem érvényes egy ideje. Gondolom ez az esetek 99.999...%-ában nem okoz gondot (nem hiszem, hogy valaha is jártam volna .travel, .museum vagy hasonló url-en), csak ha esetleg tökéletességre törekednél.
Az ékezetes doménekről meg a nem latin betűs doménekről ne is beszéljünk, mert úgy meg már tényleg kezelhetetlenné válik.
-
Sk8erPeter
nagyúr
válasz
Speeedfire
#7241
üzenetére
Áhá, világos. De akkor most már magyarul minden úgy megy, ahogy szeretted volna eredetileg?
Amúgy tapasztalat alapján a Microsoft-programok a telepítéskor és máskor is csak pont olyanra kérdeznek vissza, amire nem kéne. 
-
Sk8erPeter
nagyúr
válasz
Speeedfire
#7239
üzenetére
Mármint most milyen javítás?
Az msiexec /i ...msi ? -
Sk8erPeter
nagyúr
válasz
Speeedfire
#7236
üzenetére
Win+R, eventvwr ?
Win 7-nél legalábbis általában már részletesebb a hibajelzés, mint pl. XP-nél.Ezt a linket a Web Deployment Agent Service-ről már láttad? >> [link].
Lehet, hogy egyszerű reinstall a megoldás, nem vágom. -
Speeedfire
félisten
válasz
Speeedfire
#7236
üzenetére
Béjna voltam.

/^http(s)?:\/\/[a-z0-9-]+(\.[a-z0-9-]+)?(\.[a-z]{2,4})$/
-
válasz
Speeedfire
#7233
üzenetére
ok, csak a skype alapból ráül a 80 as portra.
-
Sk8erPeter
nagyúr
válasz
Speeedfire
#7233
üzenetére
A deploy-oló szarságnak a portját nem tudod bekonfigolni? Eléggé csodálkoznék rajta.

Egyébként addig is kerülő megoldásnak az is jó lehet szerintem, hogy az IIS ugyanúgy 80-as porton fut, mint defaultból, addig meg leállítod az Apache-ot. Általában úgyis az Apache-ot használod, ahogy értelmezem, és csak néha használnád az IIS-t, próbából. Akkor meg a service-re beállítod, hogy csak manuálisan induljon el.
De meg lehet oldani úgy is, hogy ne vesszenek össze.Vagy harmadik megoldás, hogy IIS alá teszed a PHP-t is.
Még 2009-ben ezt írták itt:
"An upcoming projects involves Microsoft engineers working with PHP engineers to get the next version of PHP (PHP5.3 which is not yet available at this time) to perform much better in IIS. This will no doubt make some progress toward WIMP catching up with LAMP in performance.""és 2-4 karakter között az url, több nem lehet."
Gondolom itt nem URL-t akartál írni, hanem TLD-t...
URL-validálásra csak egy gyors példa (Google):
[link]
function isValidURL($url){
return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url);
}Vagy ez: [link].
Nem teszteltem mondjuk agyon, de itt egyből ki lehet próbálni a működését a reguláris kifejezésnek: [link].
De a legegyszerűbb, php.net-ről: [link]
$uri = 'http://example.com';
$isValid = filter_var($uri, FILTER_VALIDATE_URL); -
válasz
Speeedfire
#7229
üzenetére
Skype?
-
Sk8erPeter
nagyúr
válasz
Speeedfire
#7229
üzenetére
Itt azt írja valaki, idézem: "Check if you have "SQL Server Reporting Services" running, it uses port 80. If you stop it (from the Reporting Services Configuration Manager) you'll be able to run apache."
Egyébként most azt szeretnéd, hogy az Apache a 80-ason, az IIS a 81-esen, igaz? Milyen SQL szervered van fent?Egyébként Windows-on cmd-ből netstat -a -val is tudsz listázni (melyik portok foglaltak).
-
Speeedfire
félisten
válasz
Speeedfire
#7229
üzenetére
Félig jó megoldás. [link]

A 80-as port szabad lesz, viszont így a web deploy agent nem megy. :
-
PazsitZ
addikt
válasz
Speeedfire
#7225
üzenetére
-
rt06
veterán
válasz
Speeedfire
#7225
üzenetére
ne konkretan php-s peldakat keress, jo neked minden, ami pcre (perl compatible regular expression), ugy tobbet talalsz
-
PazsitZ
addikt
válasz
Speeedfire
#7223
üzenetére
A reguláris kifejezésekről könyveket lehet és írtak is, szóval érthető, ha nem túl részletes a php.net-en

-
Peter Kiss
őstag
válasz
Speeedfire
#7221
üzenetére
Van.
/^(ez)|(vagyemez)$/ui
Itt az egész inputra nézi, hogy egyenlő-e valamivel. Mindebből a ()-ek és a | jel használata a lényeg.
-
wolandino
tag
válasz
Speeedfire
#7214
üzenetére
Hasonló, netes nyelvleckékhez kellene
-
atom44
csendes tag
válasz
Speeedfire
#7185
üzenetére
Köszi szépen
közben én is rá jöttem csak vissza kellett nyulni az öskorba
DOS 
Köszi a helpet
-
atom44
csendes tag
válasz
Speeedfire
#7182
üzenetére
Hali ,bocsi de eszembe jutott még1 dolog. :S Egy ilyen esetben amikor be van szurva egy kép pl: <IMG SRC="F:\cuccok\cipök trainer\KANGOL canvas/124.jpg">
ott is meg lehet oldani hogy dinamikusan kezelje a kép helyét? Ha mondjuk az egész mappa át kerül a C:/dokumentumok/asztal bla bla bla helyre akkor már a képek nem jelenek meg mert a pendrive eltávolitásával nem fogják látni a a képek heylét ami az F: meghajton van. Erre is lenne megoldás? köszi a választ elöre is
-
atom44
csendes tag
válasz
Speeedfire
#7182
üzenetére
Uh basszus ,egy nagyon nagy köszönet érte
Köszi szépen ! -
rt06
veterán
válasz
Speeedfire
#7154
üzenetére
DirectoryIndex, amit egy szokozzel elvalasztott felsorolas kovet
-
Peter Kiss
őstag
válasz
Speeedfire
#7115
üzenetére
$filename = $source;
return $filename;Helyett:
return $source;

-
Peter Kiss
őstag
válasz
Speeedfire
#7113
üzenetére
Igen, mert úgy értelmeztem, hogy a kiterjesztés nem számít bele a maximális hosszba.
-
Peter Kiss
őstag
válasz
Speeedfire
#7111
üzenetére
function levag($source, $maxLength = 20) {
$ext = "";
if (($extPos = mb_strrpos($source, '.')) !== false) {
$ext = mb_substr($source, $extPos);
$filename = mb_substr($source, 0, $extPos);
} else {
$filename = $source;
}
$filenameLength = mb_strlen($filename);
if ($filenameLength <= $maxLength) {
return $source;
}
return mb_substr($filename, 0, $maxLength) . "..." . $ext;
}Teszt:
echo levag("qwertzuiopasdfghjklyxcvbnm.bubu", 10);Eredmény:
qwertzuiop....bubu -
DeltaPower
addikt
válasz
Speeedfire
#7106
üzenetére
igen, mivel az első változatban a 7. sorban még
$lekerdez = mysql_query($lekerdez);
szerepelt, ami resource és a 9. sorban induló while ciklus használta
while($row = mysql_fetch_assoc($lekerdez)) {
viszont a 61. sorban a cikluson belül(!) felüldefiniáltad, amit csak különleges esetekben szoktunk csinálni
-
DeltaPower
addikt
válasz
Speeedfire
#7097
üzenetére
61-es sorban felüldefiniálod a $lekerdez-t.
-
Peter Kiss
őstag
válasz
Speeedfire
#7102
üzenetére
Át kell szokni!
Ráadásul jobb lenne OO módon használni. -
Siriusb
veterán
válasz
Speeedfire
#7090
üzenetére
Csak egy kérdés, miért mysql és nem mysqli?
Nem ez utóbbi az ajánlottabb? -
Brown ügynök
senior tag
válasz
Speeedfire
#7095
üzenetére
var_dump()-t akartam én is javasolni. print_r()-rel nem látod a típusát.
-
Coyot
őstag
válasz
Speeedfire
#7095
üzenetére
tuti hogy a ciklusban felülvágod az értékét... mivel 1 hírt kitett a másodikat már nem tudja.
-
Peter Kiss
őstag
válasz
Speeedfire
#7093
üzenetére
var_dump()-pal lesd meg a típusát, szerintem nem mysql_resource lesz (vagy minek is kellene lennie), hanem string (tömb).
-
Peter Kiss
őstag
válasz
Speeedfire
#7090
üzenetére
$lekerdez = mysql_query($lekerdez);
Ha itt egy tök új változóba rakod be az eredményt, akkor mi történik?
-
Coyot
őstag
válasz
Speeedfire
#7090
üzenetére
nem vágtad felül a $lekerdez változó értékét?
mod.: sorry elírtam a változónevet

-
Tele von Zsinór
őstag
válasz
Speeedfire
#7083
üzenetére
Adatbázisban tábla.
-
Peter Kiss
őstag
válasz
Speeedfire
#7081
üzenetére
Buffertábla arra is kell, hogy ne legyen nagy gáz abból, ha megszakadna a művelet, lehessen folytatni.

-
Peter Kiss
őstag
válasz
Speeedfire
#7079
üzenetére
Az általam elmesélt rendszerben mentve vannak a levelek. A buffertábla azért kellett nekem, hogy 1 levelet 1 ember nehogy 2-szer kapjon meg, mivel az emberek különböző csoportokba iratkoznak fel, levelet küldeni pedig csoportoknak lehet.
-
Siriusb
veterán
válasz
Speeedfire
#7076
üzenetére
Nekem a phpList bevált.
(#7075) kukinyo
Ha a böngészőben a forrást megnézed (akár firebuggal), milyen class van az aktív menünél? -
Peter Kiss
őstag
válasz
Speeedfire
#7076
üzenetére
Kiküldéshez készítesz egy buffertáblát. Mikor megvan írva a levél, rányomnak a kiküldésre, akkor ebbe belekerül minden szükséges adat (e-mail cím és a hírlevél ID-je mindenképp), majd elkezdi a rendszer kiküldeni. Lehet cron-nal, de én pl. AJAX-ot használtam automata újrahívással. Rányomnak a küldésre --> táblát felépíteni --> kiszedi pl. az első 50-et (törli is a táblából) --> elküldi --> visszahív a szerveroldalra az újabb 50-es adatért. A kérések között eltelik mindig egy kis idő. Ha ezt a módszert választod, akkor a buffertáblába be kell rakni, hogy ki intézi az aktuális kiküldést, így el lehet kerülni azt, hogy ha egyszerre 2 küldés van folyamatban, hogy összeakadjanak.
-
modder
aktív tag
válasz
Speeedfire
#6942
üzenetére
Helló,
Nem mindegy, hogy milyen fordítású apache van fönt. Amennyit én tudok, a prefork verzió childprocesseket hoz létre, amíg a worker verzió szálakat.
Olvasd el ezt: http://httpd.apache.org/docs/2.0/mpm.html
Ha prefork verzió van fönt, a MaxSpareThreads nem játszik.Itt van a prefork által elfogadott paraméterek: http://httpd.apache.org/docs/2.0/mod/prefork.html
Nem tudom milyen megfontolásból tetted a routerre, ha otthon baszkódsz vele és kíváncsiságból, akkor nem gond, de azért vállalati környezetben ne csinálj ilyet

Még eljátszogathatsz az apache process nice érékével is, hogy ha hálózati forgalom szempontjából a router keményen igénybe van véve, az oldallekérdezések ne fogják vissza, de az is lehet, hogy erre nincsen szükség.
Nem vagyok egy nagy apache guru, de megpróbálkozhatsz olyannal is, hogy ne töltsön be modulokat, amik nem kellenek, pl. ssl.
-
Alukard
senior tag
válasz
Speeedfire
#6846
üzenetére
Amióta elkezdtem php-vel játszani, azóta több kisebb-nagyobb projektel foglalkozom/foglalkoztam. Most momentán 6 VH-van beállítva, ebből 4 egy projihoz tartozik.
Azért van szükség a 4 VH-ra mert több domainen fut majd a proji különböző könyvtárakból és az egyes elemeket -mondjuk a frontendet és a backendet- szeretném annyira elválasztani egymástól amennyire csak lehet.
De tovább megyek, fősulin azzal úsztam meg a vizsgát, hogy megmutattam a tanárnak, hogy VirtualBox kliensként futó linux szerverről hogy lehet elérni a Windowsos VirtualBox host-on a linuxos apache VH-kat.
-
fordfairlane
veterán
válasz
Speeedfire
#6846
üzenetére
Még nálam lokálban is virtualhostok vannak az Apacheban.

-
Sk8erPeter
nagyúr
válasz
Speeedfire
#6844
üzenetére
Ez mondjuk nem igaz, mert VirtualHosttal Apache-ban oda irányítod a webszerver könyvtárát, ahova csak akarod. Pl. lehet, hogy az egyik projekted a http://localhost:4133123 címen elérhető, és a könyvtára - Windows alatt - a D:\ezazegyikprojekt\nos\ helyen található a vinyón, a másik meg http://blabla.local.akarmi.ize címen érhető el, és a könyvtára az F:\tokmindegy\blabla\ helyen van.

-
Tele von Zsinór
őstag
válasz
Speeedfire
#6822
üzenetére
Próbáld meg a parancsikonban a working directoryt átírni, régebben ez segített, most meg nem tudom tesztelni.
-
Tele von Zsinór
őstag
válasz
Speeedfire
#6815
üzenetére
Mire gondolsz? 7.0-át használok, a projekt mappa pedig egy nbprojekt n. mappa az adott meló helyén.
-
Sk8erPeter
nagyúr
válasz
Speeedfire
#6563
üzenetére
Abban az esetben nem is kell, ha
1.) a formok feldolgozását ugyanott végzed, ahol maga a form kiíratása van (tehát nem külön fájlban, így a POST adatokat egyből közvetlenül fel is tudod használni a formmezők kitöltésére - de ez szerintem gány megoldás),
2.) ha átmeneti adatbázis-bejegyzést hozol létre a felhasználó által megadott adatokkal, amit csak akkor hagysz meg, ha a felhasználó véglegesíti az adatokat (korlátozott lehet az adatbázisban elérhető kapcsolatok száma)
3.) vagy akkor, ha egyszerűen nem foglalkozol vele, hogy a felhasználónak ki kell-e töltenie újból az űrlap egyes mezőit, vagy sem
4.) ha bejelentkeztető űrlapról van szó, ahol pl. csak felhasználónév-jelszó párost kell kitölteni, itt nyilván az esetek többségében nem kell megjegyeztetni semmit
5.) biztos van olyan eset, ami most nem jut eszembe.
DE érdemes bevetni a session képességeit ilyen esetekre is, igazából mi másra lenne használható, mint adatok átmeneti tárolására, akár egy egész session erejéig, vagy csak rövidebb időtartamra.
Nyilván formadatokat is csak addig tároljunk session-változókban, amíg nagyon szükséges. -
Sk8erPeter
nagyúr
válasz
Speeedfire
#6559
üzenetére
"Nem szokták"
Kik nem szokták?
Nyilván van, aki átmeneti adatbázis-bejegyzést hoz létre ilyenkor, de én nem pazarlom ilyenekre az adatbázis korlátozott erőforrásait, épp ezért is használom legtöbbször a sessiont ilyen célra (is). Persze csak addig tárolom, ameddig nagyon szükséges - leginkább hiba esetén. A form adatait mindig külön feldolgozó fájlban dolgozom fel, és amennyiben ezt nem AJAX-szal oldom meg (azért úgy a szép, de működjön annál is, akinél ki van kapcsolva a JavaScript), akkor ha nincs hiba, eltárolom az adatokat adatbázisban, ha mégis hiba történt, a form adatait elmentem session-változókba, hogy a felhasználónak ne kelljen újra begépelnie az adatokat (szerintem ez elég fontos, engem is halálra idegesít, ha nem így oldják meg), majd visszairányítom a júzert az eredeti oldalra (ahonnan a formot elküldték), és ott a form megfelelő mezőibe kiíratom a session-változókban tárolt korábbi űrlapadatokat, majd ezután rögtön meg is szüntetem ezek tárolását (a formon már úgyis látszik, majd a felhasználó elküldi újból ugyanezeket az adatokat, ha nagyon akarja).
Érdemes ezeket az adatokat egy többdimenziós megoldással tárolni, hogy könnyű legyen őket megszüntetni is, valahogy így (egyszerű példa):
$_SESSION['form_data'] = array();
$_SESSION['form_data']['user_name'] = $_POST['user_name'];
$_SESSION['form_data']['user_address'] = $_POST['user_address'];
// ....
Ha meg akarod szüntetni az eltárolt formadatokat, elég ennyit csinálni:
unset($_SESSION['form_data']); -
biker
nagyúr
válasz
Speeedfire
#6555
üzenetére

Latod, megoldottam igy is -
Sk8erPeter
nagyúr
válasz
Speeedfire
#6553
üzenetére
Hát ha nem dob warningot vagy fatal errort, akkor lennie kéne ilyen függvényednek, aminek lehet, hogy referenciaként van átadva a tömb.
-
biker
nagyúr
válasz
Speeedfire
#6540
üzenetére
elkezdtem próbálgatni, nem működik

shuffle_assoc nem működik nálam(??) shuffle() van
ez javítva, mondhatni ok, de ezek után a $tags-re és másra sem adja már vissza az összekevert, leszámolt tömbből a NEVET
azt tudom kinyerni hogy melyik kulcs hányszor szerepel, de a nevét rohadtul semmilyen verzióban nem adja vissza.ezen még küzdenem kell, úgy látom
-
Sk8erPeter
nagyúr
válasz
Speeedfire
#6542
üzenetére
Én a VirtualHostot így csináltam a httpd.conf fájlban:
NameVirtualHost 127.0.0.1
ServerName localhost
## Próbálgatásokhoz
<VirtualHost 127.0.0.1>
ServerName proba.local
DocumentRoot "d:/Honlap/www/proba"
<Directory "d:/Honlap/www/proba">
Options All
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>itt ebben a példában a http://proba.local címen elérem a "d:/Honlap/www/proba" elérési úton található könyvtárat, amennyiben beteszek egy ilyen megjegyzést a hosts fájlba (Windows alatt: C:\Windows\System32\drivers\etc\hosts):
#Próbákhoz
127.0.0.1 proba.localÍrd át a neked megfelelő elérési utakra és nevekre, ha gondolod, szerintem érdemes.

"Hogy érted azt, hogy nem célszerű kiírni?"
A felhasználóknak semmi köze az adatbázissal kapcsolatos pontos hibaüzenetekhez, azt inkább csak a fejlesztőnek kell tudnia.
Úgy lenne érdemes, hogy még a kiíratások előtt vizsgálgatod, hogy elérhető-e az adatbázis, meg annak megfelelő lekért sorai, és amennyiben valami gond lenne, akkor egy ennek megfelelő hibaoldalra irányítod át a júzert, vagy átirányítás helyett simán csak a fő tartalomrészbe kiíratsz egy felhasználóbarát hibaüzenetet, mint pl. "Sajnos para van az adatbázissal, gyere vissza később, csá".
A hibaüzeneteket meg naplózod és/vagy elküldöd magadnak e-mailben, hogy tudj róla, de a felhasználó lehetőleg ne lássa, mi is történik a háttérben (pl. melyik tábla nem elérhető, miért, stb.). Ez is egyfajta biztonsági rés lehet, de ami lényegesebb szempont, hogy nem túl szép, ha a felhasználó az arcába kap egy warningot, fatal errort vagy hasonlót. 
-
Sk8erPeter
nagyúr
válasz
Speeedfire
#6540
üzenetére
"Kellene még egy másik tábla, ahol el lenne tárolva ez mind"
Ezt hogy érted?
Engem is érdekel a gyorsítás, de ezt most nem értem, mire gondolsz.
Szerk.: jé, közben pont írtál nekem, mindjárt elolvasom.

-
biker
nagyúr
válasz
Speeedfire
#6540
üzenetére
köszi, hétvégén összehozok valamit
-
Sk8erPeter
nagyúr
válasz
Speeedfire
#6496
üzenetére
Miért nem használod fel a $_GET['phpoldal'] változót?
Úgy értem, akkor minek adod át ennek a query stringnek a címet?http://localhost/!!!szapar.hu/
Ehelyett meg létrehozhatnál egy bejegyzést a hosts fájlban, meg apache-beállításokban egy VirtualHost-ot, és lehetne a címe http://szapar.local
Így azé' szebb, meg nem kell annyit pötyögni a cím beírásához. 
$valogatas = "select * from szapar_alias where eng = '".$uri."' ";
Itt azért az $uri változót nem ártana escape-elni, az SQL Injection elkerülése érdekében!$i= 0;
foreach ($valogat as $ertek) {
if ($i != 0) {
parse_str($ertek);
}
$i++;
}
Ezt nem is értem, minek csinálod, ha utána egyáltalán sehol nem használod fel az $ertek változót?
Vagy felhasználod, csak valami include-olt fájlban? Vagy csak benne maradt?
if (!mysql_query($valogatas,$con)) {
die('Hiba: ' . mysql_error());
}
Itt a die() helyett érdemesebb lenne inkább valami felhasználóbarátabb hibaüzenetet, hogy nem elérhető az adatbázis, látogasson vissza később. Ráadásul a felhasználónak semmi köze a konkrét hibaüzenethez. Nem célszerű kiírni! Főleg, hogy nem is túl szép.
Az ilyen jellegű hibákat amúgy nagyon faszán le lehet kezelni kivételkezeléssel, ha valami kritikus jellegű hibád van, azonnal dobsz egy kivételt, hogy ne is futkorásszon tovább a kód, nem is kell bonyolult és ronda if-else blokkokat csinálni, egyszerűen valahol elkapod a kivételt, megfelelő módon kezeled, és kész.Saját kivételtípusokat is definiálhatsz, ha származtatsz az Exception osztályból, azt is érdemes, hogy el tudd dobálni, és tudd, hogy egész pontosan milyen kivételt kell kezelned, így akár végtelen mennyiségű kivételt is elkaphatsz.
Példa:class Kiskutya extends Exception {
//nem is feltétlenül kell, hogy bármi más legyen benne
}
/// ... valahol a kódban
try{
// ...
$hiba = true;
if($hiba){
throw new Kiskutya('elég nagy gáz van, kiskutyákat dobálok! :D');
}
///...
$legyen_meg_kivetel = true;
if($legyen_meg_kivetel){
throw new Exception('ha az előbb nem dobáltam volna kivételt, akkor még idáig is eljutna, de ezt a kivételt is elkapnám a catch-ben! Bruhahahahh.');
}
} catch (Kiskutya $e) {
echo 'Kiskutya kivétel elkapva! Konkrét hibaüzenet: '.$e->getMessage();
} catch (Exception $e) { // fontos a sorrend! Az ősosztály (Exception) később legyen, mint a származtatott!
echo 'Általános jellegű hiba: '. $e->getMessage();
}if (!empty($valogat['url']) and isset($valogat['url']))
Ennek a feltételvizsgálatnak így nem sok értelme van, itt elég lenne a !empty() részt vizsgálni, nyilván ha nem üres a változó (nem is NULL, nem is üres string, stb.), akkor be van állítva, tehát a második feltétel már felesleges. Sőt, itt előbb célszerű lenne inkább megvizsgálni, hogy van-e kapott eredményhalmaz, vagy sem, ha már úgyis lekérdezed a kapott sorok számát a mysql_num_rows() függvénnyel.Na, a többi részéhez most nem volt türelmem.

(#6494) Speeedfire:
"Amelyik táblában az url-ek vannak cachelve van."
Hogyan bírod rá így külön az adatbázist, hogy cache-elje? Tudtommal default cache-eli, indexeléssel lehet esetleg segíteni a lekérdezés gyorsaságát. -
pumatom
aktív tag
válasz
Speeedfire
#6494
üzenetére
Szia!
Ez a kódom;
<?php
$imglist='';
$img_folder = "images_hu/";mt_srand((double)microtime()*1000);
$imgs = dir($img_folder);
while ($file = $imgs->read()) {
if (eregi("gif", $file) || eregi("jpg", $file) || eregi("png", $file))
$imglist .= "$file ";} closedir($imgs->handle);
$imglist = explode(" ", $imglist);
$no = sizeof($imglist)-2;
$random = mt_rand(0, $no);
$image = $imglist[$random];echo '<div align="center"><a href="' . $_SERVER['PHP_SELF'] . '"><img src="' . $img_folder . $image . '" border=3 </a></div>';
?>
Próbálgattam amit mondtál, de hibát adott, hova kellene beilleszteni a header() -t?

-
RedSign
tag
válasz
Speeedfire
#6498
üzenetére
Persze, természetesen... :-) ...majd a napokban foglalkozom vele, aztán ha lesz eredmény megírom... :-D
-
RedSign
tag
válasz
Speeedfire
#6496
üzenetére
Szia!
Köszönöm szépen a példát, egy alapnak nagyon jó lesz...

RedSign
-
RedSign
tag
válasz
Speeedfire
#6494
üzenetére
Sziasztok!
Még nem sikerült kipróbálnom a htaccess rewriterule-s megoldást, de a jelenlegi projektemnél nekem is hasznos lehet.

Speeedfire - Egy példával leírnád, hogy hogyan is működik nálad (link is jó, ha meg van honnan vetted)?

Üdv,
RedSign -
Tele von Zsinór
őstag
válasz
Speeedfire
#6489
üzenetére
Egy framework nyilván lassú a teljesen általad írt kódhoz képest, de a kettő méretét nem is lehet összemérni - és manapság a fejlesztői órabér sokkal drágább, mint a processzoridő, ezért a fejlesztés gyorsaságán van a hangsúly. Ezekben segítenek nagyon a keretrendszerek.
A symfony összes teljesítményről szóló howtoja úgy kezdődik, hogy tegyél fel valami bináris cachet, mint az APC, ami ráadásul elég php-közeli is, és egyszerű telepíteni. Többszörösére ugrik vele a teljesítmény, mert így nem kell minden egyes kéréskor külön lefordítani a php fileokat.
Nyakatekert, hát... az egyik első php5.3-as framework, érthető módon különbözik az eddig megszokott módszerektől. Fejlesztői levlistán követtem, ahogy alakul, illetve a dokumentációjával is ismerkedek egy ideje - tanulni, szokni kell, de aztán remek lesz.
-
Sk8erPeter
nagyúr
válasz
Speeedfire
#6487
üzenetére
És mire hivatkozva akarnak lebeszélni róla? Én mint teljesen pártatlan kérdezem, még nem próbáltam.

================================
(#6483) abteam2008 : legközelebb használd a "Programkód" gombot a bemásolt kódod kijelölése után, mert így nagyon nehéz áttekinteni, én legalábbis ha ilyen kódot látok, többnyire meg sem próbálom megérteni, mert annyira zavaró, hogy mindenféle formázás, indentálás nélkül van csak bemásolva. Szerintem ezzel itt a legtöbben így vannak.

-
Brown ügynök
senior tag
válasz
Speeedfire
#6485
üzenetére
Hát ekkor még nagyon korai fázisban volt a Symfony 2. Ma már azért jóval kidolgozottabb, szinte kész van. És éppen ezért nincs még rendes tutorial nem hogy magyarul de angolul sem.
Egy jó kiindulópont lesz a Jobeet projekt átültetése Symfony 2-be: [link]. Még csak az első három nap érhető el és az sem működik tökéletesen.
Az utolsó parancsnál doctrine:data:load nekem hibát ír ki:
Fatal error: Cannot redeclare class Job\JobeetBundle\Entity\Category in E:\easyp
hp\www\symfony\src\Job\JobeetBundle\Entity\ORM\Category.php on line .
Jó hír, hogy szinte naponta frissítik tehát előbb-utóbb működni is fog.
Illetve készül a knp labs berkein belül egy tutorial, érdemes figyelni az oldalt: [link]
Néhány szolgáltatást összefoglaltak az egyik fórumban: [link]
Symfony 2 csomagok: [link]
Symfony 2 API : [link]
Symfony 2 összetevők: [link]
-
Speeedfire
félisten
válasz
Speeedfire
#6470
üzenetére
Látom mindenki maga fejleszti ezeket.

Közben vagy opencart vagy prestashop lesz az alapja az egésznek.
-
Tele von Zsinór
őstag
válasz
Speeedfire
#6437
üzenetére
engedélyezni kell az apachban, vagy abban amiben használod
a .htaccess fileok csak apache szerverrel működnek, a többiben teljesen máshogy működik a konfiguráció
-
Frigo
őstag
válasz
Speeedfire
#6432
üzenetére
Ehh sajnos az újabb változatokból már kivették .

DE vissza lehet varázsolni!!!Egyszerűen tegyél fel egy régebbi (pl 6.7-es) NetBeans-t és az UML könyvtárat másold be a 6.8-as alá.
-
Speeedfire
félisten
válasz
Speeedfire
#6430
üzenetére
Az argouml-t ajánlották ez elvileg már kezeli a kódgenerálást is. Meglesem.


Frigo: Észre sem vettem, hogy írtál.
Az mégjobb, mert netbeans-t használok én is.
Kell ezt valahol aktiválni vagy valami csinálni vele? -
Frigo
őstag
válasz
Speeedfire
#6430
üzenetére
NetBeans-hez van és a legtöbb modern IDE rendelkezik UML támogatással.
-
Tele von Zsinór
őstag
válasz
Speeedfire
#6424
üzenetére
Keveri a két dolgot: az interfacekben minden függvény absztrakt, de nem kell (szabad) kiírni. Sima osztályokban is lehet absztrakt függvény (ilyenkor azokat példányosítani sem lehet), ekkor ki kell írni.
Miért akarod kétszer (mindkét konstruktorban) beállítani? Felesleges.
A négyzeted használható téglalapként is. Itt nem olyan szigorú a típusvizsgálat, mint mondjuk c++ban, hisz az egy erősen, ez meg egy gyengén típusos nyelv. Annyi a lényeg, hogy a változó mögötti objektumnak legyen olyan függvénye, amit hívni akarsz, semmi egyéb.
-
DeltaPower
addikt
válasz
Speeedfire
#6421
üzenetére
bocs, előbb rosszul értelmeztem a hibaüzenetet. nem kell bele az "abstract"
-
Tele von Zsinór
őstag
válasz
Speeedfire
#6421
üzenetére
Vedd ki az abstract kulcsszót, felesleges, sőt: tilos. Úgyis mindegyik függvénye absztrakt, akkor minek kéne kiírni?
Korábbihoz: ez a függvényed hibás:
public function __construct() {
$this->szelesseg = $szelesseg;
$this->magassag = $magassag;
}Itt jön a notice, hogy nincs szélesség meg magasság változód - és jogos a panasz, mert nincs.
-
DeltaPower
addikt
válasz
Speeedfire
#6419
üzenetére
ha jól értem, akkor kell a public/private/stb az interface-ben levő függvényeknek is
-
Frigo
őstag
válasz
Speeedfire
#6416
üzenetére
Üres a konstruktorod paraméterei a téglalapnál.
-
shaggy
aktív tag
válasz
Speeedfire
#6414
üzenetére
de-de mert ez a macromedia mx ez a címe és ebben egy kis php van és az a 4-es de ezt már végig olvasom és utánna jön a php5 24 óra latt
-
Tele von Zsinór
őstag
válasz
Speeedfire
#6404
üzenetére
Pontosan: ha exceptiont dobsz destruktorban, az fatal error.
-
Brown ügynök
senior tag
válasz
Speeedfire
#6405
üzenetére
Így van.
protected: Csak a tartalmazó osztály és alosztály számára hozzáférhető.
private: Csak a tartalmazó osztály számára hozzáférhető. -
Tele von Zsinór
őstag
válasz
Speeedfire
#6402
üzenetére
Ha nem kézzel semmisíted meg az objektumot, akkor erre azután kerül sor, hogy a szerver elküldte a választ a böngésződnek, és záródott a kapcsolat - szóval ne számíts arra, hogy a destruktorba bármit írva látni is fogod. Mégvalami, amit érdemes észben tartani: Attempting to throw an exception from a destructor (called in the time of script termination) causes a fatal error.
-
Speeedfire
félisten
válasz
Speeedfire
#6401
üzenetére
Meglett a hiba, nem a kódban volt a gond hanem az update résznél a foreach ciklusban.
Szintaktikailag a mysqlnek nem felelt meg, csak erről nem dobott nekem hibát.
Helyesen a foreach:foreach($this->_modositottTulajdonsagok as $tul) {
$utasitasBeallitas[] = $tul .' = \'' . $this->_tulajdonsagok[$tul]. '\'';
} -
Sk8erPeter
nagyúr
válasz
Speeedfire
#6394
üzenetére
"van-e az adott néven ilyen függvény, ha van akkor meghívja ha nincs akkor elkészíti"
Nem készít el semmilyen függvényt.
Függvényt legfeljebb meghív. [call_user_func()]"Nem lenne célszerűbb már a __get() résznél megvizsgálni a dolgokat? dátum, név stb? Mert így feleslegesen dolgozik utána még a __set() is."
Másra való a kettő! A getter függvényekkel lekérdezel bizonyos attribútumokat, változóértékeket, a setter függvényekkel pedig beállítod azok értékét.Ha be akarnám állítani vagy épp le akarnám kérdezni a "pityipalko" változó értékét, akkor arra nyilván kivételt dobna, mert nincs ilyen (ha beállítottad volna a konstruktorban, akkor lenne ilyen! példa:
$this->_tulajdonsagok['pityipalko'] = null;).
De a $_tulajdonsagok tömbben létezik 'nev' és 'szuletesidatum' index is, így azokhoz tartozik egy érték, azok beállíthatók, lekérdezhetők.Amikor ezt írod:
$obj->szuletesidatum = '1985-08-27';
Akkor tulajdonképpen a "mágikus" __set függvény hívódik meg, a __set $tulajdonsagnev paramétere megkapja a 'szuletesidatum' sztringet, az $ertek pedig az '1985-08-27' értéket.Ezután az array_key_exists() függvénnyel megvizsgáljuk, hogy a $_tulajdonsagok tömbben beállítottunk-e egyáltalán 'szuletesidatum' index-szel bármit (ami a konstruktorban egyébként null értéket kapott [lásd $this->_tulajdonsagok['szuletesidatum'] = null;], de ezzel már létrejött ezen az indexen egy érték), ha nem, kivétel, ha igen, megyünk tovább.
Ezután megvizsgálja, létezik-e az osztály adott példányában ($this) $tulajdonsagnev . 'Beallitas' nevű függvény - tehát esetünkben szuletesidatumBeallitas nevű függvény (mivel konkatenálja a $tulajdonsagnev változó értékét a 'Beallitas' sztringgel, majd megvizsgálja, van-e ilyen metódus ( method_exists() függvény).
Ha létezik ilyen metódus, akkor meghívja azt, különben pedig csak simán beállítja a $tulajdonsagnev nevű indexen található értéket a $_tulajdonsagok tömbből.Remélem valamennyire érthetően mondtam el.

-
Tele von Zsinór
őstag
válasz
Speeedfire
#6392
üzenetére
Valószínűleg saját fordítás, mert készítik egy ideje a php6-ot. Ott is van a neve végén, hogy dev verzió.
Korábbira: az általad adott kódban pont van egy xyBeallitas példa.
-
Brown ügynök
senior tag
válasz
Speeedfire
#6388
üzenetére
Nincs még PHP 6. A hivatalos oldal szerint a következő verzió az 5.3.6. lesz.
-
Tele von Zsinór
őstag
válasz
Speeedfire
#6379
üzenetére
A példaprogram lényegi része:
definiál egy tulajdonságok belső változót, benne létrehozva a helyet az érvényes tulajdonságoknak
definiál egy függvényt szuletesidatumBeallitas néven, ami az adott tulajdonság beállításával foglalkozik
definiál egy mágikus __set függvényt, ami akkor hívódik meg, mikor egy nem létező tulajdonságot próbálsz beállítani. Működése:
- ha a $_tulajdonsagok tagban nincs olyan kulcs, akkor hiba
- ha létezik "tulajdonságnévBeallitas" függvény, akkor meghívja
- amúgy beállítja az adott tulajdonságotAmit megmutat: hogy lehet általános magic settert írni úgy, hogy ha egy-egy esetben mégis spec. működés kell, megoldja. A getterben ott a párja, ami "tulajdonságnévLekerdezes" nevű függvényt keres.
-
Sk8erPeter
nagyúr
válasz
Speeedfire
#6341
üzenetére
Szerintem speciel az "1985. 08. 27." pont nem egy érvényes dátum, amit megeszik az strtotime függvény.
"1985 08 27" - ez sztem megint nem érvényes dátumformátum, így jogosan dobja a kivételt.
Mellesleg így elsőre nekem úgy tűnik, hogy a könyv az OOP-s részt kezdőknek feleslegesen elbonyolítja, mert így csak nézel, hogy mi a bré van...
Én annak idején C++-ból értettem meg elég jól az OOP-t, elsőre ilyen magic függvényekkel "varázsolni" fura lett volna, tuti nem vágtam volna elsőre, mi a pálya. Így utólag belátom, hogy ezek könnyíthetik a melót, de elsőre érdemes sztem a hagyományos módszerekkel tisztában lenni, hogy értsd, de ez mondjuk csak egyéni vélemény.
Ezért fura a könyv felépítése. -
PazsitZ
addikt
válasz
Speeedfire
#6347
üzenetére
[link]
Első paraméter: array($this, $tulajdonosnev . 'Beallitas') - function név
többi paraméter(opcionális): $ertek - paraméter(ek)
Ha osztály function nevére kell hivatkoznod, mint string, azt így teheted: array(classnév,functionnév)
tehát az aktuális osztály($this), $tulajdonosnev.'Beallitas' sztringösszefűzés adta functiont hívod meg.A __set(), __get() magic methodok a nem definiált tagváltozókat fogadják és szimulálják za általad implementált módon, ilyen formában nincs köze a call_user_func() fgv.-hez.
-
jeges
senior tag
válasz
Speeedfire
#6350
üzenetére
nem biztos, hogy jól értelek, de a függvények szempontjából nem is értelmezhető. a call_user_func() egy felhasználó által definiált függvényt/eljárást hív meg, a meghívott függvény/eljárás paramétereivel. mivel jelen esetben objektum eljárásáról van szó, az eljárás paramétere lehet mindkét string. ha jól gondolom, az egész példa arra jó, hogy bemutassa, hogy lehet előre nem definiált tulajdonságú osztályokat kezelni.
-
jeges
senior tag
válasz
Speeedfire
#6347
üzenetére
ezt így "látatlanba' " nem könnyű megmondani.
az első valamely class egy példányának (ő lenne a $this) a "$tulajdonosnev" metódusát hívja meg a "Beallítas" paraméterrel. Feltételezem, hogy a tulajdonosnév eljárás machinálására szolgál, és az adott paraméterrel a tulajdonosnév beállítása történik meg. A második hasonló. (nincs elírva az első soron a tulajdonos? inkább tulajdonság lehet, nem?)joker: #6325-ben a válasz
-
j0k3r!
őstag
válasz
Speeedfire
#6339
üzenetére
melyik konyv ez?
-
jeges
senior tag
válasz
Speeedfire
#6345
üzenetére
a php számára ez nem dátum, hanem egy "sima" string. bizonyos formátumokat felismer, másokat Neked kell megmutatni a programnak. php manual-ban le van írva, bár nem a legvilágosabb része a dokumentációnak. a yyyy-mm-dd formátum jó szokott lenni.
-
jeges
senior tag
válasz
Speeedfire
#6343
üzenetére
próbáld meg a dátumot így: 1985-06-27
és írd vissza false-ra, mer' az strtotime() == false a hibás

(azaz szerintem nem volt jó true-val, csak nem dobott hibát - ez a kettő jelen esetben nem ugyanaz) -
jeges
senior tag
válasz
Speeedfire
#6341
üzenetére
szerintem próbáld külön a köszöntésig egy ciklusba (megjegyzem, logikailag nekem egyébként is az tűnik egy teljes ciklusnak), meg a végét (ami hibás) egy másik try-catch-be
szerk: így valahogy:
$obj = new TulajdonsagObjektum();
$obj->nev = "Szabi";try {
$obj->szuletesidatum = '1985. 08. 27.';
}
catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
} if (!isset($e)) {$obj->koszontes();}try {
$obj->szuletesidatum = 'piros';
$obj->koszontes();
}
catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
} if (!isset($e)) {$obj->koszontes();} -
jeges
senior tag
válasz
Speeedfire
#6339
üzenetére
uncaught exception -> nincs try/catch, ami elkapja
szerk: nézd meg itt
-
Sk8erPeter
nagyúr
válasz
Speeedfire
#6327
üzenetére
Ha sok HTML-kód kerül az outputra, nem is árt, ha az aposztrófos megoldást választod.
(Jó fárasztó és csúnya escape-elni a sok idézőjelet az attribútumoknál.)(#6329) Siriusb: állítólag az aposztrófos megoldás a kiértékelés szükségességének hiánya miatt (de jól hangzott) gyorsabb lehet, mások szerint urban legend.
Személy szerint jobban szeretem inkább összefűzögetni, és aposztrófot használni, részben a fenti okok miatt (pl. esetleges sebességkülönbség plusz HTML-kód kiíratása), részben meg amiatt, hogy így szerintem sokkal jobban elkülöníthető a kód, ha böngészgetem a kódot - még ha a fejlesztőkörnyezet ki is emeli az idézőjelben elhelyezett kiértékelendő változót, akkor is sokkal inkább egybefolyik a többi kóddal. Ráadásul tömbindexelésnél vagy egyéb esetben is szintaktikai hiba lehet belőle, az összefűzögetésnél könnyebb elkerülni (számomra).Többiektől kérdezném, ha már erről van szó:
echo-zásnál mennyire használjátok azt a változatot, hogy vesszővel elválasztva íratjátok ki a különböző változókat, sztringeket, és nem konkatenálva?
Eszerint itt is lehet sebességbeli különbség, mégpedig a vesszővel elválasztott módszer javára.
Lehet, hogy értelmesebb, mint az állítólag lassúnak számító sztring-összefűzögetés, és érdemes lenne esetleg erre a módszerre átszokni.
Új hozzászólás Aktív témák
- CASIO órák kedvelők topicja!
- Miskolc és környéke adok-veszek-beszélgetek
- Annyira azért nem egyedi tervezésűek a Steam Machine fő komponensei
- Mibe tegyem a megtakarításaimat?
- Assetto Corsa Rally
- Garancia kérdés, fogyasztóvédelem
- Kormányok / autós szimulátorok topikja
- Kerékpárosok, bringások ide!
- Projektor topic
- Azonnali informatikai kérdések órája
- További aktív témák...
- Gamer PC - Ryzen 7 5700X / RX 9060 XT 16GB / B550 WIFI / 32GB RAM 3600Mhz / 1TB M.2 SSD / 650W GOLD
- Canon EOS M50 Mark II kit obival, 2db eredeti aksival, 1000 expoval, gyári dobozában, táskával.
- Hibátlan, 32" (81 cm) méretű Panasonic Viera LCD tv eladó
- ASRock H61M-GE LGA 1155 alaplap
- Eladó Komplett gép
- GYÖNYÖRŰ iPhone 13 128GB Starlight- 1 ÉV GARANCIA, Kártyafüggetlen,MS3435
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Eladó 2db Nokia steel hr hibrid okos óra dobozával
- OnePlus Pad Green nagy kijelzős, pehelykönnyű tablet 128 GB Wi-Fi Használt, karcmentes 3
- Kuriózum: Ozark Trail (amerikai) fejlámpa 600 lumen
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest





Még 2009-ben 

közben én is rá jöttem csak vissza kellett nyulni az öskorba
DOS


Így azé' szebb, meg nem kell annyit pötyögni a cím beírásához. 



