Hirdetés
Új hozzászólás Aktív témák
-
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.
-
Sk8erPeter
nagyúr
"jó az easyphp, mert a komodo edit alatt fut szépen"
Mit értesz azalatt, hogy "fut" Komodo alatt?
Gondolom van valami konzolszerűség, amin megmutatja a kimenetet. Ettől függetlenül nem a Komodo értelmezi és futtatja a PHP-kódodat.
NetBeans-nél is be lehet állítani elvileg valahogy, hogy a konzolszerűségen megmutogassa a kimeneteket, én mondjuk a böngészőben szoktam kipróbálni, mi látszik a weboldalon a kódbeli változtatások hatására, parancssori módban a lehető legritkább esetben használom a PHP-t, de annak is van persze létjogosultsága bőven.
Meg mondjuk PHP debuggoláshoz hasznos lehet, hogy a NetBeans saját konzolán látszik a kimenet.[ Szerkesztve ]
Sk8erPeter
-
Brown ügynök
senior tag
@ArchElf : Kösz, így már világos.
@Lacces:Nem muszáj minden fv.-t
megtanulnialkalmazni. Idővel rá fogsz jönni melyikre van szükséged és melyikre nincs. Amíg nincs munkád készíts magadtól egyéb weboldalakat is pl. blogot. Közben nézd meg a fórumokon hogy oldottak meg mások egy-egy problémát. Nézegesd a PHP.net-t is.Mindent egyszerre nem fogsz tudni megtanulni, csak szépen sorjában.
"hacsak nem jön a jó tündér break utasítás képében..."
-
PazsitZ
addikt
Ahogy előttem is írták, igen a tömbnek van indexmutatója.
A mutató "manipulálható", a reset, prev, current, next, end függvényekkel többek között. Vannak esetek amikor hasznosak, de sokkal átláthatóbb és könnyebben kezelhető a foreach bejárás, esetleg sima for, ha úgy adódik.Gyorsaságot, lehetne épp méregetni, elég nagy mintánál, több mérési eredménnyel, lehet ki tudnál hozni valakit győztesnek, de nem az egyik vagy másik miatt lesz lassú a kódod.
Egyébként itt a foreach jön ki győztesnek: [link][ Szerkesztve ]
- http://pazsitz.hu -
-
Brown ügynök
senior tag
Mikor érdemes egy weboldalt teljesen az alapoktól PHP-ban vagy ASP.NET-ben felépíteni?
Nekem nincs (még) nagy tapasztalatom de úgy gondolom, ez munkafüggő. Van ahol jobb ha alapoktól indulsz. Egy játéknak csinálsz weboldalt, oda jó lehet a Drupal is, míg - ahogy írtad is - egy mini közösségi oldal sokkal bonyolultabb ahhoz hogy CMS-sel "bíbelődj".
"hacsak nem jön a jó tündér break utasítás képében..."
-
cucka
addikt
Azt nagyjából tudom, hogy mi az előnye egy CMS-nek, erről sokat olvastam. De mi a hátránya?
Egy CMS kész rendszer, akkor érzed a hátrányait, ha olyan funkcióra van szükséged, amit nem tud / nem úgy tudja, ahogy neked szükséges.Mikor érdemes egy weboldalt teljesen az alapoktól PHP-ban vagy ASP.NET-ben felépíteni?
Ha az "alapoktól" dolgot úgy érted, hogy mindent magadtól írni meg, akkor soha.Másik kérdésem: PHP-ról ASP.NET MVC-re átmenni mennyire nehéz?
Mit jelent az, hogy átmenni? -
cucka
addikt
Akkor úgy érted, hogy mindig használjak fel CMS-t és azt bővítsem?
CMS-t vagy valamilyen framework-öt.
Persze, ha otthon hobbiból programozgatsz, akkor úgy fejleszthetsz, ahogy akarsz, ártani nem árt.Úgy értem, hogy ha egy PHP-s oldalt megcsinálok, akkor azt annak alapján könnyedén megtudom-e csinálni annak az ASP.NET MVC-s klónját?
Gondolom igen.
(Egyébként [moderálva] is ritkán szoktak kérdezni. Minek megírni, amit már megírtál? Egyáltalán, változtat bármit, ha könnyű/nehéz újra megírni?)[ Módosította: 7 ]
-
Siriusb
veterán
XAMP-ot még nem használtam, de
- a httpd.conf fájlban engedélyezd a virtuális host-ot, amennyiben létezik az alábbi conf fájl:
# Virtual hosts
Include conf/extra/httpd-vhosts.confilletve a
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>részt vagy teljesen kikommenteled, vagy mindenhol specifikusan engedélyezed, amit kell.
- a httpd-vhosts.conf-ban valami hasonlót kellene alkotni, útvonalakat, neveket írd át, valamennyire megpróbáltam rád szabni:
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "/lampp/srv/http"
ServerName localhost
ServerAlias localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/home/lacce/tshirtshop"
ServerName tshirtshop
ErrorLog "/lampp/var/log/httpd/tshirtshop-error_log"
CustomLog "/lampp/var/log/httpd/tshirtshop-access_log" common
</VirtualHost>- hosts fájl:
127.0.0.1 localhost.localdomain localhost tshirtshopHirtelen ennyi jut eszembe, ami kellhet.
Szerk: kár volt ennyit írni
[ Szerkesztve ]
-
Lacces
őstag
Én úgy vettem észre, hogy itt van a probléma:
az application.php fájlban:
// Class constructor
public function __construct()
{
// Call Smarty's constructor
parent::Smarty();
// Change the default template directories
$this->template_dir = TEMPLATE_DIR;
$this->compile_dir = COMPILE_DIR;
$this->config_dir = CONFIG_DIR;
}
}
?>De hogy mit kéne azt nem tudom.
-
Sk8erPeter
nagyúr
Nem a Linux-disztribúcióval van a baj, hanem a beállításaiddal.
Szerintem épp az a gond, amit ír, hogy nem létezik MySQL-ben a "kontrollfelhasználó".
Van egy ilyen rész a phpMyAdmin config.inc.php-jében (egyáltalán van ilyened?!):
$cfg['Servers'][$i]['user'] = 'phpmyadminkontrollfelhasznalo';
$cfg['Servers'][$i]['password'] = 'ezmegazajelszo';
(nyilván a megfelelő nevet és jelszót változtasd meg, ez csak példa)
Itt eszerint léteznie kell a "phpmyadminkontrollfelhasznalo" felhasználónak MySQL-ben, aki "ezmegazajelszo" jelszóval tud belépni. Legyenek meg a jogosultságai a megfelelő phpMyAdmin táblához.
Egyébként ez kb. 10 perces szívás max., ha használod a phpMyAdminhoz mostanában alapból adott setupot, ezt simán a phpMyAdminon belüli setup könyvtárban éred el.
Ez elkészíti neked a megfelelő config.inc.php konfigfájlt, úgy, hogy Te grafikus felületen pötyögöd be a szükséges adatokat (több fülön kitöltöd, és készen vagy). A folyamat végén le kell tölteni az elkészített konfigfájlt, és berakni a phpMyAdmin gyökérkönyvtárába.
Kérdezz, ha elakadtál.Sk8erPeter
-
Sk8erPeter
nagyúr
Nincs baj a XAMPP-pal, valóban jó kezdőknek, de mondjuk szerintem ez inkább Windows-nál igaz, mert Linux-disztribúciók esetén ahogy Tele von Zsinór említette, többnyire lehetőség van arra, hogy egyszerre lehúzd az összes függőséget pl. phpMyAdminhoz, ez ugyanúgy telepít is mindent, amire szükséged lehet. Windows-nál meg ez megoldandó kérdés, így ott EasyPHP, XAMPP, AppServ, amit általában elsők között említenek, mert ez egy csomagban felrak mindent, ami egy alapvető webszerverhez kellhet.
Mondjuk IIS-nél is van ilyen függőség-ellenőrzés, erre példa a Drupal vagy Joomla, ha rámész Web Platform Installer használatánál, hogy töltse le őket, akkor eleve függőségként lehúzza a PHP-t és MySQL-t is. (Amúgy érdekes, hogy úgy tűnik, a Microsoft nyit az opensource-dolgok felé is.)"Furcsa mód, itt kérte telepítésnél a mysql, egy felhasználót, és egy jelszót! (úgyhogy így utólag értem már mire gondolsz, ha erre gondoltál)"
Nem, nem erre gondoltam. Amikor telepíted a MySQL-t, kell egy root felhasználó is, aki az egésznek az adminisztrátora, mindenféle joggal. A phpMyAdminnál van egy kontrollfelhasználó is, ami pl. "könyvjelzőzni" tud bizonyos query-ket, naplózni különböző szempontok alapján, stb., ennek nem szabad megadni a root-jogot (ne legyen már mindenhez joga, mi van, ha pl. biztonsági rés vagy egyéb hiba maradt a "rendszerben", akkor ne csinálhasson bármit). Kell a phpMyAdminnak egy külön tábla MySQL-ben (persze ez elvileg nem kötelező), ebbe írogathat, de ahhoz hozzá is kell férnie.
Amúgy egyáltalán nem fértél hozzá a MySQL-hez?"Tudom, hogy a var/www-ben kell lenni a weboldalnak amit kezelni akarok."
Nem, oda rakod, ahova akarod, csak legyen elérhető a webszerver számára, és konfigold úgy a webszervert, hogy az adott domain document rootja ide legyen irányítva."1. HOgyan tudom ezekután a böngészőből elérni a phpmyadmin-t?"
Nem értem a kérdést.
Húzd le az egész csomagot úgy, ahogy Tele von Zsinór mondta.2. kérdésre: a PHP futtatásához webszerver kell (vagy konzolon keresztül is tudod futtatni, de ezt most hagyjuk), különben nem fog futni a PHP interpretere, értelmezője/"fordítója", így a kódod nem fog "lefordulni".
A HTML-kódok megjelenítéséhez ez nem szükséges, azok kódját a böngésző értelmezi és megjeleníti.Sk8erPeter
-
Tele von Zsinór
őstag
phpmyadmin: http://localhost/phpmyadmin
Ennek működnie kell, ha nem teszi, valamit elrontottál. Ennek a csomagnak a telepítésekor rákérdez, akarod-e, hogy konfiguráljon webszervert, ott kiválasztottad, hogy igen, az apache-ot?
-
Siriusb
veterán
Próbáld meg így, nálam ezek szerint van beállítva:
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps
Emlékeim szerint nálam csak akkor indult el a phpmyadmin, amikor a webapps könyvtárakat is hozzáadtam. Viszont nálad nem volt semmi megadva, azaz üresen hagyva ezt a sort nem kellene hatással lenni a helyzetre. Hmmmm.Szerk:
esetleg még annyi, hogy a log fájlokat érdemes lenne megnézni, lehet valami jogosultság probléma van.[ Szerkesztve ]
-
Siriusb
veterán
/var/log/ könyvtár.
Ezt az oldalt láttad már? Esetleg érdemes lenne átnézni.
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
Ennek semmi köze a XAMPP-hoz! Legfeljebb annyiban, hogy ott alapból a php.ini-ben nem voltak elnyomva a hibajelzések.
De ez nem "debugger", ne keverjük a fogalmakat. Ez csak simán kiírja a hibaüzeneteket.
Kotord elő a php.ini-t, és keresd meg az error_reporting részt.
Nézd meg, hogy jelenleg mi van beállítva.
Én ezt a beállítást javaslom fejlesztésre:
error_reporting = E_ALL | E_STRICT
Ez a "legszigorúbb" hibajelzés, mindent kiír.
Egy igényes programozó megszünteti a hibajelzések okát, nem pedig láthatatlanná teszi őket.
Engem személy szerint kiráz a hideg attól a mentalitástól, hogy "ugyan már, ki nem szarja le a notice-okat, nyomjuk el, nem kell annak látszania, szedjük ki az error_reportingból, azt kész, meg van oldva". Na persze, majd amikor azzal fog a fejlesztő időt elkúrni, hogy rájöjjön, vajon miért nem működik valami (pl. tömbindexelésnél elgépelés miatt), akkor változtat a hozzáállásán. (vagy nem, az a menthetetlen eset)
Aztán keresd meg a display_errors-t:
display_errors = On
Ha még alaposabban szeretnéd:
display_startup_errors = OnViszont fontos hozzátenni, hogy ezek a hibajelzési beállítások csak a fejlesztési fázisra vonatkoznak. Utána szigorúan tilos kiíratni ezeket a hibákat! Többek közt az is egy sebezhetőségi pont. Az éles rendszeren kezeld a hibákat megfelelően, csakis belső naplózást használj a hibajelzések tárolására, ne írass ki belőlük egyet sem.
[ Szerkesztve ]
Sk8erPeter
-
Tele von Zsinór
őstag
Egyrészt amit a kollega mondott az error_reporting beállításáról (meg a notice-ok irtásáról), másrészt mégegy csomagtipp: php5-xdebug. Felrakod, apache-t újraindítod, más dolgod nincs is (azért phpinfo()-ban ellenőrizheted ).
Az xdebug egy borzasztóan jó eszköz fejlesztés közben. Az egyik legalapabb dolog, hogy az el nem kapott exceptionök nem egy egysoros valamik lesznek, hanem egy szép, valamennyire formázott táblázat, amiben ott a stack trace is. Másrészt a var_dump kimenete is sokkal olvashatóbb lesz. De a kedvencem a debugger - én netbeans-zel használom, és működik, amit más (c++, delphi, c#, akármi) nyelvek IDE-jében megszokhattál: step-by-step debug, watch-ek és egyéb finomságok.
[ Szerkesztve ]
-
Tele von Zsinór
őstag
-
Sk8erPeter
nagyúr
Most kezdőként komolyan webáruház fejlesztésével akarsz kezdeni? Szerintem tegyél le róla. Nem azért, mert képtelen lennél megcsinálni, hanem mert olyan szinten komplex, és elképesztő időelkúró tevékenység, de legfőképp azért, mert nagyon jó webshopmotorok vannak készen, amiket folyamatosan foltozgatnak az esetleges felfedezett biztonsági vagy egyéb hibák miatt. Így egyre nehezebb feltörni és megborítani őket.
Ha PHP-t szeretnél tanulni, ne webshoppal kezdd, hanem előbb tanulgasd meg, hogy kell formokat validálni, feldolgozni, adatbázisba tölteni az adatait, onnan lekérni a feltöltött adatokat, aztán jöhetnek a komplikáltabb dolgok is.
Persze ahogy érzed, de én a helyedben tuti, hogy a meglévő igen széles ingyenes webshop-kínálat ismeretében NEM épp webshop kódolásával cseszném el az időt.
De ez igaz szerintem haladókra is, ha nem muszáj, akkor nem elejétől kezdve kellene megírni egy webshopmotort, hanem inkább továbbfejleszteni egy meglévőt.[ Szerkesztve ]
Sk8erPeter
-
Peter Kiss
őstag
-
DeltaPower
addikt
Lényegében az történik, amit írtál, így működnek a "változó változók".
$valami='akarmi';
$elso='valami';
// ez a két sor ugyanazt jelenti
echo $valami; // 'valami' nevű változót írja ki
echo ${$elso}; // a $elso tartalmával megegyező nevű változót írja kiA { }-ek el is hagyhatók, csak abban az esetben szükséges, ha enélkül nem egyértelmű a megadás (pl. $$tomb[0] esetén, nem mindegy, hogy a $$tomb nevű tömb 0-ik eleme, vagy a $tomb[0] tartalmával egyező nevű változó)
Az általad hozott példa, a {${alma}} viszont nem biztos, hogy működik, mivel az 'alma' konstans tartalmának megfelelő nevű változót jelenti, konstans használata pedig nem tudom, hogy megengedett-e ilyen kifejezésben.
[ Szerkesztve ]
"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
-
Sk8erPeter
nagyúr
Szerintem meg itt köze nincs a mutatókhoz a dolognak (hogy azt akarná "visszahozni").
Mindenesetre én úgy gondolom, hogy ezzel csak olyan szinten érdemes foglalkozni, hogy tudd, ilyen szintaktika is van, értsd is meg, ha valakinek a kódjában ezt látod, de Te lehetőleg kerüld el messzire. Tök feleslegesen teszi nehezen olvashatóvá a kódodat, nem tudok olyan esetről, ahol ezt ne lehetne kiváltani másik, szebb, átláthatóbb módszerrel. Pl. egy stringnél tök felesleges beleerőszakolni ilyen módon egy összetettebb változót, akkor már inkább válassz alternatívákat.
Pl. konkatenáld:
vegyük az általad említett példát átalakítva:
eredeti:
echo " {$startYear}–{$thisYear} ";
helyette szebb:
echo $startYear . '-' . $thisYear . ' ';
Nem kell szenvedni vele, hol is ér véget a kapcsos zárójel, plusz egy fejlesztőkörnyezetben jobban láthatóan ki van emelve a változónév (persze, felismeri az IDE, ezt is kiemeli, de amennyiben egyedi módon nem állítottad át valami nagyon elütő színre, akkor a stringen belül, a string default színével csupán félkövéríti, vagy hasonló, tehát akkor is nehezebben észrevehető egy ilyen változónév), ez is segíti az átláthatóságot.
A printf, sprintf-hez hasonló behelyettesítős módszerek is ezerszer szebbek ennél a kapcsos zárójeles bohóckodásnál.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
"Főleg, hogy jobb is a konkatenálás, azt a szebb példát, annak külön örülök
Így van egy Java feelingje az egésznek"
Attól lesz Java feelingje, hogy van benne egy konkatenálás? Hmm.Ja, assign - hozzárendeli egy $temp, vagyis átmeneti változóhoz a $_POST tömb aktuális értékét. Itt a foreach ciklusban ugyanis bejár egy tömböt, vizsgálja a tömb értékeit. De gondolom ezt nem kell magyaráznom, ha csináltál már ilyet Java-ban.
"az expected tömbben található értékek alapján, létrehoz változókat"
Na, akkor elölről. Az első if-nél azt vizsgálja, a $_POST aktuális tömbindexének értéke ($temp-ben van most) nem üres-e és szerepel-e a $required tömbben. Ha a két feltétel teljesül, akkor valamit mondjuk nem töltöttél ki az űrlapon, berakhatjuk a $missing tömbbe, jelezvén, hogy ez a kulcs hiányzik mondjuk, pampogunk a júzernek, hogy töltse már ki legyen szíves az adott mezőt.
Egyébként ha a $temp nem üres, az adott kulcs az $expected tömbben van, (pl. kitöltötte az elvárt mezőt), akkor hozzuk létre az azonos nevű változót (pl. $name)."Ha létrehozza is őket, akkor ezek sima egyszerű változók"
Azok milyenek? Gondolom azt a szót keresed, hogy "lokális" változó.
Attól függ. Ha ez az egész pl. egy függvényben szerepel, akkor csupán lokális scope-ja lesz, a függvényen belül. De lehet akár globális is, ha mondjuk ez egy fájlban "kívül" szerepel ez az egész Onnantól a függvények számára a global kulcsszóval ezek a változók elérhetők, amennyiben nem szüntetted meg azóta pl. unsettel.Sk8erPeter
-
DeltaPower
addikt
Ez a kód arra emlékeztet, amikor register_globals függő oldalaknál kellett minél gyorsabban megoldani, hogy kikapcsolt register_globals mellett is működjenek...
"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
-
PazsitZ
addikt
Erről eszembe jutott, hogy nekem volt régen ilyen próbálkozásom az sql result gyors ki-extract-olására függvényből global változóként. Persze nem szép. Ma már nem is használom/használnék ilyet, mármint global változót.
(#8038) Lacces: Ennek nincs köze a mutatókhoz. A miértre a magyarázat annyi, hogy ez egy script nyelv.
$fetchResult = mysql_fetch_assoc($localpSQLResult);
if ($fetchResult){
foreach($fetchResult as $var_name => $var_value)
{
$var_name = "q_$var_name";
global $$var_name;
$localGlobalVarsArr[] = $var_name;
$$var_name = $var_value;
}
return true;
}
Így global változóként létrehoztam az sql eredményét egy q_ (query) prefix-es változóként.
De a neveket le is tároltam, hogy egy fajta garbage collect-ként üríteni tudjam őket.
Fetch esetén ugye mindig felülíródott a változó tartalma, következő querynél ez a gc opció default lefutott, de szükség esetén letiltható volt.(#8041) Sk8erPeter : Alapvetően szerintem nem ördögtől való dolog ez, persze azért nem kell túlzásba vinni.
Én pl. Factory pattern esetén szoktam használni.Bár itt nem változóként, használod fel a változóban tárolt sztringet, hanem osztálynévként, de a logika hasonló.
Definiálsz sztring konstans értéket a lehetséges osztályok neveivel, majd azáltal pédányosítod a megfelelő osztályt./**
*
* @param const $SQLLayerType SQLLayer constant
* @param DBObj $db
*/
public function __construct($SQLLayerType=null, DBObj $db=null) {
$list = array(SQLLayer::SELECT, SQLLayer::INSERT, SQLLayer::UPDATE, SQLLayer::REPLACE, SQLLayer::DELETE);
if(is_null($SQLLayerType) || !in_array($SQLLayerType, $list)){
$this->SQLLayerType = SQLLayer::SELECT;
}
else $this->SQLLayerType = $SQLLayerType;
$Class = "SQL" . ucfirst($this->SQLLayerType);
$this->SQLObj = new $Class($this->SQLLayerType, $db);
if(!is_null($db)) $this->SQLObj->table($db->getTableName());
}[ Szerkesztve ]
- http://pazsitz.hu -
-
Sk8erPeter
nagyúr
Szerintem rossz a fájlod (vagy fájljaid) karakterkódolása.
Rakd fel a Notepad++-t, nyisd meg a fájljaidat, és az "Encoding" menüpontban menj rá, hogy "Convert to UTF-8 without BOM". Ennek megfelelően a meta tagekben is legyen UTF-8 karakterkódolás.
Meg nyomathatsz egy ilyen headert a PHP-fájljaid elején:
header('Content-Type: text/html; charset=utf-8');Szerk.: Athlon64+ 16 másodperccel előbb írt.
(#8057) Retekegér: ja, szerkesztettem, mert eszembe jutott, mi van, ha az UW kicsit elmaradt a fejlődésben, és még mindig csak PHP 4 van fent... Mondjuk azért remélem nem.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
Szerintem használd azt, ami neked kényelmesebb. Az Eclipse és a NetBeans egyaránt teljesen jó lehet. Nem hinném, hogy az Eclipse kevesebbet tudhatna a NetBeans-nél PHP-fejlesztéshez, szerintem mindkettő beállítható úgy, hogy hasonló képességű legyen, de majd szól valaki, ha mégis komoly hiányosságot fedezett fel valamelyikben.
... és mindkettő ingyenes... ez eléggé mellettük szól.
[ Szerkesztve ]
Sk8erPeter
Új hozzászólás Aktív témák
- Figyelőkamera (autóba, lakásba) + 32GB SD kártya
- Raptor PC / Xeon E5-1660 - 16 szál / RTX 4060 / 64GB RAM / 2db Intel Ipari SSD / Foxpost
- Samsung telefonok felvásárlás! +36203990877
- Apple készülék felvásárlás azonnal! Iphone, Ipad, Apple Watch, MacBook +36203990877
- RÉSZLETFIZETÉS.SZLA.GAR. LENOVO LEGION SLIM 5 16AHP9 Ryzen 7-8845HS , RTX 4060 közel 3 év garancia
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest