Hirdetés

2024. június 10., hétfő

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  PHP programozás (kiemelt téma)

Hozzászólások

(#13051) Soak válasza Speeedfire (#13050) üzenetére


Soak
veterán

Ahogy rt06 írta, valószínűleg nfs-t használnak (mint általában minden hasonló vállalkozás) .

(#13052) #68216320


#68216320
törölt tag

Urak.

Mennyire elfogadott/helyes egy asszociatív tömb kulcsának a $valami[kulcsindex] külalak?
Úgy tudom aposztrófok között illik használni, így: $valami['kulcsindex']
Mégis egyre több helyen látom csak simán beírva a kulcsot.

(#13053) tildy válasza #68216320 (#13052) üzenetére


tildy
nagyúr

Khm... Aposztróf közt használd, kivéve ha szám. És szimpla aposztrófot használj.

[link]

[ Szerkesztve ]

"Tartsd magad távol azoktól, akik le akarják törni az ambíciódat! A "kis" emberek mindig ezt teszik, de a nagyok éreztetik veled, hogy te is naggyá válhatsz" - Mark Twain

(#13054) Speeedfire válasza tildy (#13053) üzenetére


Speeedfire
nagyúr

A dupla aposztróffal (idézőjel) is nem is megy? :)

[ Szerkesztve ]

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#13055) Sk8erPeter válasza #68216320 (#13052) üzenetére


Sk8erPeter
nagyúr

Semennyire nem elfogadott, és nem helyes, mert notice-t kapsz, ha úgy használod.

(#13054) Speeedfire :
úgy is megy, de valamelyest lassabb lehet a változó-behelyettesítések (vizsgálata) miatt.
Szóval tényleg érdemes aposztrófot használni, mondjuk ha változóval kell konkatenálni, úgy is jobb szerintem olvashatóság szempontjából.

Sk8erPeter

(#13056) #68216320 válasza tildy (#13053) üzenetére


#68216320
törölt tag

Mivel asszociatív így a numerikus ki is zárható gondolom. Természetesen normál, egyszeres aposztróf ( ' ) a megfelelő. Csak nem értem miért találkozok sok kódban ennek a hiányával. Nem dob hibát a PHP, de valahogy fura. Na mind1. A net tele van furcsa dolgokkal :)

Sk8erPeter: Aha, csak azokat nem látom. Hogy lehet teljes error reportot kapni? Tehát gondolok itt arra, hogy nem csak azokat a hibaüzeneteket, amitől nem fut a program, hanem a warning-okat is. Mint pl. C++ fordítóknál. Sajnos szerintem néhány helyen ugyanis másolás miatt nálam is aposztróf nélkül lehet a key.

[ Szerkesztve ]

(#13057) tildy válasza #68216320 (#13056) üzenetére


tildy
nagyúr

Ahh, oke, altalanossagban irtam. :) :B

A PHP amikor elkezdtek fejleszteni anno, nagyon mas volt a normal tipusos , kotott nyelvektol. Ez sok esetben lehet epp elony, de sokszor hatrany is.
Ma ahogy latom , azert mar megy a coding standard itt is. Nem dob hibat a PHP persze, pont a fentiekbol fakadoan amugy.

Ha ilyen coding style warningot akarsz kapni, hasznalj codesniffert. Mi PSR2-re nezzuk.

"Tartsd magad távol azoktól, akik le akarják törni az ambíciódat! A "kis" emberek mindig ezt teszik, de a nagyok éreztetik veled, hogy te is naggyá válhatsz" - Mark Twain

(#13058) #68216320 válasza tildy (#13057) üzenetére


#68216320
törölt tag

Közben sikerült bekapcsolnom az ini-ben.
error_reporting = E_ALL | E_STRICT

hááát... tanulságos :) a következő pár órában javítom a kódot :)

(#13059) tildy válasza #68216320 (#13058) üzenetére


tildy
nagyúr

Azzal csak ovatosan. Tesztrendszerben okes, amugy nem feltetlen jo bekapcsolva hagyni. error_logot nezegess meg.

[ Szerkesztve ]

"Tartsd magad távol azoktól, akik le akarják törni az ambíciódat! A "kis" emberek mindig ezt teszik, de a nagyok éreztetik veled, hogy te is naggyá válhatsz" - Mark Twain

(#13060) #68216320 válasza tildy (#13059) üzenetére


#68216320
törölt tag

Persze, ez csak az itthoni saját gépen van most bekapcsolva, amin fejlesztek. :K Iszonyat sok notice-t kaptam.

(#13061) Sk8erPeter válasza #68216320 (#13058) üzenetére


Sk8erPeter
nagyúr

Jól csináltad, ez localhoston, fejlesztői környezetben nyugodtan maradhat így. Ahogy tildy is mondta, arra viszont figyelj, hogy a notice-ok kijelzését viszont nem szabad úgy hagyni éles környezetben, ott, ahol már külső szemlélők olyan információkat is láthatnának ezáltal, amit nem szabadna (értsd: egy rossz szándékú illetőnek minden plusz információ csak további segítség). Éles környezetben is el kell azonban kapni minden hibát, azokat naplózni, és a felhasználónak csak "felhasználóbarát hibaüzenetet" megmutatni. (Pl. a felhasználó ne tudja, a kód hányadik sorában lett valami elrontva, vagy konkrétan mi volt a hiba.)

Sk8erPeter

(#13062) #68216320 válasza Sk8erPeter (#13061) üzenetére


#68216320
törölt tag

A tárhelyen, amit használok, ott minden log fájlba kerül. De ott is csak az error-ok, notice nem. Ha megprobálom PHP-n belül bekapcsolni, akkor az ini_set() fog kelleni nekem hozzá? Mert szeretnék notice-t is kapni a log fájlba. Az a helyzet, hogy eddig folyton enélkül dolgoztam és sok hibát ejtettem, amiket javítanék és sokat is tanulnék belőle.

Más: Bocsánat a nagyon amatőr kérdésért, de hogyan tudok változót létrehozni értékadás nélkül?
Azért kellene, mert rögtön egy ciklus ad hozzá/fűz hozzá értéket. Viszont a notice szól pl. a .= miatt, mert még nem létezik a változó. Gondolom a += miatt is szólna. Ilyesmi, hogy unsigned int szam; itt nem működne? Ha igen string esetén hogyan tudom megoldani?

És természetesen köszönöm a segítőkészségeteket eddig is.

(#13063) Soak válasza #68216320 (#13062) üzenetére


Soak
veterán

int esetén

$var = 0;

string eseten

$var = '';

vagy tömbnél

$var = array();

Igy már nem fog szólni semmit.

(#13064) tildy válasza Soak (#13063) üzenetére


tildy
nagyúr

Esetleg int eseten megadhato a tipus is ( altalaban mondjuk nem kell, de ha fuggvenyt irsz, neha erdemes odairni, milyen bemeneti paramot varsz) :
$var = (int) 0;

The casts allowed are:
(int), (integer) - cast to integer
(bool), (boolean) - cast to boolean
(float), (double), (real) - cast to float
(string) - cast to string
(array) - cast to array
(object) - cast to object
(unset) - cast to NULL (PHP 5)

[ Szerkesztve ]

"Tartsd magad távol azoktól, akik le akarják törni az ambíciódat! A "kis" emberek mindig ezt teszik, de a nagyok éreztetik veled, hogy te is naggyá válhatsz" - Mark Twain

(#13065) cucka válasza #68216320 (#13062) üzenetére


cucka
addikt

Igen, ini_set, amennyiben nincs kikapcsolva a szerveren.
Változót értékadás nélkül nem tudsz létrehozni.

(#13064) tildy
altalaban mondjuk nem kell, de ha fuggvenyt irsz, neha erdemes odairni, milyen bemeneti paramot varsz
Jó ötlet, sajnos primitív típusokra ez nem működik.

[ Szerkesztve ]

(#13066) #68216320 válasza Soak (#13063) üzenetére


#68216320
törölt tag

Igen, erre gondoltam én is csak értéket nem akartam adni neki csak típust beállítani, de akkor használom így. Köszönöm.

(#13067) fordfairlane válasza #68216320 (#13052) üzenetére


fordfairlane
veterán

Mégis egyre több helyen látom csak simán beírva a kulcsot.

A PHP a tömb indexelése során a jelöletlen (idézőjeltelen) karaktersorozatot stringgé konvertálja, amennyiben nincs ilyen nevű konstans. Ha viszont létezik, mert a script, vagy a PHP a jövőben definiál egy ilyen nevűt, abban a pillanatban megváltozhat a program viselkedése. Ezért kerülendő a $valami[kulcsindex] forma használata, amennyiben kulcsindex egy stringkulcs, nem pedig egy konstans.

x gon' give it to ya

(#13068) #68216320 válasza fordfairlane (#13067) üzenetére


#68216320
törölt tag

Teljesen érthető, köszönöm.

Más (ismét):

Küzdök a .htaccess rewrite funkciójával, hogy az úgynevezett szép URL-t megcsináljam. Már használom úgy-ahogy, de érdekelne, hogy ti milyen technikával oldanátok meg.

A jelenlegi .htaccess-em így néz ki:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteOptions MaxRedirects=10

RewriteRule \.(ico|js|css|gif|jpe?g|png)$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?parameter=$1 [L,QSA]
</IfModule>

Az véleményetek szerint mennyire jó megoldás, hogy a $_GET['parameter'] tömbömet figyelem és ha van benne érték akkor:
$tagok = explode('/',$_GET['parameter']);
foreach($tagok as $tag)
if($tag != '')
$params[] = $tag;

(#13069) Tele von Zsinór válasza Sk8erPeter (#13055) üzenetére


Tele von Zsinór
őstag

Az aposztróf vs. idézőjel sebességkülönbség egy mítosz - ha nincs benne változó, nincs mérhető differencia a kettő közt. Lást például ezt az írást az egyik php core fejlesztő tollából.

(#13070) Soak válasza Tele von Zsinór (#13069) üzenetére


Soak
veterán

egy mítosz

Most már. Mint látható az általad linkelt cikk első hozzászólásából is, korábbi verziókban még volt különbség, valószínűleg csak nem tudatosult azóta az emberekben a változás.

(#13071) rt06 válasza Soak (#13070) üzenetére


rt06
veterán

valami nagyon el lehetett cseszve azzal a teszttel, mert 4-es verzional sem volt merheto kulonbseg a ket modszer (aposztorf vs idezojel) kozott

Politikailag korrekt, valamint munkahely- és gyermekbarát aláírás, amiben egyáltalán nincsen p*na.

(#13072) Soak válasza rt06 (#13071) üzenetére


Soak
veterán

Én nem teszteltem, de a cikk író is 5ről beszél.

(#13073) rt06 válasza Soak (#13072) üzenetére


rt06
veterán

az altalad emlitett elso post viszont 4-esrol, ahol szinten nem volt merheto kulonbseg

Politikailag korrekt, valamint munkahely- és gyermekbarát aláírás, amiben egyáltalán nincsen p*na.

(#13074) Sk8erPeter válasza Tele von Zsinór (#13069) üzenetére


Sk8erPeter
nagyúr

Értem, ettől függetlenül viszont szerintem érdemes elkerülni az idézőjel használatát tömbindexeléskor, és lehetőleg egyéb esetekben is - természetesen ez pusztán szubjektív megítélés, de én rendkívül olvashatatlannak tartom a stringben "elrejtett" változók használatát a konkatenálás helyett.
Szóval szerintem PHP-ben idézőjel helyett aposztróf.

Sk8erPeter

(#13075) #68216320


#68216320
törölt tag

Tudtok arról valamit, hogy mindegyik PHP verzióban egyformán működik a következő:

if( isset($tomb['valami']) && $tomb['valami']==123 ) {
print('hello');
}

Arra gondolok tehát, hogy az ÉS kapcsolatnál, ha az első tag hamis kiértékeli-e a másodikat azért?
Azért érdekelne mert C/C++ fordítóknál futottam bele ilyen hibába és most is van Notice hibám, amit ilyen módon könnyen tudnék korrigálni. Feltéve, ha minden verzióban az első tag hamis eredménye után nem vizsgál tovább.

(#13076) fordfairlane válasza #68216320 (#13075) üzenetére


fordfairlane
veterán

Ez így jó, a bejövő paraméterek ellenőrzését PHP-ban így szokás megoldani.

x gon' give it to ya

(#13077) #68216320 válasza fordfairlane (#13076) üzenetére


#68216320
törölt tag

Ez nagyon jo hir, mert meguszok egy ujabb if-else-t. Koszonom.

(#13078) Tele von Zsinór válasza Sk8erPeter (#13074) üzenetére


Tele von Zsinór
őstag

És ez így teljesen jogos, csak arra akartam rámutatni, hogy a mai php-ben már nincs mérhető diff a két megoldás közt.

Egyébként az elrejtett változókat én sem szeretem. Ha bekerül, akkor minimum a {$var} jelölés, ha sok változó kerül bele, akkor pedig sprintf()-et használok.

(#13079) Sk8erPeter válasza Tele von Zsinór (#13078) üzenetére


Sk8erPeter
nagyúr

Jó is, hogy jelezted. :)
Na igen, a placeholderek használata is jóval elegánsabb megoldás.

Sk8erPeter

(#13080) cstom


cstom
aktív tag

Sziasztok! Következő problémám lenne: készítettem egy weblapot (wordpress) localhoston (xampp server), viszont ha helyi hálón egy másik gépen akarom megnézni, akkor csak a szöveges részét tölti be, össze-vissza tördelve. - Azon a gépen amelyen készült, tökéletesen működik. -Próbáltam Wamp serveren is, a probléma ugyanaz. Ötlet?

[ Szerkesztve ]

(#13081) Sk8erPeter válasza cstom (#13080) üzenetére


Sk8erPeter
nagyúr

Ennyiből ember legyen a talpán, aki megmondja. Valószínűleg valami szerverbeállítás különbözik, nincs engedélyezve a mod_rewrite, vagy valami tök más jellegű hiba van, így nem fogjuk tudni kitalálni ennyiből.

Sk8erPeter

(#13082) cstom válasza Sk8erPeter (#13081) üzenetére


cstom
aktív tag

Fura, mert próbáltam joomlát is, azzal nem volt probléma.

(#13083) Sk8erPeter válasza cstom (#13082) üzenetére


Sk8erPeter
nagyúr

Hát nem jutottunk előrébb... :D

Sk8erPeter

(#13084) cstom válasza Sk8erPeter (#13083) üzenetére


cstom
aktív tag

Egy másik helyi hálós gépen így jeleníti meg már az alapértelmezett sablont is:

[ Szerkesztve ]

(#13085) Soak válasza cstom (#13084) üzenetére


Soak
veterán

Chrome -> F12 , ott dob hibát? Valószínűleg a css-t nem tudja elérni.

(#13086) cstom válasza Soak (#13085) üzenetére


cstom
aktív tag

Igen, én is arra gondolok. Közben felmerült még egy probléma. Azt a gépet amelyiken fut az xampp/wordpress az IP/oldal neve alapján érem el böngészőből. Viszont ha valamilyen hivatkozásra klikkelek a weblapon, az már localhost/valami -re irányítana, így viszont nem találja meg a kért oldalt. Hol tudnám ezt megváltoztatni?

[ Szerkesztve ]

(#13087) Soak válasza cstom (#13086) üzenetére


Soak
veterán

Mondjuk a host fileodat modositot, szóval pl a enweblapom.dev arra az ip-re mutat ahol futtatod a siteot. Plusz nyilván a linkeket is modositani kell ugy, hogy a base url enweblapom.dev legyen. (ez könyü ha jól van konfigolva ha nem akkor az szívás) , utána meghivod az enweblapom.dev-et és behozza a siteodat.

Persze erre fel kell készíteni a webservert is.

(#13088) fordfairlane válasza cstom (#13086) üzenetére


fordfairlane
veterán

Ne localhostot, hanem azt az IP-t állítsd be hostnévnek a Wordpress konfigurációban, amilyen IP alatt a többi gép láthatja a kiszolgálógépet helyi hálózatban.

[ Szerkesztve ]

x gon' give it to ya

(#13089) cstom válasza fordfairlane (#13088) üzenetére


cstom
aktív tag

Ha a wp-config-ra gondoltál, ott átírtam a localhostot a kiszolgáló gép ip címére. Ez nem segített. Viszont ha a phpmyadmin/weblap adatbázis/wp_options/siteurl-t átírom a gép ip címre, akkor a kezdőlapot tökéletesen jeleníti meg. Viszont bármilyen linkre akarok kattintani az oldalon, ott már a localhost/xy-ról akarja lekérni az adatokat, tehát ismét error. Az lenne a legegyszerűbb, ha valahol meg lehetne adni, hogy a localhost helyett, mindig a ip cím legyen az alapértelmezett elérési útvonal.

(#13090) fordfairlane válasza cstom (#13089) üzenetére


fordfairlane
veterán

Admin oldal, settings -> general, wordpress address (URL), site address (URL).

[ Szerkesztve ]

x gon' give it to ya

(#13091) cstom válasza fordfairlane (#13090) üzenetére


cstom
aktív tag

Köszi, mint kiderült a wordpress address-t ha átírom, az ugyanaz amit fent leírtam, valamint egyből kihajít az oldalról, és csak phpmyadminba visszaírva az ip-t localhostra enged vissza. A site adress átírása viszont segített. Köszönöm!

(#13092) Speeedfire


Speeedfire
nagyúr

Be van állítva a timezone, de mégis azt írja, hogy nem jó.

date.timezone = Europe/Budapest

[ Szerkesztve ]

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#13093) rt06 válasza Speeedfire (#13092) üzenetére


rt06
veterán

csak egy tiip: ellenorizd, hogy nem windoze sortoreseket hasznalsz-t (van, ami nem szereti linux kornyezetben)

Politikailag korrekt, valamint munkahely- és gyermekbarát aláírás, amiben egyáltalán nincsen p*na.

(#13094) Speeedfire válasza rt06 (#13093) üzenetére


Speeedfire
nagyúr

Kitöröltem, újra írtam, de semmi. :(

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#13095) rt06 válasza Speeedfire (#13094) üzenetére


rt06
veterán

mivel irtad at? sorvegeket ellenorizted?
esetleg probald meg a date_default_timezone_set() parancsot, hogy arra mit mond
date_default_timezone_set( "Europe/Budapest" );

[ Szerkesztve ]

Politikailag korrekt, valamint munkahely- és gyermekbarát aláírás, amiben egyáltalán nincsen p*na.

(#13096) Speeedfire válasza rt06 (#13095) üzenetére


Speeedfire
nagyúr

Nano-val írtam át. Érdekes, hogy ha függvénnyel akarom beállítani, akkor sem jó. :(

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#13097) Sk8erPeter válasza Speeedfire (#13096) üzenetére


Sk8erPeter
nagyúr

Újraindítottad a webszervert, miután átírtad?
A Default timezone-nál is "Europe/Budapest" kéne, hogy szerepeljen, de nálad az a default UTC, szóval valami tényleg nem okés.

Sk8erPeter

(#13098) Speeedfire válasza Sk8erPeter (#13097) üzenetére


Speeedfire
nagyúr

Igen, újraindítottam. De lehet ez a php 5.4 szórakozik velem.

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#13099) Babetta-X


Babetta-X
senior tag

Sziasztok! Nagyon béna kérdésem lenne. Adott egy könyvtár, amibe külön mappába fel van telepítve a phpbb fórummotor, a wordpress rendszer meg a phpmyadmin adatbázis kezelő. Namost ha rámegyek az énoldalam.hu -ra akkor csak egy file kezelőt ad ki, amivel ha rámegyek az általam használni kívánt mappára bejön az adott mappa index.hu-ja én meg örülhetek magamnak. Én viszont azt szeretném, hogy csak az egyik index.hu jöjjön be az énoldalam.hu beírásakor. Ezt hogyan lehet megoldani? Én arra gondoltam gyökérkönyvtárban csinálok egy index.html-t és ezt valahogy ráirányítom az általam kívánt mappára, de biztos vagyok benne, hogy van ennél jobb megoldás is.

Válaszotokat és segítségeteket előre is nagyon köszönöm!

(#13100) CSorBA válasza Babetta-X (#13099) üzenetére


CSorBA
őstag

Szerintem valami ilyesmire gondolsz:

.htaccess segítségével az enoldalam.hu fő domaint a tárhelyen átirányítjuk az enoldalam mappában lévő index.php-ra. Ha mégsem erre gondoltál, akkor bocsi :)

Options -Indexes

# Turn on the rewrite enginge
RewriteEngine on

# Main domain
RewriteCond %{HTTP_HOST} ^(www.)?enoldalam.hu$

# Used subfolder (RewriteCond)
RewriteCond %{REQUEST_URI} !^/enoldalam/

# Additional settings.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Used subfolder (RewriteRule)
RewriteRule ^(.*)$ /enoldalam/$1

# Main domain and the used subfolder with index file
RewriteCond %{HTTP_HOST} ^(www.)?enoldalam.hu$
RewriteRule ^(/)?$ enoldalam/index.php [L]

Útvonal

Fórumok  »  Szoftverfejlesztés  »  PHP programozás (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.