Új hozzászólás Aktív témák
-
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.
-
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.
[ Szerkesztve ]
- http://pazsitz.hu -
-
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.Sk8erPeter
-
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.
-
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.
"hacsak nem jön a jó tündér break utasítás képében..."
-
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.
-
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.
[ Szerkesztve ]
Sk8erPeter
-
Speeedfire
nagyúr
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]. '\'';
}Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
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.
[ Szerkesztve ]
-
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ő."hacsak nem jön a jó tündér break utasítás képében..."
-
Tele von Zsinór
őstag
válasz Speeedfire #6404 üzenetére
Pontosan: ha exceptiont dobsz destruktorban, az fatal error.
-
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
-
Frigo
őstag
válasz Speeedfire #6416 üzenetére
Üres a konstruktorod paraméterei a téglalapnál.
-
DeltaPower
őstag
válasz Speeedfire #6419 üzenetére
ha jól értem, akkor kell a public/private/stb az interface-ben levő függvényeknek is
"Moonshine Whiskey (70°, ízesítés nélküli) van. Fincsi" - Teebee - "De az kiírtaná az egész családomat..Akkor is ha csak én innék belőle.." - forintuser
-
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
őstag
válasz Speeedfire #6421 üzenetére
bocs, előbb rosszul értelmeztem a hibaüzenetet. nem kell bele az "abstract"
"Moonshine Whiskey (70°, ízesítés nélküli) van. Fincsi" - Teebee - "De az kiírtaná az egész családomat..Akkor is ha csak én innék belőle.." - forintuser
-
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.
-
Frigo
őstag
válasz Speeedfire #6430 üzenetére
NetBeans-hez van és a legtöbb modern IDE rendelkezik UML támogatással.
-
Speeedfire
nagyúr
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?[ Szerkesztve ]
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
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á.
[ Szerkesztve ]
-
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ó
[ Szerkesztve ]
-
Speeedfire
nagyúr
válasz Speeedfire #6470 üzenetére
Látom mindenki maga fejleszti ezeket.
Közben vagy opencart vagy prestashop lesz az alapja az egésznek.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
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]
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
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.
Sk8erPeter
-
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.
-
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[ Szerkesztve ]
http://www.redsign.hu
-
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
http://www.redsign.hu
-
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
http://www.redsign.hu
-
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?
-
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.Sk8erPeter
-
biker
nagyúr
válasz Speeedfire #6540 üzenetére
köszi, hétvégén összehozok valamit
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
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.
[ Szerkesztve ]
Sk8erPeter
-
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
-
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
[ Szerkesztve ]
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
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.
Sk8erPeter
-
biker
nagyúr
válasz Speeedfire #6555 üzenetére
Latod, megoldottam igy isElektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
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']);Sk8erPeter
-
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.[ Szerkesztve ]
Sk8erPeter
-
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.
-
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.
-
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.
[ Szerkesztve ]
Sk8erPeter
-
fordfairlane
veterán
válasz Speeedfire #6846 üzenetére
Még nálam lokálban is virtualhostok vannak az Apacheban.
x gon' give it to ya
-
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.
https://blackfyre.ninja
-
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.
-
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.
-
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?[ Szerkesztve ]
-
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.
-
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.
-
Tele von Zsinór
őstag
válasz Speeedfire #7083 üzenetére
Adatbázisban tábla.
-
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
[ Szerkesztve ]
Má' nem
Új hozzászólás Aktív témák
- TicWatch Pro 2020 okosóra
- Eladó Palit RTX 4070 Dual 12GB GDDR6X videokártya
- Fujitsu Lifebook E546 , 14" Kijelző, I3-6100U, 8GB DDR4, 128GB SSD, WIN 10, Számla, garancia
- Fujitsu Lifebook E544 , 14" Kijelző, I7-4712QM, 16GB DDR3, 128GB SSD, WIN 10, Számla, garancia
- Dell Latitude E6430, 14" HD+ Kijelző, I7-3720QM, 8GB DDR3, 320GB HDD, Nvidia 1GB, WIN 10, Számla,
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen