- Samsung Galaxy A56 - megbízható középszerűség
- Milyen okostelefont vegyek?
- Kicsomagolták a Vivo X Fold 5-öt (videó és fotók)
- Szerkesztett és makrofotók mobillal
- iPhone topik
- Honor 200 Pro - mobilportré
- Huawei Mate X6 - keleti oldal, nyugati oldal
- Android alkalmazások - szoftver kibeszélő topik
- VoLTE/VoWiFi
- Samsung Galaxy A54 - türelemjáték
Új hozzászólás Aktív témák
-
cucka
addikt
válasz
Forza_JUVE #6910 üzenetére
Hát rosszul írtad
Átirányíthatsz egy relatív útvonalra a szerveren. Példák:
header("Location: xy.html");
header("Location: /some_subdir/index.php?id=1&result=success");Vagy átirányíthasz egy külső oldalra, akkor viszont kell a http elé:
header("Location: http://www.google.com");Az átirányítás után a die() arra van, hogy a szkript maradék része ne fusson le.
A socket-es hibának ehhez nincs semmi köze. -
cucka
addikt
válasz
Forza_JUVE #6908 üzenetére
header("Location: xy.html");
die(); -
cucka
addikt
válasz
Sk8erPeter #6903 üzenetére
Az is alapvető különbség, amit én írtam, mivel az interfész tulajdonképpen csak egy "mintát" ír elő, amit meg kell valósítani. Az absztrakt osztály sokszor ennél konkrétabb szerkezetet határoz meg.
Az interface lényeges tulajdonsága az, hogy támogatja a többszörös öröklődést, ez az oka annak, hogy berakták a nyelvbe. Ugye lehet írni kizárólag absztrakt függvényeket tartalmazó osztályt, tehát csak ezért nem lett volna értelme az interface-ek bevezetésének. -
cucka
addikt
válasz
Sk8erPeter #6899 üzenetére
Szerintem jól írtam
Az absztrakt osztály lényege, hogy ez egy osztály, aminek néhány függvénye csak deklarálva van, de nincsenek definiálva (abstract függvények)Egyébként jókat írsz. Egy kis kiegészítés:
Az abstract class és az interface között az alapető különbség nem az, hogy az egyikben lehetnek definiált függvények, a másikban pedig nem, hanem hogy az interface az egyetlen eszköz php-ban, amin működik a többszörös öröklődés. -
cucka
addikt
A struktúra szerintem alapvetően jó így.
Egy apró megjegyzés: private adattagok/függvények helyett a legtöbb esetben érdemesebb protected-et használni. Kívülről nézve nincs különbség, származtatásnál viszont jellemző, hogy szeretnéd használni az ős osztály védett metódusait/adattagjait.
Mondjuk ez a session kezelés osztály pont olyan, ami nem hasonlít a legtöbb esetre. Ezt várhatóan nem fogod származtatni, így teljesen jó a private is. -
cucka
addikt
Nem muszáj singleton-t használni, tulajdonképpen elsőre bőven jó egy olyan osztály, ami valóban oop-s és elvégzi a dolgát, az osztályt használó kód majd biztosítja azt, hogy csak 1 példány legyen belőle.
(A session amúgy is egy globális valami és egy darab van belőle)Itt találsz példát singleton osztályra.
-
cucka
addikt
Egyébként ha már ennél a témánál vagyunk, megosztanék két fontos dolgot, amit néhány évnyi php framework fejlesztés alatt sikerült megtanulni és amiért nem javaslom senkinek, hogy különösebb indok nélkül belevágjon:
1. A saját framework soha nem készül el.
2. A saját framework soha nem lesz annyira jó, hogy elégedetten hátradőlhess.Természetesen hobbiból lehet keretrendszert fejleszteni, meg sok dolgot meg lehet tanulni ezáltal, a fentiek nem erre vonatkoznak.
-
cucka
addikt
Egy gyors ránézés után egyértelmű, hogy nálad nem jött át, hogy mire jó az abstract osztály.
A kódod gyakorlatilag globális függvények halmaza, amiket egy osztályba tettél. Na ettől nem lett oop-s a kód.
Az absztrakt osztály lényege, hogy ez egy osztály, aminek néhány függvénye csak deklarálva van, de nincsenek definiálva (abstract függvények). Ez azt jelenti, hogy az osztály megmondja, hogy milyen pontosan függvényekre van szükség a működéséhez, de ezeket a függvényeket a leszármazottak kötelesek implementálni.
A fentiek alapján ki lehet jelenteni, hogy a te osztályod teljesen fölöslegesen használja az "abstract" kulcsszót, mert pont a lényeg hiányzik belőle.Amire neked ennél a session osztálynál szükséged lenne, az egy rendes példányosítható osztály, ami singleton (tehát egy időben csak egy példánya létezhet, nézz utána wikin, hogy hogyan és miért).
Az alkalmazásod indulásnál példányosítja a session osztályt, majd használja azt. Természetesen az osztály függvényei nem statikusak, mert annak semmi értelme nincs ebben az esetben.Szólj ha valami nem kerek
(Egyébként egy nem sértőnek szánt megjegyzés: sokkal jobban járnál, ha fognál egy komoly php-s framework-öt és elkezdenéd használni, illetve megpróbálnád megérteni, hogy hogy működik, mert nekem innen úgy tűnik, hogy azért van egy-két lyuk a tudásodban, amit be kéne foltozni ahhoz, hogy értelme legyen a saját framework írásának)
-
cucka
addikt
Cucka mondta nékem, hogy statikus eljárásokat/függvényeket abstract osztályba rakni bohóckodás.
Most nem nézek utána, de szerintem azt írtam, hogy saját framework-öt írni a bohóckodás. (De ha mégsem, akkor erre gondoltam)
Statikus függvényeket nem blaszfémia használni, egyszerűen csak ugye ezek lényege, hogy egy osztályra vonatkoznak, nem pedig az osztály egyes példányaira, így pontosan akkor kell őket használni, amikor pontosan erre van szükség - általában nincs. Kód vagy osztálydiagram nélkül nehéz okosakat mondani, esetleg megmutathatnád, hogy mit készülsz implementálni.
A statikus függvények másik jellemző felhasználása, amikor rengeteg segédfüggvényeked van (mondjuk egy framework-ben ez jellemző) és ezeket témakör szerint osztályokba rendezed úgy, hogy mindegyik statikus lesz. Tulajdonképpen globális függvényként használod őket. Ennek az előnye:
- ha megcsináltad rendesen az autoload()-ot, akkor az megoldja az include-okat erre is
- nem parse-oltatsz le fölöslegesen egy csomó kódot a php-val
- szép rendezett kódod lesz -
cucka
addikt
válasz
Tele von Zsinór #6876 üzenetére
Javítsatok ki, ha rosszul tudom, de szerintem a mezők száma nem befolyásolja érdemben a sebességet.
-
cucka
addikt
válasz
Alukard #6874 üzenetére
Sok függ attól, hogy milyen lekérdezéseket fogsz futtatni rajta és hogy hogyan indexeled, de általában véve 100ezer sornál kezdődnek a problémák.
(Persze, ha az olcsójános bt-nél van host-olva az alkalmazás, ahol beraktak egy asztali gépet a szerverterembe és azon fut egyszerre száz oldal meg az adatbázisuk, akkor nyilván szűkebb a mozgástér)
-
cucka
addikt
a tömb elemei referencia nélkül is megmaradnak az éterben?
Természetesen ez esetben nem maradnak meg az éterben, jól is néznénk ki, ha ilyen memory leak-ekkel lenne tele a php.
A php-ben van garbage collector, ami folyamatosan figyeli a lefoglalt változókat (pontosabban zval-okat) és ha valamelyiknek a ref_count-ja nulla lesz, akkor felszabadítja a hozzá tartozó memóriát. Ha nagyon érdekel a téma, a php manual-ban le van írva részletesen [link] -
cucka
addikt
Vágom. Az első megoldást javaslom, mert
- nem kell nyilvántartani, hogy mire futott már le a stripslashes és mire nem
- ha valami ott van a REQUEST-ben, akkor az valószínűleg azért van ott, mert szükség van rá, használni szeretnéd valamire. Ha a REQUEST tele van szeméttel, akkor előbb azt kell megoldani, hogy ne legyen. -
cucka
addikt
hanem egyszer beállítom és mindegyikre objektumra érvényes. Végső soron ezért vannak a statikus adattagok, vagy nem?
A lényeg, hogy ha az objektum be tudja állítani magának a konstruktorban, akkor ne kelljen kívülről beállítani.
Amúgy igen, lehet statikusnak is deklarálni ezt a változót, ez esetben mondjuk legyen null a kezdőértéke és a konstruktor csak akkor állítsa be az értékét, ha az null.Am így valóban jobb és szakszerűbb, bár sztem így több memóriát eszik
Többet nyersz a jó kóddal, mint azzal, ha spórolsz 3 byte memóriát.viszont a GET és POST nem minden elemén stripslashelek, hanem csak amelyik kell.
Ha be van kapcsolva a magic_quotes, akkor mindegyiken kell.Az megint egy kérdés, hogy egy elemet többször fölöslegesen is, amennyiben nem tárolom el egy változóban.
Ha egy elemre többször fut le a stripslashes, az nagy baj, mert módosítja magát az adatot is. A kódnak biztosítania kell, hogy csak egyszer fusson le. Például a kód, amit írtam/írtál, az biztosítja ezt. -
cucka
addikt
Kicsit átírtam. Pár ökölszabály:
- a konstruktor azért van, hogy inicializálja az objektum változóit
- ha nem vagy benne biztos, hogy statikus adattagot/függvényt kell használj, akkor nem kell használd.class Superglobal{
protected $content = array();
protected $magic_quotes = false;
function __construct($sga){
$this->content = $sga;
$this->magic_quotes=get_magic_quotes_gpc();
}
function Get($key, $secure = false, $default = false, $remove_html = false, $remove_js =false){
if(isset($this->content[$key])){
$value=$this->content[$key];
if($this->magic_quotes)$value= stripslashes($value);
if($secure)$value = STRINGS::Secure($value, $remove_html, $remove_js);
return $value;
} else {
return $default;
}
}
} -
cucka
addikt
Egy kis saját keretrendszert készítek és született az alábbi elgondolás.
Ne készíts saját keretrendszertMinden bizonnyal lassítja a futást, de egyszerűsíti a munkát. Szerintetek érdemes ezt így használni?
Nem érdemes. Ha már keretrendszert készítesz és szeretnél egy szuperglobál osztályt készíteni ahhoz, hogy biztonságosan kezeld a user inputot, akkor
- legyen egy osztályod, ami általánosan meg tudja oldani a feladatot akármilyen tömbre
- a program indulásánál példányosítod az ősosztályt a szuperglobálokra
- az ilyen megoldás egyetlen előnyös oldala, hogy egy helyen le tudod kezelni azt, hogy a szerveren be van-e kapcsolva a magic_quotes_gpc, na pont ez hiányzik a kódból
- a PHP case insensitive függvénynevek esetén, de ha minőségi kódot szeretnél kiadni a kezeid közül, akkor erről a "fícsörről" nem veszel tudomást.
- mivel a PHP egyik alapvető funkciója, hogy implicit cast-ol (szinte) bármit bármivé, ezért ezt beépíteni az osztályodba teljesen fölösleges.Ennek az abstract static bohóckodásnak semmi értelme, gyakorlatilag amit írtál, az ekvivalens azzal, mint ha megírtál volna néhány globális függvényt, csak mellette ott van zajnak egy csomó OOP-s keyword.
-
cucka
addikt
Az flock() pontosan arra jó, amit a php manual-ban ír: kér az operációs rendszertől egy lock-ot egy file-ra, magyarul zárolja. Hacsak nem vagy benne biztos, hogy erre szükséged van, akkor valószínűleg nincs szükséged rá.
A netbeans pedig nem fogja lefordítani a php-t, mint ahogy más sem, mert ez egy interpretált nyelv.
-
cucka
addikt
válasz
fordfairlane #6828 üzenetére
Szerintem meg ki vannak kapcsolva a warning-ok (nagyon helyesen
)
-
cucka
addikt
válasz
fordfairlane #6685 üzenetére
Igazából az egész koncepció rossz, mármint hogy egy függvény kezeli a connect-et és a disconnect-et is. Ha normálisan kéne megírni, akkor erre két függvény kell:
function db_connect($host, $user, $pass); - ez visszatér a connection resource-al
function db_disconnect($conn_res); - ez pedig lekapcsolódik -
cucka
addikt
válasz
PazsitZ #6683 üzenetére
A függvény ha jól látom, azt csinálja, hogy kapcsolódik egy adatbázishoz, tehát a hozzászólásoddal ellentétben nem az a feladata, hogy kezelje egy korábbi $connection változót, hanem hogy létrehozzon egyet.
Ilyen esetben a jó megoldás, hogy a függvény visszatér a létrejött kapcsolat resource-ával, vagy false-al, ha nem sikerült neki. Vagyis parasztosan: a végére kell egy return $connection sor -
cucka
addikt
válasz
Alukard #6681 üzenetére
A kódod lényegében így néz ki:
if (valamilyen feltétel){
létrehozom a connection változót
} else {
használom a connection változót
}A notice-t az else ágban kapod, ahol szeretnéd használni azt a változót, amit az if egy másik ágában hoznál létre (de oda be se lép a programod, ugye, ezért a feltételes mód). A javaslat, hogy a mysql_connect-et hozd ki az if elé.
-
cucka
addikt
válasz
Sk8erPeter #6672 üzenetére
És én szerinted mit mondtam? Ugyanezt.
Oké, figyelmetlen voltam, bocsánatMert néztem a forráskódot, és TUDOM, hogy nincs lekezelve...
Csak ötlet volt, írtam, hogy nem volt előttem a forráskód. Amúgy simán lehet, hogy egyszerűen csak szar a phpmailer forrása. Ingyenes szoftver, szóval nincs kinél reklamálni.Ez attól még nem mond ellent annak, hogy elegánsabb, ha kivételt dobál az osztály, és azt a megfelelő helyen elkapjuk, mintha kiszednénk a publikus ErrorInfo stringből a hibát, ha a Send false-szal tér vissza...
Attól függ, hogy mire használod egy adott projektben a kivételeket. Lehet vezérlési struktúraként is használni, meg lehet tényleg csak akkor elővenni őket, ha fatális módon elhányja magát a kód. Feltételezem, ezért opcionális a kivételek dobálása a phpmailer-nél. -
cucka
addikt
válasz
Sk8erPeter #6669 üzenetére
Amúgy ez fura, azt nézem, hogy a PHPMailer osztályban (5.1) egyáltalán nincs is ellenőrzés arra vonatkozóan, hogy a felhasználó nem cseszte-e el a karakterkódolás bepötyögését
Belefér, ez nem olyan nagy baj.persze nem csak erről szól az OOP, de ha már lehet, egy helyen megvalósítjuk a változók beállításának megfelelő ellenőrzését is - egyből a beállításkor
Igen, meg lehet oldani, gondolom nem akarták felsorolni az összes lehetséges encoding típust és azok variációit (utf8 vs. utf-8). A karakterkódolás csak egy string, amit a levél header részébe illeszt a phpmailer, ezért nincs ellenőrzés.miért férek hozzá kívülről az ErrorInfo-hoz?
Errorinfo protected (v. private) kéne legyen és kéne mellé írni egy getErrorInfo()-t. Vagy maradhat public, de akkor a __set-ben le kell kezelni azt az esetet, amikor kívülről piszkálják. (Egyébként simán elképzelhető, hogy le van kezelve, csak elkerülte a figyelmedet, nincs előttem a phpmailer forrása)Lehet, hogy a függvénybe ugrálásnak nagyobb az overheadje
Igen, de annyira azért nem nagy. (Az overhead-et az adja, hogy létre kell jöjjön a call stack, ami a függvény hívása után fel kell szabaduljon)Egyébként gondolom Te is így példányosítod a PHPMailert:
Igen, de az én kivételeim nem jelennek meg a képernyőn, hanem kapok róluk szépen formázott emailt (és ugyanez igaz a hibákra is) -
cucka
addikt
válasz
Alukard #6662 üzenetére
a lényeg, hogy egy olyan megoldást keresek aminek a segítségével adatbázisból ki lehet szedni és megjeleníteni egy többszintes menüt, úgy, hogy minden a helyén is van...
Miért nem írod meg magadnak? Gyakorlatilag egy fát kell felépíts, majd írni egy függvényt, ami rekurzívan végigszalad rajta, ez fogja kiírni a menüt. Persze, ha gyorsan kell és nem szeretnél php programozással foglalkozni, akkor felejtős, egyébként viszont megéri egyszer jól megcsinálni, ez pont egy olyan feladat, amire lehet újrafelhasználható kódot írni és mellette viszonylag érdekes is.
-
cucka
addikt
A php modult úgy lehet kiütni, ha szerkesztik az apache httpd.conf-ját, amihez általában root jog szükséges. Namost ha a hekker képes root joggal szerkesztgetni a szerveren a file-okat, akkor gyakorlatilag bármit megcsinálhat a gépen, tehát megette a fene az egészet.
Persze, ha tudsz valamilyen exploit-ról, amivel ezt el lehet érni root shell nélkül, akkor arra nagyon kíváncsi vagyok.
-
cucka
addikt
De nem gáz ez, hogy ott van kódolatlanul?
Igen, gáz, ugyanakkor nem azA php file-t kívülről nem lehet elérni, mert a webszerver tudja, hogy az egy php file, így nem a php programkódot fogja visszaadni a felhasználónak, hanem lefuttatja php-val, és amit az kiír a standard kimenetre, na az megy a júzernek. Tehát nem gáz, hogy ott van kódolatlanul, valószínűleg egy másik file-ban az adatbázis jelszavad is ott lesz kódolatlanul
Annyiban gáz, hogy ha valaki hozzáfér a honlaphoz tartozó file-okhoz (pl. valahogy megszerzi az ftp jelszavadat), akkor látni fogja a jelszót is, bár ez esetben úgyis megette a fene az egészet, tehát szerintem ezen ne parázz
-
cucka
addikt
Az mx rekord a lanten.hu-hoz létezik, ezt sok helyen meg tudod nézni, pl. [link]
Phpmailer-el pedig tudsz küldeni simán (php mail-el) és smtp-vel is levelet. Az smtp-s levélküldésnél pontosan ugyanúgy be fog lépni az smtp szerverre a phpmailer, mint ahogy egy átlag levelezőprogram belép, amikor küldesz vele valamit. Ha megnézed a phpmailer kódját, a "PROPERTIES FOR SMTP "-re keress rá, ott lesz szépen dokumentálva az összes paraméter, amit az smtp-s levélküldéshez be lehet állítani. (Nem mindegyiket kell piszkálni, de nyilván hostnév vagy belépési adatok nélkül nem fog semmit küldeni sehova
)
-
cucka
addikt
Valakinek esetleg van ötlete, hogy Budapesten egy multinál mennyit keres egy senior php fejlesztő?
-
cucka
addikt
válasz
Brown ügynök #6604 üzenetére
Mi a kérdéses oldal címe (vagyis az url-je) és mi található a $uri változóban?
A $_GET['id']-ben csak akkor fogod megtalálni a keresett értéket, ha az url-ben van egy id nevű paraméter. (pl. oldalneve.hu?id=1 ) -
cucka
addikt
válasz
Alukard #6582 üzenetére
Valahogy így:
select *, date(annDate) as ujmezoneve from ...Itt a date() függvény van, ami visszaadja a dátumot szabványos formátumban (Y-m-d). Ha valamilyen egyéni formátumban szeretnéd, akkor date() helyett használd a korábban mutatott date_format() függvényt.
(Egyébként a tábláidat miért nevezgeted át a, b és c-nek? Sok értelme nincs, azon túl, hogy átláthatalanabb lesz tőle a lekérdezésed.) -
cucka
addikt
válasz
Alukard #6580 üzenetére
Például így:
select date_format(datum_mezo_neve, "%m") from tabla_neve;A fenti lekérdezés a hónapot fogja kiszedni a dátumból. A date_format dokumentációjában megtalálod az összes lehetséges értéket, amit a format string-be írhatsz. (A format string aza "%m" jelen esetben)
-
cucka
addikt
válasz
RedSign #6503 üzenetére
Ezt a feladatot azért nem így illik megoldani. A header() hívásod helyére inkább valami hasonlót érdemes beilleszteni.
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
header("Content-type: image/jpeg");
fpassthru($img_folder . $image); -
cucka
addikt
válasz
Sk8erPeter #6491 üzenetére
Ez a fenti ilyenformán jól működik, mégis felmerült bennem, hogy tulajdonképpen melyik a gyorsabb, az, ha Apache-csal vagy PHP-vel dolgozom fel a címet?
Elég gyors bárhogy. Ha gyorsítani akarsz a kódodon, akkor a bottleneck-eket kell megkeresni, ilyen kaliberű dolgokkal fölöslegesen pocsékolod az időd. Kit érdekel, hogy 0.02 ms alatt futtatja le a regexp-et, vagy 0.03?Ti hogy látjátok a kérdést? Másképp használjátok, vagy muszáj elfogadni, hogy ez egy viszonylag kötött szerkezet, jól kell kitalálni az elején, és nem érdemes változtatni rajta később?
Fel lehet php-ból is dolgozni az url-t, ez valamivel rugalmasabb megoldás, de értelemszerűen a korábban könyvjelzőzött url-ek változására nem ad ez sem megoldást. A barátságos url-ek egyébként a keresőmotornak szólnak, nem pedig a felhasználónak, tehát szerintem egyszer elég jól kitalálni és utána nem piszkálni.Több RewriteRule-t hogyan adtok hozzá úgy, hogy helyesen működjön?
A RewriteRule-ok alapból így működnek. Fentről lefele halad a .htaccess fileban egészen addig, amíg talál egy megfelelő sort, ami alapján átírja az url-t. (Ennél jóval bonyolultabb amúgy, vannak feltételek, meg igazából ha talált egy jó RewriteRule-t, akkor nem áll le a feldolgozás, de nem akarok hülyeséget írni, szóval nézz utána)
-
cucka
addikt
válasz
Tele von Zsinór #5751 üzenetére
Jaoké, azt nem tudtam, hogy ilyenkor a php4 másolatot készített az objektumokról. Ma is tanultam valamit
-
cucka
addikt
válasz
Brown ügynök #5749 üzenetére
$db=&JFactory::getDBO();
Namost az is lehet, hogy én maradtam le valamilyen php fícsörről, de a JFactory osztály neve előtti & jelet pontosan miért is írtad oda? -
cucka
addikt
válasz
Speeedfire #5680 üzenetére
Feltételezem UTF8-as kódolású a szöveg, ez esetben a strlen() helyett használd az mb_strlen() függvényt.
(A probléma oka, hogy a strlen csak azokra a karakterkódolásokra működik jól, ahol 1 karaktert 1 byte-on tárolnak, utf8-nál viszont bizonyos karakterek több byte-on vannak tárolva. Az mb előtag is erre utal, a multibyte szó rövidítése) -
cucka
addikt
Nem igazán értem, hogy mit szeretnél. Az array_reverse alapesetben meghívva eldobja a kulcsokat és 0-tól újraindexeli a tömböt. Ha a második, opcionális paraméterét true-ra állítod, akkor pedig megtartja a kulcsokat - neked szerintem az első változatra van szükséged.
Ha pedig tudod előre, hogy hány elemed lesz, akkor a ciklusban array_push() helyett simán rakd be a megfelelő helyre az aktuális elemet és nem kell fordítgatni a tömböt.
-
cucka
addikt
az a baj, az array_reverse a query eredményét nem rendezi vissza, vagy nem jól írom
Hát a kódodban nem írod sehol. Ha a kódod után beszúrsz egy
$vissza_tomb=array_reverse($vissza_tomb);
sort, akkor annak működnie kéne.tényleg nincs utolsó X sor fordított sorrendben?
Mysql-ben tényleg nincs.előbb kérjem le a sorok számát, és az -X legyen a start, vége X? ez nem túl elegáns
Ez is jó megoldás, vagy ott a dupla select, amit korábban írtam. Ez van. -
cucka
addikt
A problémára igazán értelmes megoldás nincs, a mysql-ben a limit pontosan annyit tud, ami elsőre is látszik.
Esetleg lehet próbálkozni nem túl elegáns és gyors dupla select-es megoldással:select * from (select * from tablanev order by mezonev desc limit 10) tbl_alias order by mezonev asc;
-
cucka
addikt
Php-ban bele lehet futni hasonló furcsaságokba, köszönhetően a típusrendszern és az ellenőrző függvények furcsaságainak. Pár hasznos tudnivaló.
Először is: a php-ban minden változónak van valamilyen típusa.
A null az egy érték és egy speciális típus is, tehát ha egy változó értéke null, akkor a típusa is null lesz. A korábban nem deklarált változók értéke (és típusa is) null, ugyanez igaz akkor, ha egy tömb nemlétező indexére hivatkozol.
A == és a === közötti különbség, hogy az előbbinél a php a megfelelő típusúra cast-olja az operandusokat, utóbbinál nem cast-ol, hanem ellenőrzi az operandusok típusát. Ezért van az, hogy egy null értékű változó és egy nem deklarált változó egyenlő lesz mindkét egyenlőségvizsgálat esetén.
Az automata cast-olással szintén érdemes vigyázni, lásd a köv. kód, ami azt fogja kiírni, hogy 102:
print ('100 forintnak 50 a fele' +2);Az is_int (is_null, stb.) függvények a paraméterként adott kifejezés típusát ellenőrzik, semmi mást. Például lásd a köv. kifejezéseket, melléjük írtam a kif. eredményét.
(true==is_int(3)) //IGAZ
(true==is_int('3')) //HAMIS
(true==is_int('3'+0)) //IGAZ
A POST-olt adatok mindig stringként érkeznek, tehát az is_int nem igazán jó ellenőrzésnek. Helyette használható az is_numeric(), ami stringként megadott számokra is az elvárásoknak megfelelő eredményt adja. Az is_int(null) minden esetben false-al tér vissza (mivel a null típus és az int típus különbözőek).Az empty() függvény megint érdekes, először is azért, mert nem függvény, nem is viselkedik függvényként. Kizárólag változót lehet neki paraméterként megadni. Az empty igazzal fog visszatérni, ha a paraméterének értéke null, 0, '0', üres string vagy üres tömb. Ezek közül a problémát a '0' érték jelenti, ami egyértelműen egy nem üres string
A fentiek mellett használható még az isset() is, ami szintén nem függvény és csak változó paraméterrel működik. Az isset akkor ad vissza true értéket, ha a paraméterként kapott változó korábban deklarálva volt és az értéke nem null.
Php-ban nagyjából ezek az eszközök vannak erre a feladatra, remélem sikerült újat is mondanom.
-
cucka
addikt
válasz
TonTomika #5367 üzenetére
Például használhatod az explode() függvényt arra, hogy a sort a *-ok mentén szétbontsa, eredményül egy tömböt ad. Próbáld ki ezt a kódot, innen látni fogod, hogy milyen eredményt ad, ezzel lehet tovább dolgozni.
while ($line=fgets($file)){
$line_arr=explode('*', $line);
print '<pre>'.print_r($line, true).'</pre><br />';
} -
cucka
addikt
válasz
ArchElf #5364 üzenetére
Van az or meg az and, amelyek logikai operátorok, de ugyanezek használhatók vezérlési szerkezetként is.
Te a logikai operátorokról beszélsz, azokkal semmi baj. Mellesleg az általad írt kiértékelést lusta kiértékelésnek szokás hívni. A PHP a logikai operátoroknál mindig lusta kiértékelést használ, a mohó kiértékelés a legtöbb esetben megoldható bináris és/vagy operátorokkal.
Amiről én beszélek, az az if-el ekvivalens vezérlési szerkezetek. A következő két kód ekvivalens.
Első:
fgv1() and fgv2();
fgv1() or fgv2();Második:
if (fgv1()) fgv2();
if (!fgv1()) fgv2();Sőt, ezekből többet is össze lehet fűzni. A példa kódokban sokszor használt mysql_query(..) or die(); szerkezet pontosan ilyen vezérlési szerkezet.
-
cucka
addikt
Az include_once() beilleszt és feldolgoz fájlokat a program futása közben.
Apró pontosítás: nem a futás közben dolgozza fel, hanem előtte. A php-ban van preprocessor, ami összeszerkeszti a kódot (az include-olt fileokat egyszerűen bemásolja a megfelelő helyre), majd alap szintaktikai vizsgálatot is végez.amugy szerintem jobb az or die alkalmazása....kevesebb a kód de csak ugy mondtam
Szerintem ez a rövidített megoldás nem túl szép (amúgy az or mellett az and is használható ehhez analóg módon, szerencsére nem túl elterjedt). Másrészt normális szoftvernél a hibákat egy hibakezelő kapja el, tehát a kódban egyetlen die() sincs. -
cucka
addikt
válasz
Louloudaki #4604 üzenetére
Szerintem valamit félreértelmeztél.
A session-t a php kezeli, nem kell semmit elküldj cookie-ban a felhasználónak (főleg nem md5 hash-t). Az egyetlen dolog, amit felül kell bírálj, az az, hogy a session-ban található adatokat hol tárolod. Alapértelmezésként ezek file-ként vannak tárolva, ezt kell átírd.
A php.net-en a session_set_save_handler() dokumentációjánál ott a legelső példaprogram, ahol felüldefiniálja ezeket, gyakorlatilag ezt a példa kódot kell átírd úgy, hogy ne file-ba mentsen, hanem adatbázisba.
A session id-je mindig egyedi, ezzel tudod azonosítani a session-t, ezt használhatod az adatbázisos tárolásnál is.
-
cucka
addikt
Aha, és ha mondjuk listázni szeretném a liciteket, akkor minden egyes esetben végigzongorázza a rendszer a több tíz/százezer terméket? A termékek/licitek listázása pedig elég gyakori egy ilyen oldalon. Ennél sokkal jobb az éjféli ütemezett feladat, ami amúgy nem feltétlenül lassú, tekintve hogy nem kell az összes liciten végigmenni, csak amelyik aktív státuszú és éppen lejárt az érvényessége.
-
cucka
addikt
válasz
scott_free #4580 üzenetére
Gyors válasz: levélküldéshez használj phpmailer-t, az megoldja.
-
cucka
addikt
válasz
Sk8erPeter #4577 üzenetére
Ez most lehet, hogy csak számomra tűnik ellentmondásosnak.
Pedig nem ellentmondásos, csak lehet, nem fogalmaztam elég világosanA levélküldés és a weboldal karakterkódolása között elvileg nincs kapcsolat. Érted, írhatsz olyan php scriptet, ami semmiféle weboldalt nem gyárt, mégis küldi a levelet.
A jelen esetben viszont a levél tartalma a weboldalon található form-ból jön, na itt már nem mindegy a weboldal kódolása. A böngészők olyan kódolással fogják küldeni az űrlapra felvitt adatokat, amilyen kódolást megadtál a honlapodnál.Szép dolog az előre megírt osztályok használata, de tulajdonképpen jó lenne rábírni, hogy rendesen működjön saját módszerrel is, abból lehet tanulni, ha Te írod meg.
Ez esetben meg lehet nézni a phpmailer forráskódját, hogy lásd, milyen header-öket állít be a levélhez. Azért nem érdemes vele tökölni, mert a levelezőprogramok eltérően viselkednek, tehát megkíméled magad egy csomó fölösleges problémától. Például van olyan levelezőprogram, ami hibásan jeleníti meg a levél tárgyát, ha az utf8-as kódolású és ékezetes karaktereket is tartalmaz. Lehet tökölni azzal, hogy kitalálod, hogyan kell kódolni az email header-jében a subject sorokat ahhoz, hogy minden levelezőprogramnak jó legyen, csak nem látom értelmét, ugyanis a probléma már meg van oldva, ingyenes, lehet használni, ha érdekel, hogy hogyan működik, akkor ott a kód, meg lehet nézni, stb.Amúgy meg elég nehézkes dolog a levelezést tesztelni. Van rengeteg levelezőprogram, ott vannak a különféle verziójú outlook-ok, az összes webes levelezőrendszer, senkinek nincs arra ideje, hogy ezeken mind végigzongorázza, hogy vajon jó-e az a levélküldő kód, amit írt. Elég nagy probléma szokott azzal is lenni, ha az ügyfél szépen formázott, weboldal-szerű html levelet szeretne kiküldeni, mert minden egyes levelezőprogramnak vagy weboldalnak megvannak a saját maga hülyeségei.
-
cucka
addikt
válasz
scott_free #4573 üzenetére
Na látom még senkinek nem tűnt fel egy apróság, ezért beleszólok én is.
Egy dolog a weboldalad karakterkódolása és egy teljesen más dolog a php programod által elküldött email karakterkódolása. A weboldalad karakterkódolásának tulajdonképpen semmi köze az email küldéséhez.Ahhoz, hogy egy weboldalról a megfelelő karakterkódolásban kapd meg az adatokat, a következőkre figyelj:
- a weboldalad szövege megfelelő karakterkódolású legyen
- a <head> részben töltsd ki a karakterkódolást
- előfordulhat, hogy a http header-ben is be kell állítsd a karakterkódolást (szerverfüggő)A levél küldéséhez pedig javaslom, hogy használj valamilyen előre megírt osztályt, mondjuk a phpmailer-t. Ott megadod a karakterkódolást és kész vagy, minden mást elintéz neked az osztály.
Amúgy ha nem akarod szivatni magad, akkor az adatbázisodnál, a honlapodnál és a php szkripted minden eleménél ugyanazt a karakterkódolást használd. (Lehetőleg utf8-at)
-
cucka
addikt
válasz
Balint133 #4504 üzenetére
Természetesen webmestertől meg lehet kérdezni, de ezt nem nagyon szokták bekapcsolgatni.
Általában ssh tunnel-t adnak erre a célra.Ezzel a stringgel azt kéne csinálni, hogy minden betűt és vesszőt, írásjelet mindent kiszedni belőle, csak a számok maradjanak vissza.
$szamok=preg_replace('/\D/','',$str);
-
cucka
addikt
Az implode() függvény az a mysql_real_escape_string() függvény része, vagy használható önállóan is?
Nem létezik ez a fogalom, hogy egy függvény egy másiknak a része. Valószínűleg nem érted a strukturált programozás alapjait és nem tudod, hogy a korábban kapott programkódod mit csinál pontosan.
A mysql_real_escape_string arra való, hogy a paraméterében található string-ben lezárja a speciális karaktereket.
Az implode arra való, hogy egy tömb elemeit egy string-ben felsorolja.pl.
$tomb=array('alma', 'korte', 'barack');
print implode('/', $tomb);
Azt fogja kiírni, hogy "alma/korte/barack".Hogy neked mire van szükséged, azt nem tudom, mint ahogy azt sem, hogy a $_POST[termek1] micsoda.
-
cucka
addikt
válasz
8nemesis8 #4427 üzenetére
Általában véve a php kódot úgy kell megírni, hogy először van az alkalmazáslogika (bármilyen művelet, amit a script-nek el kell végezni) és csak ezután jön a kiírás rész, amikor legyártod a html-t. Ez utóbbinál már semmiféle alkalmazáslogika nincs.
Ha valamilyen sablon rendszert használsz (pl. smarty), akkor gyakorlatilag nincs is más lehetőséged, rá vagy kényszerítve a fent említett két folyamat különválasztására. -
cucka
addikt
válasz
8nemesis8 #4425 üzenetére
A header-en kívül nincs valami amivel lehet frissíteni az oldalt!?
Nincs. Igazából a header-el sem tudod frissíteni az oldalt.
A folyamat úgy működik, hogy ha a felhasználó lekér egy oldalt, akkor a kérés eljut a szerverhez, a szerver pedig valamit csinál, majd visszaküld a felhasználónak valamilyen adatot http protokollon keresztül.Egy php oldal esetén a szerveren az elküldött adat a php kód kimenete lesz. A header() függvénnyel a http adatcsomagok fejlécét tudod módosítani, ezért is hívják header-nek
. A szerver oldalon a http fejléc akkor jön létre, amikor a script-ed először kiír valamit a kimenetre (ugyanis a http fejléc mindig meg kell előzze a http adatokat), ezért van az, hogy az első kiírás után a header-t már nem lehet használni. (És ugyanezért nem lehet használni a setcookie-t sem azután, hogy kiírtál valamit, mert a sütikkel kapcsolatos teendők is a http fejlécben találhatók. És ezért nem lehet általában session-t indítani kiírás után, mert az szintén egy cookie létrehozását jelenti)
-
cucka
addikt
válasz
Sk8erPeter #4350 üzenetére
Hát ki az az állat, aki URL-ben vagy POST-ban elküldött SID alapján elfogad egy belépési kísérletet?
Mert ugye a felhasználónál cookie-ban tárolt SID az sokkal megbízhatóbb adat.. -
-
cucka
addikt
válasz
raczger #4159 üzenetére
Amúgy erősen javaslom, hogy értsd is meg, mit csinál a .htaccess file-od.
Például a ^taglista/(.*)$ reguláris kifejezés (ezt írtam pár hsz-el előtt) match-elni fog bármilyen url-re, ami úgy kezdődik, hogy "taglista/". Tehát nem csak a taglista/raczger-re, hanem a "taglista/konyvtarnev/valami/asd?param1=val1" url-re is. Ezt php-ból le kell kezelned, különben ez egy biztonsági lyuk lesz a rendszeredben. -
cucka
addikt
válasz
Orb1337 #4156 üzenetére
Azon fáradozom, hogy Javában megszerzett OOP tudásomat "átültessem" PHP-ra is.
Hát izé, ne várj sokat a php-s oop-tőlA kérdésem az lenne, ha több classból álló problémát kellene megoldanom, azt egy osztalyok.php fájlban hozzam létre?
Van rá lehetőség, [link]
Röviden annyi, hogy írsz egy __autoload nevű függvényt. Ha a php semmilyen módon nem tudja megtalálni a hivatkozott osztály nevét, akkor meghívja ezt a függvényt, paraméterként átadja a keresett osztály nevét, aztán oldd megPéldául ha a /var/www/weboldal_neve/classes mappában vannak az osztályaid és class_valami.php nevű file-okban találhatók, akkor valami hasonlót kell írni:
function __autoload($class_name){
require_once('/var/www/weboldal_neve/classes/class_'.$class_name.'.php');
}A lényeg, hogy olyan módon kell elhelyezd/elnevezd az osztályaid file-jait, hogy osztálynév alapján automatikusan be tudd include-olni. Ezt a php a script minden futásakor végigzongorázza, tehát ha az autoload bonyolult (pl. egy adott könyvtárban rekurzívan keres), akkor a már megtalált osztályok neveit cache-eld file-ba.
-
cucka
addikt
válasz
raczger #4151 üzenetére
Igen, lehet.
A reguláris kifejezésed nem jó, a []-n belül a - speciális karakternek számít, ha azt szeretnéd, hogy arra match-eljen, akkor zárd le egy \-el. (Bár erre magadtól is rájöhetsz, ugyanis a példádban használod is speciális karakterként)Továbbá a [^0-9a-z_-] -val van még egy baj: itt mire is akarod ráilleszteni a mintát? Mert eszerint sem betűkre, sem pedig számjegyekre nem fog illeszkedni, másfajta karakterrel viszont ritkán találkozunk url-ben..
A visszahivatkozásnál pedig a $1 az első lehetséges hivatkozást fogja jelenteni. Ha te a taglista utáni szöveget akarod kinyerni, akkor arra $2-vel hivatkozhatsz. (Vagy a .*-ot nem rakod zárójelbe, amúgy is fölösleges)
A reguláris kifejezésed végét pedig zárd le egy $-al, hogy mindenképp a teljes url-re match-eljen.
-
cucka
addikt
válasz
Sk8erPeter #4145 üzenetére
Mondjuk ha már itt tartunk, akkor a pontos időt felesleges kiírni
(#4141) DeltaPower
Jópofa, de mennyire használható a valóságban (pl. a bind-elések)? Továbbá felmerül a kérdés, hogy nem túl lassú? -
cucka
addikt
válasz
egyjotakaro2 #4142 üzenetére
Mit? Én csak egy képet látok, amin azt írja, hogy nálam nem fog működni.
Az a kérdés, hogy lehet-e látogatószámlálót írni, vagy kirakni a pontos időt php-ban? Természetesen lehet. -
cucka
addikt
válasz
fordfairlane #4137 üzenetére
Mi az a pdo?
-
cucka
addikt
válasz
egyjotakaro2 #4129 üzenetére
Arról van szó, hogy azt kérdezi, a szerver filerendszerében milyen könyvtárba szeretnéd telepíteni. Ez nem egyezik meg a webes elérési útvonallal, sokszor a kettőnek nincs sok köze egymáshoz.
-
cucka
addikt
válasz
egyjotakaro2 #4123 üzenetére
Ha a php azt mondja, hogy nem találja a file-t, akkor az azért van, mert nincs ott a file, ezt nem tudom jobban elmagyarázni.
Amúgy a require_once a /phpfreechat-1.2/src/../i18n/en_US/main.php file-t keresi, de azt erősen kétlem, hogy erre az útvonalra telepítetted volna, tehát valamelyik beállítás rossz. (Az útvonal a linux filerendszer gyökerében található phpfreechat mappára mutat, ami nyilván nem létezik)
-
cucka
addikt
válasz
egyjotakaro2 #4119 üzenetére
Warning: require_once(/phpfreechat-1.2/src/../i18n/en_US/main.php) [function.require-once]: failed to open stream: No such file or directory in /phpfreechat-1.2/src/pfci18n.class.php on line 65
Azt mondja, hogy van egy file (ott az elérési útvonala), amit nem talál a rendszer. Első körben nézd meg, hogy ott van-e a file, ahol keresi. Valószínűleg telepítésnél/beállításnál rosszul adtál meg valamilyen elérési útvonalat.
Amúgy meg azzal érdemes tisztában lenni, hogy a weboldal készítés egy szakma, tehát ehhez érteni kell. Egy ilyen php-s chat-nek nem célja, hogy akár a titkárnő is fel tudja telepíteni és be tudja állítani, tehát ha így állsz hozzá, akkor nincs sok esélyed. -
cucka
addikt
válasz
egyjotakaro2 #4116 üzenetére
php chat free
Rákattintottál egyáltalán a #4111-ben található link-re? -
cucka
addikt
válasz
egyjotakaro2 #4114 üzenetére
Ott a google link, ott az első találat.
Ha ennyire nem akarod megoldani a problémádat, akkor miért fárasztasz ezzel másokat? Nem fogja senki a fejedbe önteni a tudást, ha nem tudsz megtalálni és elolvasni egy tutorialt/leírást a neten, akkor keress egy szakembert, aki megoldja helyetted. -
cucka
addikt
válasz
Sk8erPeter #4108 üzenetére
Számomra utóbbi áttekinthetőbb... Szerinted?
Az első verzió jobb. Nem minden query ilyen rövid, ezen kívül úgy lehet normálisan kommentezni a kódot. Azt az or die.. részt pedig amúgy sem használom sehol, tehát nem rontja a látványt. -
cucka
addikt
ez normális dolog?
Persze hogy normális, különben nem működnének a session-ök.
Ha két külön session-t szeretnél a két php-ban használni, akkor adj nekik egyedi nevet a session_name() függvénnyel.A legjobb lenne hackelés helyett átírni mindent $_POST, $_GET és $_SESSION verzióra, igaz?
Igen. -
cucka
addikt
válasz
Sk8erPeter #4100 üzenetére
hogy egymás utáni mysql_query-ket hajtottam végre, az a kódban meg elég csúful mutat, sokkal szebb, ha konkatenálom egy sztringbe a lekérdezéseket, majd egymás után végrehajtom MySQLi-függvényekkel, ahogy írtam.
Nem tudom, mitől szebb. Ha arra van szükséged, hogy 2 query-t lefuttass egymás után, akkor azt le kell futtatni egymás után, miért csúnya ez?Meg egyébként még nem dolgozom komoly cégnél, mint honlapszerkesztő
Annak idején az első munkámat úgy kaptam meg, hogy lóf*szt se értettem az egészhez. Konkrétan javascript-et az első, beugró feladatomnál írtam először.
mik azok a megoldások, amik a lehető legkisebb erőforrást igénylik, és a leggyorsabb megjelenítést eredményezik.
A valóságban ennél sokkal fontosabb, hogy olyan megoldásokat alkalmazz, amelyek részedről igénylik a legkevesebb erőforrást. Senki sem fog fizetni azért, mert megspóroltál 0.3% processzoridőt, vagy hogy 0.2 másodperc helyett 0.13 alatt jön be a weboldal. -
cucka
addikt
válasz
Sk8erPeter #4089 üzenetére
Csak azért, mert érdekelne, az egyes módszerek, függvények felhasználástól függően vajon nagyjából mennyi erőforrást (memóriahasználat, prociigény) igényelnek.
Microtime-al tudsz időt mérni, memory_get_usage-el tudsz memóriahasználatot mérni. Esetleg felrakhatod a zend szervert, ott kapsz pl. profile-ozási lehetőséget.ezért akárhányszor frissítek a böngészőben, a microtime() függvény mindig más eredményt ad...
Rossz végén fogod meg a kérdést. Ha gyorsítani szeretnél egy rendszeren, akkor először azt kell meghatározni, hogy hol lassú és hogy miért, ezután pedig kitalálni, hogy egyáltalán tudsz-e rajta gyorsítani és ha igen, akkor hogyan.
Ha a rendszered nem lassú, megfelel a sebességi követelményeknek, akkor nem kell gyorsítani rajta. (Pontosabban lehet, csak senki nem fogja neked kifizetni)
A valóságban úgy néz ki a dolog, hogy van egy rendszer, ami normális sebességgel működik, kivéve 1-2 műveletet/erőforrást. Ezeket hívjuk bottleneck-eknek. Ha gyorsítani kell a rendszeren, akkor ezeket kell megtalálni és ezeknél kell kitalálni, hogy mitől lassú. Weboldalnál szinte mindig egy lassú lekérdezés lesz a bűnös, ha ez megvan, akkor lehet elemezni, hogy mivel gyorsítod fel. Tehát ha lassú egy rendszer, akkor nem attól lassú, mert mysql helyett mysqli-t használsz, vagy fordítva. -
cucka
addikt
válasz
Sk8erPeter #4084 üzenetére
A GET-ben a gombra vonatkozó érték pusztán annyi információt hordoz, hogy elküldték-e az űrlapot vagy sem.
- Ha csak egy gombod van, akkor a legegyszerűbb, hogy nem adsz neki nevet, az űrlapba pedig beleraksz egy hidden mezőt, ami átveszi a gomb funkcióját.
- Javascript-el submit-olod a form-ot, ilyenkor az elküldéshez használt gomb bármi lehet, nem is kell része legyen az űrlapnak.Itt nincs semmilyen nagy trükk, amiről még ne hallottál volna
.
-
cucka
addikt
válasz
Sk8erPeter #4081 üzenetére
Vagyis így a hozzászólás végére eljutottam arra a következtetésre, hogy lehet, hogy semmivel nem lenne erőforrás-igényesebb az, ha mindent törölnék, és mindent újra hozzáadnék
Na látod..vajon melyik működik gyorsabban, a MySQL törlő és hozzáadó műveletei, vagy a PHP összehasonlítgatásai, majd egy MySQL-törlés illetve -hozzáadás...
Esetedben mindkettő megfelelően gyors, azt válaszd, amelyikkel kevesebb a munka. Semmi értelme vadászni a századmásodperceket.Nyilván, ha olyan rendszered van, ahol a táblában több millió sor van és viszonylag gyakran nézegetik, akkor az a cél, hogy minél kevesebb és minél gyorsabb lekérdezésed legyen, de nálad most gondolom nem ez áll fenn. Általában egy nagy terhelésű rendszeren az adatbázis i/o a szűk keresztmetszet, nem pedig a processzor sebessége. Kis terhelésnél annyira minimális a különbség, hogy nem érdemes túl sokat foglalkozni a kérdéssel.
-
cucka
addikt
válasz
Sk8erPeter #4079 üzenetére
Az általad keresett megoldás egyszerűbb, mint gondolnád. Amikor feldolgozod az űrlapon elküldött adatokat, azzal kezded, hogy kiszeded ismét az adatbázisból a kiválasztott kategóriákat, és kész is, megvannak a korábbi elemek. Ezután rakod össze a delete/insert lekérdezéseidet, amivel módosítod a kategória hozzárendelést.
Amúgy én az általad írt 3. megoldást használnám, pusztán azért, mert egyszerű és átlátható. A kategóriába rendezés viszonylag ritka esemény, kevés adatod van, így gyorsaságban rendben van ez a megoldás is.
tegyük fel, hogy mondjuk csak egyetlen helyről kiszedem a pipát, akkor az összes hozzárendelést törli, és adhatja hozzá újra az összeset, ez felesleges munka
Ha mindig csak a szükséges módosításokat szeretnéd elvégezni az adatbázison, az meg neked felesleges munka.
ráadásul mi van, ha megszakad valamiért a folyamat, akkor elvesztek az addigi hozzárendelések
Ez nehéz kérdés. Általában ilyen akkor történik, ha valami komoly hardveres/szoftveres gond van a szerverrel. Nem nagyon tudsz tenni ellene semmit, de szerencsére nem is nagyon szokott ilyesmi előfordulni.
(Nyilván, egy banki rendszernél erre is fel kell készülni, de most nem erről van szó)
-
cucka
addikt
válasz
rebugra #4066 üzenetére
if ($_POST["submit"]=="Küldés") {
Itt például lehet probléma a karakterkódolással. Igazából ilyet soha nem csinálunk, mert ha a html-ben átírod a gomb feliratát, akkor máris működésképtelenné tetted a scriptet.A levél pedig azért néz ki furcsán, mert utf8-as kódolással küldöd, de a levél fejlécében ez nincs beállítva, a levelezőprogram pedig ennek hiányában iso 8859-x kódolással próbálja megjeleníteni.
Javaslom, hogy a korábban említett levélküldő osztályok közül használd valamelyiket, mert nem annyira egyszerű feladat simán csak mail függvénnyel megoldani. -
cucka
addikt
válasz
RoyalFlush #4060 üzenetére
Gondolom a "php4 24 óra alatt" c. könyvből tanulsz
.
-
cucka
addikt
Akkor az a feladatod, hogy rajzolsz egy fehér, lekerekített keretet, aminek a közepe lyukas. Van egy képed, egy kereted, ezeket kell összekombinálni imagecopyresampled vagy imagecopymerge függvénnyel.
Ugyanaz a feladat, mint ha vízjelezni szeretnéd a képet, csak itt a vízjel az az előre megrajzolt lekerekített keret. -
cucka
addikt
Image resize függvénnyel nem oldható meg, mert (ahogy a neve is mondja), az azt tudja, hogy a képet átméretezi.
Ha vízjel szerűen szeretnéd rárakni a képet, akkor nézd meg az imagecopyresampled függvényt. Ha rajzolgatni szeretnél rá, akkor arra is megvannak a megfelelő függvények, válogass. [link]A transzparens hátterű png alatt nem tudom, mit értesz, igazából ilyen fogalom nincs. A transzparens png úgy működik, hogy a 24 bitnyi rgb információ mellett minden képpontnak van egy 8 bites "alpha channel"-je, ami gyakorlatilag azt jelenti, hogy képpontonként 256-os skálán állíthatod be az áttetszőséget. Ha olyan képet szeretnél készíteni, ami lekerekített és a "kerete" áttetsző, akkor megoldható, lásd imagealphablenging() függvény.
-
cucka
addikt
válasz
Gergello #4052 üzenetére
Nem értem a problémát.
Mysql csatlakozásnál meg kell adni a gép hostnevét, ahova szeretnél csatlakozni. Ha ugyanazon a gépen van, mint amin a szkripted fut, akkor localhost-ként lehet rá hivatkozni, különben meg az adatbázis szervert futtató gép hostneve kerül oda.
Általában a rendszergazdák letiltják, hogy bármilyen külső gépről csak úgy csatlakozni lehessen az adatbázishoz. Szerintem kérdezd meg a rendszergazdától, hogy engdélyezett-e, és ha igen, akkor milyen hostnéven lehet elérni az adatbázist a távoli gépen. -
cucka
addikt
válasz
DerStauner #4042 üzenetére
Kapsz.
A wamp neve betűszó: windows+apache+mysql+php. -
cucka
addikt
válasz
Sk8erPeter #4040 üzenetére
A "WAMP saját szemete" nem hinném, hogy túl sok kárt okozna a gépben, nem fosta tele a registry-t sem, azért szerintem ezt nem kell ennyire túlparázni
Nem parázom túl, csak a wamp-hoz hozzáadott tartalom abszolút fölösleges.mert nem szöveges fájlokban kell kutakodni a megfelelő beállítások után, hanem van egy kellemes grafikus felület a Tálcán
Mondjuk három havonta egyszer fordul elő, hogy beletúrjak valamibe. A másik, hogy hozzá tartozik a fejlesztői ismeretekhez, hogy bele tudj túrni abba a kemény 2 fileba.Nem értem, a WAMP miért lenne rosszabb az Appserv-nél, a WAMP is ugyanúgy az éles környezetet pakolja fel, csak biztosít hozzá még egy plusz felületet, amin a beállítások elérhetők.
Semmi baj nincs vele, csak ha egy mód van rá, akkor tartózkodom azoktól a programoktól, amik szükségtelen szeméttel pakolják tele a gépet. -
cucka
addikt
válasz
Sk8erPeter #4038 üzenetére
Inkább az Appserv-et javaslom. Ugyanaz a next-next telepítő, csak nincs benne semmi egyedi cucc, pontosan olyan, mint ha kézzel külön-külön raknád fel a programokat. Ez azért jó, mert kb. ugyanolyan környezetet kapsz, mint az éles rendszereken, nincs telepakolva a Wamp saját szemetével.
(Már végigzongoráztam párszor az apache-php-mysql telepítést külön-külön, mindent beállítva, nekem ennyi elég is volt belőle, ezért kerestem olyan csomagot, ami megcsinálja helyettem) -
cucka
addikt
válasz
Sk8erPeter #4017 üzenetére
Eddig nem igazán értettem, hogy ha nem adatbázisból szeded, akkor mégis honnan, ha csak egy osztályod van...
Nem értem, mit nem értesz. Ott a kód, nézd meg, hogy melyik függvény mit csinál, direkt egyszerű példát írtam, összesen 1 darab származtatás van benne, ami oop.
Így viszont pont a rugalmasságát veszti el a dolog, ha kézzel kell hozzáadni, nem?
A kód végén ott van 3 darab példa arra, hogy hogyan lehet használni ezeket az osztályokat különféle helyzetekben. A kommenteket nem dísznek írtam a kódba, hanem hogy elolvasd.
És a gyakorlatban ezt a kézzel való hozzáadást hogy kell elképzelni?
Úgy, ahogy az első példában van. -
cucka
addikt
válasz
Sk8erPeter #4012 üzenetére
Ez most ilyen default értéket ad, mert a hu és en nyelvekhez nyúlkálsz a legtöbbször, és ha mégis másik nyelvre van szükséged, akkor lekérdezed adatbázisból, de egyébként nincs rá szükség?
A kódban található osztályok nem tudnak olyat, hogy default érték, de bele lehet építeni.
Ha megfigyeled, a kimásolt kódban a my_language osztályt példányosítom be, amelynek nincs szüksége semmilyen adatbázisra, működik anélkül is. Nyilván ekkor kézzel kell hozzáadni a lehetséges nyelveket (vagyis az add_language metódust használva)
A my_db_language osztály annyival tud többet, hogy ki tudja olvasni az adatbázisból a lehetséges nyelvek listáját. Ha megnézed, akkor ugyanazt az add_language metódust használja, mint amit az első példában kézzel hívtam meg.Amúgy ezek csak példa osztályok, az elv a fontos. A my_language képes rá, hogy nyilvántartsa a nyelvek listáját, oda-vissza fordítson szöveges azonosító és numerikus azonosító között. A my_db_language ennek a leszármazottja, egy plusz funkcióval, be tudja olvasni a nyelvek listáját az adott táblából/mezőnevekből.
(Amúgy nagyon hasonló a saját language osztályom is, csak az ki van bővítve néhány funkcióval) -
cucka
addikt
Ezért alacsony a presztízse a php fejlesztésnek. Könnyen tanulható nyelv, nulla tudással össze lehet gányolni egy weboldalt, ezért ez a szoftverfejlesztő szakma pöcegödre
. (De komolyan, nem hiszem, hogy van még egy olyan programozási nyelv, amelyből ennyire sok fogalmatlan hülye képes megélni)
A #4007-es hozzászólásnál meg elfelejtettem odaírni, hogy a te megoldásodban rossz a szuperglobálok sorrendje, a linkelt kódban ott a helyes sorrendű és teljes lista. (Meg még egy hasznos kód, ahol a kikapcsolt register_globals-t emulálja)
-
cucka
addikt
válasz
Sk8erPeter #3992 üzenetére
Tessék egy lehetséges megoldás, hogy el tudd képzelni: [link] .
Azért nem másoltam ide, hogy olvasható maradjon a kód. Röviden:
- van egy nyelv osztály, ami a nyelvekkel kapcsolatos funkciókat valósítja meg.
- ebből származtatok egy adatbázisos nyelv osztályt, ami annyit tesz hozzá, hogy az adatokat be tudja olvasni az adatbázisból
- az adatbázis kapcsolat objektumot a $dbconn változó jelenti, ennek létrehozása nincs benne a kódban
- a kód végén van példa 3 fajta példányosításra. Legtöbbször az adatbázisban a nyelv tábla és a mezők neve adott, ezek vannak beállítva default-nak, ugyanakkor meg kell adni a lehetőséget, hogy bármilyen tábla és mezőnevekre is működjön a rendszer.
- írtam bele pár kommentet is, remélem érthető
Új hozzászólás Aktív témák
Hirdetés
- Bomba ár! Lenovo X1 Yoga 1st - i7-6G I 8GB I 256SSD I 14" WQHD Sérült I W10 I CAM I Garancia!
- AKCIÓ! MSI B450M R7 5700X 16GB DDR4 512GB SSD RX 5700 XT 8GB Rampage SHIVA Zalman 600W
- Bomba ár! HP ZBook 15 Studio G3 - Intel Xeon I 32GB I 512SSD I 15,6" FHD I Nvidia I Cam I W10 I Gar
- Intel Core 2 Quad Q9550 2.83GHz LGA775 Processzor
- Bomba ár! Lenovo ThinkPad X395 - AMD Ryzen PRO 5 I 8GB I 512GB SSD I 13,3" FHD I Cam I W11 I Gari!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged