Új hozzászólás Aktív témák
-
paramparya
őstag
$fileCount = 0;
$dirHandler = opendir( 'utvonal' );
while ( ( $file = readdir( $dirHandler ) ) !== false )
{
if( $file != '.' and $file != '..' )
{
$fileCount++;
}
}
closedir( $dirHandler );
és a fileCountban ott lesz a fájlok száma
persze ez beleszámolja a könyvtárakat is!
[Szerkesztve] -
paramparya
őstag
Persze, felmásolod a php-t, és van benne cli (command line interface, az futtatja parancssorból a php kódodat.)
PHP4-ben külön cli van, 5-ben már a php.exe végzi ezt...Bár ha php-vel grafikát akarsz varázsolni, meg UI-t csinálni, akkor csináld a szokásos módon:
telepítesz apache-ot, feltelepíted és bekonfigurálod hozzá a php-t, és kész is vagy, esetleg telepítesz egy phpmyadmin-t mellé, és már megvan a kezelőfelületed is -
cucka
addikt
a geolocation mondjuk 95%-os pontosságú (most mondtam hasból egy számot). statisztikánál érdemes és hasznos figyelni, de kereskedelmi weboldal megjelenítését erre építeni nem lehet.
mellesleg van rengeteg fullextrás ingyenes statisztika, nem látom, miért érné meg sajátot írni.
[ Szerkesztve ]
-
Tele von Zsinór
őstag
Nem látom a kódot, ezért csak tipp: kimenetet generálsz, és utána akarsz http fejlécet írni, amire figyelmeztet is a php (ha olyan az error_reporting), hogy hiba és nem lehet.
Gyors, tüneti megoldás az output buffering (ob_start és társai) használata, de a szép (és karbantartható) megoldás az alkalmazáslogika és a kimenet szétválasztása.
Ha nem hiányzik az exit, akkor ne is használd még egy megjegyzés: az ilyen átirányítás után még lefut a scripted, nem szakad meg azonnal. Továbbá gyakran le van tiltva az ilyen átirányítások automatikus követése, illik a kimenetbe legalább annyit rakni, hogy "átirányítunk ide: link". -
cucka
addikt
Kapcsold be a hibajelzést: error_reporting néven keresd meg a php.ini-ben és állítsd E_ALL-ra. Utána olvass vissza pár odlalt, kb. 1-2 hete volt erről szó, hogy a http header-öket módosító műveletek előtt (pl. ilyen a header() függvény) nem szabad kiírni semmit a standard kimenetre.
mod: még valami. mikor kell exit utasítást használni?
Alapvetően nem kell sehol exit-et használni. Amúgy pont ugyanazt csinálja, mint a die(), két néven fut ugyanaz a nyelvi elem. -
HolyDay
tag
ha jól értem, akkor ez egy regisztráció.
én a következőt tenném az ilyen F5-ös szívások elkerülése végett:
még mielőtt beszúrnék egy új sort az adatbázisba, ellenőrizném, hogy a felhasználóhoz tartozó egyedi azonosító (pl a username stb) létezik-e már az adatbázisban. Ha létezett már, akkor eldobatnám a kezdőlapra. -
Tele von Zsinór
őstag
Localhoston sem tudod állítani?
Más: querybe escapelés nélkül ne rakj felhasználótól kapott értéket, valamint ne építs a bekapcsolt register_globals-ra. (select * from fotabla... sor, a $felhnev nem kap értéket, gondolom az $_POST["felhnev"] akart lenni).
Még pár megjegyzés a kódhoz:$sorok = mysql_num_rows($eredmeny);
if ($sorok > 0)helyett
if (mysql_num_rows($eredmeny)) {...
tömörebb, jobban olvasható, valamint: a $mindenoke legyen sima igaz/hamis, az elején állítsd hamisra, a levél küldésekor igazra, és a végén a feltétel így ez lesz:
if (!$mindenok)
-
Tele von Zsinór
őstag
Kimenet: amit elküldesz a usernek, kb. amit kiprintelsz/echozol
Alkalmazáslogika: például míg összeszedsz az adatbázisból egy blogbejegyzést és a kommentjeit, aztán letárolod változókban.
Szétválasztás: a kódod úgy csoportosítod, hogy semmi ne menjen a kimenetre, amíg az alkalmazáslogika nem végzett, utána jön csak az output összeállítása a változókba letárolt dolgok alapján.
Olvasnivaló: az MVC tervezési minta, bár kezdőként nem tudom, ez nem túl sok-e: [link] -
HolyDay
tag
ellenőrzés: illeszd be kérlek azt a kódod, mivel ellenőrzöd!
egy példa az ellenőrzésre:
if(isset($_POST['reg_button'])){
if(user_is_not_registered($_POST)){ // ez a függvény ellenőrzi, h a user regisztrált-e már korábban
register_user($_POST); // ez a függvény regisztrálja a usert
}
else{
$page = "http://www.example.com";
jump_to_page($page);
}
}ha már van kimeneted, akkor érdemes javascripttel eldobni a felhasználót a kívánt lapra. Erre egy példa a jump_to_page() függvény:
function jump_to_page($page){
echo "<script type=\"text/javascript\">";
echo "location.href='".$page."'; ";
echo "</script>";
}ezek a kódok csak példa jellegűek, de használhatóak. Nyilván vannak elegánsabb és a feladatot szebben megoldó kódok is.
-
HolyDay
tag
az ellenőrzés szerkezete jónak tűnik. egy lehetséges hibaforrás az sql lekérdezésben lehet. futáskor iratsd ki a query stringedet, majd futtatsd le az sql szerveren (phpmyadmin, ha rendelkezésre áll). az a gyanúm, hogy olyan lekérdezést futtatsz, ami mindig 0 sorral tér vissza.
látom időközben megoldottad.[ Szerkesztve ]
-
cucka
addikt
Localhosthoz hozzá lehet férni megosztott webhosting esetén?? Sztem nem.
Kb, mintha az extra.hu-n dolgoznék, csak fizetős, és reklámmentes.
A localhost az a saját géped, tehát ennek a mondatodnak nincs értelme, természetesen a saját gépedhez hozzáférhetsz.Miért, és mire jó ez az escape cucc? Erről van szó?
Ez arra jó, hogy a fölös karaktereket eltávolítsa? Ezt a js már megteszi.
SQL injection. Olvass utána, igencsak fontos tudni, hogy működik és hogy lehet védekezni ellene.A bekapcsolt register_globals azt jelenti, hogy műxik a változók globálissá tétele?
Kipróbáltam, műxik. Miért ne építsek rá? Nem megbízható, vagy lehet, hogy kikapcsolják?
A register_globals bekapcsolás után azt csinálja, hogy a $_POST és $_GET tömbökben kapott paramétereket globlális változóként is el lehet érni. Tehát a $_GET['param'] értékét a $param nevű globális változóba pakolja.
A global kulcsszónak (amit amúgy totál rosszul használsz) semmi köze ehhez. -
fordfairlane
veterán
(#2506) fordfairlane: Köszi, de még nem sikerült működésre bírnom.
Van egy olyan függvény, hogy headers_sent(), ami jelzi, ha már ki lett küldve a fejléc, és a további header() függvények, mint az átirányításos példád, már nem fognak működni.
if(headers_sent()) echo "Redirecthez tul keso, vilageges";
x gon' give it to ya
-
Tele von Zsinór
őstag
Cucka kollega válaszát ennyivel egészíteném ki: a saját gépedre érdemes felrakni apache-php-mysql triót[1] és ott fejleszteni, gyorsabb és egyszerűbb is, egyrészt amiatt, hogy nem másik gépre kell feltölteni mindig, hanem csak mentés-alttab-f5; másrészt jóval beszédesebbre tudod állítani a hibaüzeneteket, a felmerült headeres problémára is kaptál volna ilyet.
"Js már megteszi" - *soha* ne bízz semmiben, amit a felhasználótól kapsz, a bizalom egyik kihasználása az említett SQL injection, de létezik pélául html injection, vagy xss is.
A register_globals régen alapértelmezetten be volt kapcsolva, sokan építettek rá, de elég nagy biztonsági hibákat generált, így most az alap a kikapcsolt, és tudtommal php6-ban már nem is lesz ilyen.[1] kezdetnek javaslok valami egybecsomagot, mint az appserv, wamp, easyphp vagy az xampp. Én a legutóbbit használom.
[ Szerkesztve ]
-
-
supercow
őstag
Szerintem mezei hoszting szerveren nehéz, a websocketnek kell külön port és parancssoros PHP lehetőség. Esetleg dedikált gépen vagy virtuális szerveren ahol adnak shell jogot. Esetleg kiindulásnak jó ez a chat.
Én is épp websockettel dolgozom, csak nem játékon.In nomine Pasta, et Fusilli, et Spaghetti Sancti. Ramen.
-
supercow
őstag
Tesztelésre én is a saját routeremet állítottam fel, USA-ból csatlakoztak hozzá tegnap, a szerverem még mindig fut, majdnem 24 órája. Port forward routerről saját gépre, 25/2 Invitel DSL kapcsolat és nincs vele gond, instant mennek az adatok. TP-Link 1043ND a router.
Websocketen kívül nem tudom van-e olyan technika ami nem terheli a hálózatot/szervert az állandó kapcsolódással. Ez a baj az X másodkercenként történő lekérésekkel, ahogy mondod favágó de máshogy nem megy.[ Szerkesztve ]
In nomine Pasta, et Fusilli, et Spaghetti Sancti. Ramen.
-
supercow
őstag
egyébként amit csináltál nem "gáz megoldás" hanem long polling.
In nomine Pasta, et Fusilli, et Spaghetti Sancti. Ramen.
-
fordfairlane
veterán
Meg voltam róla győződve, hogy ezért akasztás jár komolyabb fejlesztői körökben, de akkor mégsem.
Nem jár akasztás. Azokon a platformokon, ahol nem létezik sem push message, sem permanens kétirányú adatkapcsolat (socket jó darabig nem volt, és a régi böngészőkben ma sincs), csakis a polling marad. A kliens kénytelen rendszeresen a szerverhez fordulni, és lekérdezni, van-e változás, mivel a szerver nem tudja értesíteni erről.
[ Szerkesztve ]
x gon' give it to ya
-
supercow
őstag
Kiindulásnak https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet
Jelszókezeléshez használd a beépített password_hash() / password_verify() APIt, esetleg PHPass-t, ne állj neki újra feltalálni.
És mindig minden adatot kétszer validálniIn nomine Pasta, et Fusilli, et Spaghetti Sancti. Ramen.
-
supercow
őstag
Igen, cészerű böngészőben (input field paraméterek, js) és mivel azt ki lehet játszani, a szerver oldalon is feldolgozás előtt még egyszer php-ban is. Nemrég volt róla szó itt a topikban, kicsit olvass vissza.
Attól függően hogy mennyire vagy paranoid, lehet pl CSRF tokennel kiegészíteni az űrlapokat.In nomine Pasta, et Fusilli, et Spaghetti Sancti. Ramen.
Új hozzászólás Aktív témák
- ÚJ Apple Watch Ultra 2 GPS + Cellular 49mm - titántok, alpesi szíj
- APPLE MacBook Air 2020 13" Retina - M1 / 8GB / 256 GB SSD / MAGYAR / 96% akku, 81 ciklus / Garancia
- LG NanoCell 55NANO766QA Halvány píxel csík
- Philips 58PUS8545/12 1 ÉV GARANCIA Játék üzemmód
- Tyű-ha! HP EliteBook 850 G7 Fémházas Szuper Strapabíró Laptop 15,6" -65% i7-10610U 32/512 FHD HUN