- Android alkalmazások - szoftver kibeszélő topik
- VoLTE/VoWiFi
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Szívós, szép és kitartó az új OnePlus óra
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- CMF Phone 2 Pro - a százezer forintos kérdés
- Egyszerre legnagyobb és legkisebb is a Garmin Venu X1
- Mobil flották
- Samsung Galaxy A52s 5G - jó S-tehetség
Új hozzászólás Aktív témák
-
M.Úr
tag
válasz
Speeedfire #6327 üzenetére
Hát igen, ez ízlés és megszokás dolga. Én pl. tök logikátlanul (de legalább konzisztensen) így használom:
print "A valtozo_1 tartalma: ".$valtozo_1."<br />"; -
M.Úr
tag
válasz
Speeedfire #6325 üzenetére
Ez nem OOP gond. A sztringben található { } szerepéről itt olvashatsz bővebben:
PHP Manual: Strings (complex syntax)szerk.:
A második sorba nem kell a { }. A könyv hibája... sajnos neves könyvekben is előfordulnak hibák. Néha egész súlyosak (pl. a Sam's Advanced PHP Programming egy komplett fejezete...). -
Siriusb
veterán
válasz
Speeedfire #6278 üzenetére
000webhoston ez az üzenet, ha csak azt az egy parancsot tartalmazó fájlt próbálom futtatni böngészőből:
Warning: exec() has been disabled for security reasons -
Siriusb
veterán
válasz
Speeedfire #6278 üzenetére
Köszi. Ki is próbálom.
-
TomyLeeBoy
tag
válasz
Speeedfire #6268 üzenetére
Én is halogattam az ajax-ot mert nem akartam vele kínlódni mikor php-ban már elég jól kiismertem magam. Aztán egyszer rászántam magam, és fél nap olvasgatás, próbálkozás után már elég jó dolgokat tudtam megvalósítani ajax-al. Szerintem akárhogy is állsz a php-val, hajrá ajax!
-
Tele von Zsinór
őstag
válasz
Speeedfire #6254 üzenetére
A DomNodeList nem ArrayAccess interface, szóval $links[$n] helyett $links->item($n).
Másrészt a hibát okozó sor a $links->getAttribute() hívás, ami nincs is az én kódomban, nézd meg újra.A $n, $m változók feleslegesek (ezeket te az első és utolsó indexeknek használod) - a domx query összeállításakor megmondom neki, hogy csak a $_GET["start"] pozíció utáni linkek érdekelnek.
Most nincs időm kódot mutatni, de csináld azt, hogy foreach-csel mész, benne növelsz egy számlálót, ha az eléri a százat -> break. Ezen kívül a ciklusmagban mented a filet.
A mag után ha a számláló nem nulla (azaz volt feldolgozott link), akkor headerrel átirányítod úgy, hogy az új start a kapott start + a számláló értéke.A végén az url összeállítós részt nézd meg mégegyszer, a paraméter neve lemaradt.
A jelszavas témához: az md5 nem kódolás, hanem hashelés - pont az a lényege, hogy nem visszafejthető, az egyetlen törési módszer a brute force. Ebből a szempontból egyébként az md5 elavult, úgynevezett rainbow table módszerrel nagyon rövid idő alatt törhető a nagyjuk.
Ennek nehezítésére az egyik lehetőség a saltolás, amikor egy userenként más-más stringet fűzöl a jelszóhoz, és azt hasheled - így felhasználónként külön rainbow table kell, drasztikusan lassítva ezzel a törési kísérleteket.
Másik lehetőség egy erősebb algoritmus használata, mint az sha1 (160 bites 128 helyett).
Legjobb a kettő együtt: saltolt sha1. -
Tele von Zsinór
őstag
válasz
Speeedfire #6249 üzenetére
Ez is egy megoldás.
-
Tele von Zsinór
őstag
válasz
Speeedfire #6247 üzenetére
Ajaxot csináltál már? Nem bonyolult, a gondolatmenetem meg kifejtem bővebben:
ha nincs start paraméter, akkor egy olyan oldalt kap a kliens, ami betöltődésekor beállít egy változót nullára, majd elindít egy ajax kérést a háttérben, amiben átadja ezt a változót, mint start.
Az ajax kérés a start paramétertől indulva (annyiadik linktől) lement mondjuk 100 linket az oldalról, majd kiírja, hogy hányat mentett le (és csak ennyit ír ki).
Az eredeti oldal fogja ezt a számot, növeli ennyivel azt a bizonyos változót, majd új ajax kérést indít.
Az egész addig ismétlődik, amíg valamelyik kérés nullát nem ad vissza - azaz elfogytak a lementendő linkek.
-
Tele von Zsinór
őstag
válasz
Speeedfire #6245 üzenetére
Valószínűleg lejár a futásidő. Ingyenes tárhely, szóval valószínűleg tiltva a set_time_limit (azért nézd meg).
Ötlet: az oldal, ha paraméter nélkül hívod meg, csak annyit csinál, hogy ajax-szal meghívja önmagát mondjuk százasával növekvő start paraméterrel egész addig, amíg van mit letölteni (az ajax hívás eredményéből mondjuk).
-
Tele von Zsinór
őstag
válasz
Speeedfire #6243 üzenetére
Az általam tesztelt kód és a kimenetének eleje:
maerlyn@biliskner:~/tmp$ cat tmp.php
<?php
$domd = new DOMDocument();
libxml_use_internal_errors(true);
$domd->loadHTML(file_get_contents("http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/"));
libxml_use_internal_errors(false);
$domx = new DOMXPath($domd);
$links = $domx->query(sprintf("//a[position() >= %d]", isset($_GET["start"]) ? (int)$_GET["start"] : 0));
foreach ($links as $link) {
$url = 'http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/' . $link->getAttribute("href");
echo $url . "\n";
}
maerlyn@biliskner:~/tmp$ php tmp.php | head
http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/../
http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/6in4_8-1_all.ipk
http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/6scripts_0.1-6_all.ipk
http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/6to4_3-1_all.ipk
http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/6tunnel_0.11rc2-2_ar71xx.ipk
http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/GraphicsMagick-jpeg_1.3.8-2_ar71xx.ipk
http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/GraphicsMagick_1.3.8-2_ar71xx.ipk
http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/Packages
http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/Packages.gz
http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/ahcpd_0.51-3_ar71xx.ipkAmire felhívnám a figyelmet: az xpath queryben nem pos(), hanem position() van, valamint a hrefben csak egy relatív url van, hozzá kell csapni az elejéhez a base urlt.
-
Tele von Zsinór
őstag
válasz
Speeedfire #6241 üzenetére
1, flush() kell neked.
2, kimaradt egy ] és egy ): $links = $domx->query(sprintf("//a[pos() >= %d]", isset($_GET["start"]) ? (int)$_GET["start"] : 0));
-
Tele von Zsinór
őstag
válasz
Speeedfire #6238 üzenetére
2. ahogy látom, most is kiírod, ha valamelyik kész (echo $i.'. Ok.';)
1. igen, meg lehet. Ráadásul egyszerűbben is, mint ez az explode-os bohóckodás, nem véletlen mondtam korábban a php DOM műveleteit. A következő kód feltételezi, hogy a lista.txt a korábban látott filelista html kódja, vagy nagyon hasonló:
$domd = new DOMDocument();
libxml_use_internal_errors(true);
$domd->loadHTML("lista.txt");
libxml_use_internal_errors(false);
$domx = new DOMXPath($domd);
$links = $domx->query(sprintf("//a[pos() >= %d", isset($_GET["start"]) ? (int)$_GET["start"] : 0);
foreach ($links as $link) {
//$link->getAttribute("href") ellenőrzése, ha kell, mentése
}Ennek át tudsz adni get-ben egy paramétert, és az annyiadik linktől kezdi. Ha nem adsz meg semmit, az elsőnél. Csak gyorsan beírtam ide, szóval nem tesztelt kód.
-
j0k3r!
őstag
válasz
Speeedfire #6229 üzenetére
Speeedfire, PazsitZ: mindig tanul valamit az ember
(#6227) Gyick: amugy, ha komolyabb adatbazisrol van szo, akkor a jelszavakat eloszor 'titkositsd', aztan tarold oket el.(pl: md5, sha1)
-
Gyick
őstag
válasz
Speeedfire #6223 üzenetére
$parancs = "INSERT INTO belepes (nev,jelszo) VALUE ('$_POST['nev']','$_POST['jelszo']')";
Most ebben a sorban jelez hibát dreamweaver de nem tudom mi lehet az.. -
Tele von Zsinór
őstag
válasz
Speeedfire #6218 üzenetére
Curllal lekéred a filelistád. Dommal kiparseolod belőle a linkeket. Curllal egyenként letöltöd és mented őket.
-
Speeedfire
félisten
válasz
Speeedfire #6216 üzenetére
Megy ez csak ugyanazt a változónevet kellene használni...
-
Tele von Zsinór
őstag
válasz
Speeedfire #6198 üzenetére
A __get és __set metódusokat rendszeresen használom, __sleepet és __wakeupot talán még soha, kísérletezésen kívül. Szintén hasznos még a __call és a __callStatic.
-
Frigo
őstag
válasz
Speeedfire #6196 üzenetére
Ez attól függ ,ha mondjuk tömb típusú tulajdonságokat (pl SQL lekérdezés eredménye) kezel az objektumod akkor érdemes használni ,ha csak pár tulajdonságod van akkor csak simán írsz egy getter setter metódust azoknak amelyeket szeretnél kívülről elérni.
-
RedSign
tag
válasz
Speeedfire #6193 üzenetére
Na én meg automatikusan foo-nak olvastam...
...akkor viszont rossz a kód, ahogy Tele von Zsinór is írta...
-
RedSign
tag
válasz
Speeedfire #6189 üzenetére
Tehát először is vannak osztályok és objektumok, a kettő között különbség van. A foo és a bar egy-egy osztály, ahol a bar a foo leszármazottja és jelenleg örökli minden tulajdonságát (nincs) és metódusát (woo). Az objektum jelen esetben az o, ami a bar osztályból származik és mivel a bar örökölte a szülőosztály minden tulajdonságát és metódusát, így o objektumnak lesz woo függvénye.
Remélem érthető lett...
-
Inv1sus
addikt
válasz
Speeedfire #6183 üzenetére
Nem vitt rá a lélek, hogy csak így külön oop-t tanuljak, úgyhogy felraktam Codeignitiert. Eddig tetszik
Végülis is ugyanúgy tanulom vele az oop-ot.
-
Tele von Zsinór
őstag
válasz
Speeedfire #6174 üzenetére
Nem tudok sajnos, angol cikkekből szedtem össze. A weblaboron nézz körül, de figyelj oda az időpontokra, a régi cikkek könnyen lehet, hogy elavultak mostanra.
@Inv1sus: ha kivárod az RC-t, máris jó vagy - onnantól még a belső működés változhat, de az API fix - azaz érdemes elkezdeni tanulni. Én is arra várok a komolyabb elmerülés előtt.
@Brown ügynök: twig, érdekes kérdés. Nekem szimpatikus, olvasgattam leírásokat a héten és remek dolgokat tud. Olvasd át a dokumentációját és meglátod. Ha nem tetszik, még mindig ott a lehetőséged a php-t használni, mint template-nyelv: valahogy úgy fognak kinézni a template nevek, hogy HelloBundle:hello.html.twig. Melyik bundle melyik actionja, mi a kimeneti formátum, és melyik renderert használja. Ha a végén twig helyett php-t írsz, máris azzal fogja értelmezni.
-
Frigo
őstag
válasz
Speeedfire #6174 üzenetére
Docler Akadémián fent van egy 2 részes előadás Simon Bencétől a PHP OOP témában.
-
Frigo
őstag
válasz
Speeedfire #6116 üzenetére
Elvileg a strip_tags pont erre való.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #6111 üzenetére
Azt nem tudom, mekkora lehet a konkrét különbség, ha egyáltalán az általad említett példánál mérhető, de szerintem minél kevesebb kiíratást kell a PHP-ra bízni, és minél több a statikus tartalom, annál gyorsabb lehet. Tehát itt a 2. eset egy ennél azért hosszabb tartalomnál szerintem mérhetően gyorsabb lehet.
Nem szórakoztam még ezeknek a méregetésével, majd egyszer, ha nagyon ráérek... (akkor elmegyek inni
)
-
maestro87
őstag
válasz
Speeedfire #6102 üzenetére
Csak a bejelentkezéssel az a gond, hogy ki kell adni az ftp jelszót is amit meg nem szeretnék tekintettel arra, hogy nem csak én használnám.
De attól még fut, az a lényeg.:-) Egyébként honnan lehet megállapítani, hogy php4-es?
Most néztem meg, php 5.2-t használ a tárhely. -
#10382336
törölt tag
válasz
Speeedfire #6076 üzenetére
Nem, index.html. De valahogy már alakul, csak egy kicsit értelmeznem kell a dolgokat. Most ez a teljes fájl.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<title>HTML fájl</title>
</head>
<body>
<h3>Elérhetőségeink</h3>
<?php
echo '<h3>Elérhetőségeink</h3>';
echo '<p>kapcsolat@teszt.hu</p>';print "<h3>"."Szöveg"."</h3>";
?>
</body>
</html>És erre a php-s résznél is figyelembe veszi a <h3> tag-ot de most így írja ki.
"."Szöveg"."
Innen már valószínű menni fog. Köszönöm szépen mindenkinek a nagyon gyors válaszokat. -
Dave-11
tag
válasz
Speeedfire #6071 üzenetére
Tudom-tudom, közben már lefuttattam a kódot
-
rt06
veterán
válasz
Speeedfire #6061 üzenetére
ez (marmint ha valoban az allowoverride a ludas) nem php fuggo, hanem apache beallitason mulik
viszont a phpinfo-bol itelve a hibak kiiratasa be van kapcsolva -
rt06
veterán
válasz
Speeedfire #6056 üzenetére
mas htaccess file mukodik? lehetseges, hogy az allowoverride nincs, vagy csak reszlegesen van bekapcsolva
-
DeltaPower
addikt
válasz
Speeedfire #6053 üzenetére
egész jó, ezt még nem is ismertem, kösz
-
DeltaPower
addikt
válasz
Speeedfire #6051 üzenetére
js tömörítés nem mondható kódolásnak, egyszerűen egy erre kitalált progival a függvényneveket, változóneveket stb pár betűs rövidítésekre cserélik. ennek az eredménye egy szabályos, de olvashatatlan kód.
"deobfuscator" nevű programot/plugint keress, azok olvashatóbbá teszik. pl firefox addon -
Inv1sus
addikt
válasz
Speeedfire #6030 üzenetére
Nem mondhatnám. Bezártam lent valami műveletek ablakot kezdés után, majd amikor css-ben rákattintottam valamelyik osztályra vagy id-re elhozta a kisablakot jobbra lent.
-
Tele von Zsinór
őstag
válasz
Speeedfire #6016 üzenetére
Te tudod, én csak a saját gépemen intézném a fejlesztést, hogy ne függjek külső dologtól - a te felállásoddal például csak otthonról tudsz fejleszteni (igen, tudom, hogy ha nagyon akarod, távolról is elérhető lenne, de akkor meg felmerül a security kérdése).
-
Tele von Zsinór
őstag
válasz
Speeedfire #6010 üzenetére
Nem a routerben, a hosts fileban. Windows alatt nem tudom, ez merre található, de keress rá (simán csak "hosts", kiterjesztés, egyebek nélkül). Ott tudod beállítani, hogy a virsli.local host az a ::1 ipre legyen feloldva.
@Brown ügynök: a cache:clear (avagy cc) parancs csak a cache mappa tartalmát törli, mást nem csinál. Kiadtad a "plugin:publish-assets" parancsod? A css-ek hiánya arra utal, hogy nem.
Gyorsan belenézve a symfony.bat-ba az az ugyanott levő symfony filet próbálja futtatni, ott van az? -
Sk8erPeter
nagyúr
válasz
Speeedfire #6012 üzenetére
Pont úgy viselkedik, ahogy elvárható lenne, mert nem tetted ciklusba a mysql_fetch_assoc függvényt.
Így lenne helyes:$query = 'SELECT fid, COUNT(fid) AS mennyi FROM `linkek_tartalom`
GROUP BY fid HAVING COUNT(fid) >= 10';
$result = mysql_query($query);
if(mysql_num_rows($result)) { //ha van egyáltalán megjeleníthető eredmény
while( $row = mysql_fetch_assoc($result) ) {
$felhasznalo_tomb[] = $row; //tömbbe gyűjtöd az adatokat - de akár egyből ki is írathatod a megfelelő mezőt
}
// ... (pl. felhasználhatod a tömböt, újabb ciklussal kiíratod [erre a kellően gyors foreach javasolt])
}
else {
echo 'Nincs bejegyzés...';
} -
Tele von Zsinór
őstag
válasz
Speeedfire #6008 üzenetére
Azonos domainen fut két rendszer, és meg akarod különböztetni őket - legegyszerűbb módszer erre a session cookie átnevezése, amit a session_start() előtt kiadott session_name() hívással tudsz megtenni. Például session_name("virsli"); után nem a szokott phpsessid lesz a neve.
Amúgy én úgy szoktam csinálni, hogy minden projektnek létrehozok egy-egy apache VirtualHost-ot, projektneve.local néven, megfelelő DocumentRoottal, és ezt felveszem a /etc/hosts-ba is. Innentől külön domainen futnak, elkerülve például az ilyen problémákat.
-
Tele von Zsinór
őstag
válasz
Speeedfire #6005 üzenetére
Úgy érted, hogy két, azonos domainen futó sessiont? session_name() kell neked.
@n-tek: php-ból inkább ne akarj. SSH-zz be root-ként a szerverre, és állítsd át a tulajt ott.
-
Tele von Zsinór
őstag
válasz
Speeedfire #6001 üzenetére
Az az oldal megjelenjen? miért nem checkbox?
-
Sk8erPeter
nagyúr
válasz
Speeedfire #5991 üzenetére
"Valami olyasmi lenne a cél mint a ph-s képfeltöltő, csak nem ajaxos."
Az sem AJAX-os, hanem iframe-es.Amúgy AJAX-szal nem is lehet fájlt feltölteni, csak ilyen iframe-es trükközéssel, az AJAX-os képfeltöltők nagy része is így (vagy Flash közreműködésével) működik.
-
Tele von Zsinór
őstag
válasz
Speeedfire #5994 üzenetére
008 az egy értvénytelen érték. A 0-ás prefix azt jelzi, hogy ez a szám nyolcas számrendszerben van, de ott meg nincs nyolcas digit. Ha stringnek akarod, akkor tedd idézőjelek közé.
-
PazsitZ
addikt
válasz
Speeedfire #5994 üzenetére
Átnézve a kódot több helyen is ezek állnak: $_POST('kezdosorszam'), $_POST('nagy'), $_POST('filename')... ezek helyett: $_POST['kezdosorszam'], $_POST['nagy'], $_POST['filename']
Tehát a parser úgy értelmezi, mintha függvényt próbálnál hívni és a függvény neve a $_POST változóban lenne. -
PazsitZ
addikt
válasz
Speeedfire #5994 üzenetére
Kb. akkor van ilyen hibaüzenet, amikor változó sztring alapján próbálsz függvényt hívni.
$fname = "trim"; $fname(" teszt ");
De a változóban nem sztring van.
Esetleg olyan függvényt hívsz, amely függvénynevet vár paraméternek (sztring formában) pl.:usort
Egyébként a példádnál pont nem sztring keletkezik: $valami = 008;, hanem szám.
Bár postolva lehet sztring lesz belőle.De így csak találgatni tudunk. A hibás sor száma és a hibás sor többet mondana.
-
Brown ügynök
senior tag
válasz
Speeedfire #5994 üzenetére
Esetleg ha "" közé rakod a 008-t?
-
Tele von Zsinór
őstag
válasz
Speeedfire #5979 üzenetére
Tipp: döntsd el, melyik eszköztár kell és melyik nem (nálam például csak a projekt nézet maradt oldalt, felül is csak ami nagyon kell), valamint próbáld ki a Droid Sans Mono betűtípus - az android platformra készítették, kifejezetten azért, hogy kis méretben is jól olvasható legyen. Átállítod pár ponttal kisebbre a méretét, máris több kódot látsz. Azért annyira kicsire ne vedd, hogy fárasszon az olvasása.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #5963 üzenetére
Az aposztrófot nem escape-elted!
echo '
<a href="'.$file.'" class="w" onmouseover="o(13, \''.$file.'\');" onmouseout="f(13);">
<img src="'.$file.'" alt="'.$file.'"></a>
';Így okés.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #5960 üzenetére
A tabulátor \t, ha idézőjelbe (nem aposztrófba) rakod, hasonlóan a \n-hez, látszik a forráskódban.
A HTML-kimenetnél csak akkor látszik majd a tabulátor, ha a <pre> taget használod. Egyébként csak egy whitespace látszik belőle max. -
Sk8erPeter
nagyúr
válasz
Speeedfire #5958 üzenetére
Én is Notepad++-ról álltam át NetBeans-re, és most már csak akkor használom a Notepad++-t, ha rövid, gyors változtatásra van szükség a kódban, mert a Notepad++-nak csak az erőforráskímélő, gyors működése az előnye a NetBeans-szel szemben, de cserébe a NetBeans mindenféle egyebet nyújt, amit a Notepad++ nem.
Notepad++-ban az automatikus kiegészítés gagyin volt megoldva a NetBeans-hez képest, pl. PHP-projektben csak PHP-függvényneveket tudott kiegészíteni, HTML-elemeket, JavaScript-kódot nem volt hajlandó, míg NetBeans erre is képes. Még jQuery-hez is használom! CSS-fájlokban is működik az automatikus kiegészítés.
Osztályok használatánál is nagyon nagy segítséget nyújt, meg ha pl. függvénydefinícióra akarsz ugrani, akkor elég a függvény használatánál a neve fölé vinni a kurzort, és Ctrl+klikkel oda is ugrik. Ezenkívül tud automatikus formázást is az Alt+Shift+F-fel, ami szépen rendbeszedi, indentálja a széjjeldobált kódot.
Arra is van mód, hogy egy "palettáról" bedobálj kész HTML-elemeket, mint pl. táblázat, rendezett és rendezetlen lista, képhivatkozás, formok, stb., nem kell tökölni a manuális beírogatással, így igazából Dreamweaver-alternatívának is használható.
Ctrl+Space-szel kiegészíti a kódot, ha pl. egy switch-case szerkezetet szeretnél gyorsan létrehozni, azt is meg tudod tenni úgy, hogy beírod pl. a switch kulcsszót, aztán nyomsz egy Ctrl+Space-t, és felkínálja a lehetőséget arra, hogy létrehozza az egészet.PazsitZ is írt pár szempontot, az is mind igaz, ezenkívül tényleg annyi lehetőség van, hogy lehetetlen lenne itt kifejteni. Én nagyon megszerettem a használatát, nem térnék vissza az alap szövegszerkesztők használatára.
Egyetlen hátránya (számomra legalábbis eddig csak ez tűnt fel) a NetBeans-nek tényleg az, hogy zabálja a memóriát (nem is meglepő), meg kicsit lassan indul be, meglehetősen erőforrás-igényes, de annyi előnye van, hogy bőven megtérül a használata.
-
PazsitZ
addikt
válasz
Speeedfire #5956 üzenetére
Változókiemelés természetesen van, bár az mint szövegkiemelés használható volt notepad++-ban is részben (duplakatt a változónévre és az összes olyan változósztringet kiemeli). Van globális változó- függvény- átnevezés. Függvény- változó deklarációra ugrás.
Kiegészítés.
OOP esetén jelzi az örökített-ős osztályt, felülírt, felülíró metódusokat.
Tudsz használni phpdoc-ot.
És még sok minden, ami notepad++-al szemben előny, de hirtelen eszembe se jut.
Anno én is notepad++-ról áltam át, elinte nehezen szoktam meg, de ma már project szinten nem is boldogulnék nélküle -
PazsitZ
addikt
válasz
Speeedfire #5954 üzenetére
A get paraméter vizsgálat if feltétele az sql kérést hagyja el.
De a 95. sor: if ($dir = opendir($dir)) { lefut a következővel: opendir("../galeria/$SqlKonyvtarTorol/tn"), ahol is a $SqlKonyvtarTorol változód üres string.
a 77 sorod meg úgy nézem pont a feltétel előtti be nem másolt sor, ahol egy tömbbeli egyes indexet hiányol.Korábbi kérdésedhez kapcsolódóan én pl netbeans-t használok, szeretem, jó hasznos csak fontos, hogy projekten belüli fájlokkal dolgozz vele.
Eclipse-t nem tudom, még nem próbáltam php-hez. -
barnam_
nagyúr
válasz
Speeedfire #5944 üzenetére
Ez a cím alatti adatok kódja:
<div class="titlemeta">
<span class="author"> <?php the_author(); ?> </span>
<span class="clock"> <?php the_time('Y - F - j'); ?> </span>
<span class="categorys"> <?php the_category(', '); ?> </span>
<span class="commnum"> <?php comments_popup_link( '0', '1', '%', '', 'Nem lehet hozzászólni'); ?> </span>
<span class="thumb"> <?php wp_gdsr_render_article_thumbs(); ?> </span>
<span class="edit"> <?php edit_post_link('| Szerkeszt'); ?> </span>
</div>A hozzá tartozó CSS:
.author{
color:#7b7b7b;
padding:2px 5px 2px 20px;
background:url(images/user.png) no-repeat;
}
.clock{
color:#7b7b7b;
padding:2px 5px 2px 20px;
background:url(images/clock.png) no-repeat;
}
.categorys{
padding:2px 5px 2px 20px;
color:#7b7b7b;
background:url(images/tags.png) no-repeat;
}
.commnum{
padding:2px 5px 2px 20px;
color:#7b7b7b;
background:url(images/balloon.png) no-repeat;
}
.thumb {
padding:2px 5px 2px 20px;
}A szerkesztést nem formáztam, mert azt úgyis csak én látom.
-
RedSign
tag
válasz
Speeedfire #5933 üzenetére
Az igazán szép megoldás az lenne, ha csinálnál egy táblát a jogoknak (rights), és egy kapcsolótáblát (contactor) a jogok és a userek (users) között, majd így "kisakkozhatod" (contactor.user_id -> user.id and contactor.right_id ->right.id) a jogosultságokat...
...kérdés, hogy érdemes-e ennyire elbonyolítani?
pl.:
users
- id
- name
- email
- pass
rights
- id
- value
- name
contactor
- id
- user_id
- right_id -
Tele von Zsinór
őstag
válasz
Speeedfire #5933 üzenetére
Nem, lásd a képet:
Itt azok a mezők tárolják, van-e a felhasználónak olyan joga. Később meg minden műveletnél megvan, hogy milyen jog kell hozzá, anélkül egy (normálisan kinéző) 403-as hibát kap.
-
RedSign
tag
válasz
Speeedfire #5931 üzenetére
A rendszernek és a célnak megfelel, ahogy Tele von Zsinór is írta előttem, ha nincs osztott rendszered a session biztonságos, mehet bele minden...
...személy szerint én csak a felhasználók egyedi azonosítóját és nickjét tárolom benne (meg hibaüziket, visszajelzéseket a felhasználó felé), a többit kiolvasom az adatbázisból ha szükséges. De feladata válogatja, hogy milyen megvalósítás kedvezőbb...
...ha neked megfelel, akkor mehet bele "bármi"...
-
RedSign
tag
válasz
Speeedfire #5927 üzenetére
Szia!
Elsőre bőven elég, bár sessionben nem tárolnám azért a jogosultságszintet, max a felhasználói azonosítót. Egyébként érdemes előtte felmérni, hogy mire van szükség, hiszen egy egyszerű jogosultsági szintű rendszerben, ami piramisra épül és a legmagasabb szinten a legnagyobb jogosultságú felhasználó helyezkedik el bőven elegendő az emelkedő számolás. Egy összetettebb rendszerben azonban már jogosultsági táblára vagy mátrixra lehet szükség - csoportok, csoport jogosultságok, kereszt kapcsolatok - ennyivel általában nem fogod megúszni...
Tömören: jelenleg szerintem bőven megfelelő... -
LW
őstag
válasz
Speeedfire #5927 üzenetére
Szia!
Múlt héten volt vele dolgom. Nekem Ő segített. Nagyon jó írás, érthető és példa is van hozzá. -
Tele von Zsinór
őstag
válasz
Speeedfire #5844 üzenetére
$_POST = array_map("trim", $_POST);
-
PazsitZ
addikt
válasz
Speeedfire #5682 üzenetére
Megadtad a kódolást?
Előtte mb_internal_encoding("UTF-8"); megadásával vagy manuális formába: mb_strlen($str,"UTF-8"); megadása nélkül szerintem nem működik. -
ArchElf
addikt
válasz
Speeedfire #5682 üzenetére
Példát tudsz mutatni? URL / HTML-encode-olva nincs?
AE
-
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) -
Sk8erPeter
nagyúr
válasz
Speeedfire #5463 üzenetére
A Newhosting-os szervernél ugyanez tapasztalható! Azt Te is ki tudod próbálni.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #5459 üzenetére
Most a böngészőfüggetlenséget úgy értettem, hogy arra voltam kíváncsi, az /index cím automatikus KIEGÉSZÍTÉSE az /index.php-re hol történik (még .htaccess nélkül!! tehát hozzábiggyeszti a php kiterjesztést automatikusan! és így a /index beírására nem az index könyvtárat, hanem az index.php FÁJLT nyitja meg) - nyilván ez szerveroldali dolog (nem böngészőtől függ).
Pont emiatt van a problémám, egyelőre NEM a .htaccess miatt, mert ha az egyáltalán nincs is a könyvtárban, akkor is megtörténik a kiegészítés (.php-re) - esetemben emiatt a /contact paramétert a .htaccess segítségével sem tudtam átadni GET paraméternek, mert automatikusan a /contact.php fájlt nyitja meg.
Ennek megoldására voltam kíváncsi, hogy a contact.php fájl átnevezése helyett (pl. ha átnevezem contact222.php-re, akkor csak a /contact222 cím beírásának hatására fog megnyílni ez a fájl, a /contact-re nem) - van-e más megoldás, és hogy pl. Apache-nál ez az automatikus kiegészítés konkrétan miből ered. -
PazsitZ
addikt
válasz
Speeedfire #5433 üzenetére
Nem értem a problémádat.
Az adatbázist php-ból éred el, a php fájlban tudo, hogy ajax vagy nem ajax, innen mia nehéz?
Vagy akkor úgy tűnik nem értem, mit szeretnél csinálni. -
randras
veterán
válasz
Speeedfire #5439 üzenetére
Szia!
Nekem ez localhoston és élesben is internal server error 500-at dob!
-
Tele von Zsinór
őstag
válasz
Speeedfire #5433 üzenetére
A nagyobb JS frameworkök (a jQuery is) beállít egy "X-Requested-With" fejlécet az ajax kéréseknél, ennek létét vizsgálva el tudod dönteni, hagyományos kérés-e vagy ajaxos.
-
PazsitZ
addikt
válasz
Speeedfire #5430 üzenetére
Szvsz legegyszerűbben úgy, hogy átadsz egy ajax=1 paramétert, amit htaccess-en belül is továbbadsz.
pl.:
RewriteRule ^index.php?(.*)ajax=1$ /index.php?$1ajax=1
RewriteRule ^index.php?(.*) /index.php?$1A php-n belül pedig eszerint tudod kezelni, hogy csak a main részt adod vissza vagy az egész oldalt.
Ha jól értem a problémát.Az előző esti válasz meg picit mellément
Sikerült közel egy hónappal ezelőtti régi hsz-re válaszolnom.
-
Speeedfire
félisten
válasz
Speeedfire #5429 üzenetére
Azt hiszem rájöttem a hiba okára, csak még nem tudom, hogy kivitelezzem.
A hiba valószínűleg a htaccess miatt lehet.
Minden kérést az index.php dolgoz fel viszont a valogat.php csak az index.php oldal #main div-jében van emiatt ha jön egy kérés szerencsétlent az index.php oldalra irányítja holott ajaxos kérésnél már ez nem kellene. Remélem holnap rájövök arra, hogy lehetne ezt megoldani, bár a seo-s "kollégák" nagyon mondják, hogy ne csináljam, mert a nagy G nem fogja szeretni. -
Sk8erPeter
nagyúr
válasz
Speeedfire #5425 üzenetére
Firebugban be kell kapcsolni az "XMLHttpRequest események megjelenítése" menüpontot, ha az AJAX-kéréseket szeretnéd figyelni. (Konzol fülre kattintva megjelenik egy kis nyíl, ott lehet kiválasztani.)
A szkripthez pedig lehet betenni breakpointokat, és ott az látszik, hogy a "Tovább..."-ra kattintva a szkript is lefut, abban a pillanatban olyan lesz az oldal kinézete, amilyet linkeltél (a #main-ben a kerettel együtt megjelenik a tartalom), de aztán frissíti az egész oldalt (innentől pedig értelmetlen az AJAX-kérés).Megpróbálhatnád úgy is a ready utáni résznél, hogy
$('.ajaxload').live("click", function () {
$('#main').load($(this).attr('href') );
return false;
});(és nem a load paramétereként teszed be a másik függvényt)
próbát megér, legalább addig jussunk el, hogy ne frissüljön az egész oldal, ha már AJAX.Szerk.:
ja, VAGY pedig ha már az
e.preventDefault();
sort használod, akkor ne a load paramétereként tedd be, hanem azután, ha már... legalábbis így elsőre jobbnak tűnik...$('.ajaxload').live("click", function ( e ) {
$('#main').load($(this).attr('href') );
e.preventDefault();
}); -
Tele von Zsinór
őstag
válasz
Speeedfire #5425 üzenetére
Így legyen: "click", function (e) {
Másrészt: tedd fel a firebug kiterjesztést, és akkor pontosan tudni fogod, ajax-e vagy sem (a console fülön naplózza az ajax kéréseket, elég részletesen - sok egyéb nagyon hasznos funkciója mellett).
-
Tele von Zsinór
őstag
válasz
Speeedfire #5418 üzenetére
A kódod egy sort kivéve jónak tűnik, ez pedig a return false;. Használd helyette az e.preventDefault();-ot, ahol e a click függvény paramétere. Itt szépen leírják, miért.
Röviden: a return false; ekvivalens azzal, hogy e.preventDefault(); e.stopPropagation();, azaz megakadályozza a többi eseménykezelő futását, amiknek amúgy le kéne (mert mondjuk ugyanarra az elemre vannak kötve, vagy valamelyik szülőjére).
-
Sk8erPeter
nagyúr
válasz
Speeedfire #5420 üzenetére
Akkor csak az lehet a gond, hogy a beillesztendő fájlba (ami jelen esetben a jQuery-kódban a $(this).attr('href') ) include-oltad a keretet is, mert egyébként teljesen jól kell működnie (amennyiben a kód a head részben van elhelyezve, stb.), kipróbáltam, és jól ment.
Magához a betöltéshez nincs szükség a második paraméterre:
<script type="text/javascript">
<!--
$(document).ready(function(){
$('.ajaxload').live("click", function () {
$('#main').load( $(this).attr('href') );
return false;
});
});
// -->
</script>De figyelj arra, hogy az AJAX-os betöltés esetén lehet, hogy a Google nem indexeli a teljes oldalt.
OFF: akármennyire borzasztó és rémisztő is, már a teljes admin oldal valid...
-
Sk8erPeter
nagyúr
válasz
Speeedfire #5418 üzenetére
Basszus, jobb lett volna, ha előbb jobban körbenézek.
Most találtam meg a Jeditable oldalán, hogy el lehet küldeni extra paramétereket is a köv. módon:
$(".editable").editable("http://www.example.com/save.php";, {
submitdata : {foo: "bar"};
});Így pedig a $_POST tömbbe új elemeket pakolhatok, vagyis a gond megoldva: ilyen módon elküldöm az eredeti nevet, id-t, és akármit, amit csak szeretnék...
Ráadásul biztonságosabb megoldás.
Szóval a gond megoldódott.Az admin oldalt nem véletlenül validálom: az eddigi részek mind validak, így ez már egyrészt szinte presztízskérdés
, na de ami sokkal fontosabb, hogy a validálással rengeteg hibát is fel lehet fedezni, pl. sokszor előfordult, hogy a PHP által generált kódba sikerült belekutyulni olyan módon a HTML-kódot, hogy maga az oldal elcsúszott - a validálással viszont többnyire igen gyorsan rájöttem, hogy hol is lehet a hiba; ezenfelül nem véletlenül találták ki a valid kódot, mert így csökkentem annak az esélyét, hogy különböző böngészőkben különböző módon jelenjenek meg a dolgok, persze nyilván már amennyire szabványkövetők (ha nem is szabvány, csak ajánlás) a böngészők... (lásd IE, stb.)
De mondok még egy érvet: kis gyakorlattal és odafigyeléssel nagyon egyszerű valid kódot írni...Hidd el, nem haszontalan.
------------
A Te kérdésedre:
nálad az "ajaxload' osztállyal ellátott HTML-elemeknek van href-attribútumuk?
mutass rá példát, pl. így van, ahogy itt?
<a href="akarmi.html" class="ajaxload">...</a>A load() függvénynél felesleges a második paraméter, ha azt nem használod semmire.
Mutass konkrét példát, és akkor sztem tudok segíteni. -
Sk8erPeter
nagyúr
válasz
Speeedfire #5416 üzenetére
Hülyeségnek tűnhet, hogy admin-oldalt szeretnék validálni, de mégis.
Operából Direct Inputtal el lehet küldeni validálásra az oldalt (vagy más böngészőben beépülővel), szóval ez nem kérdés, tudom ellenőrizni a validitást.
A szóköz azért fordulhat elő az id-ben, mert lehet olyan név, amit lekérek adatbázisból, amiben előfordul szóköz (nem tudhatom, hogy a júzer milyen nevet tölt fel, de simán lehet, hogy olyat, amiben van szóköz).
Mondom, az eredeti nevet csak azért pakolom bele az id-be, hogy gyorsabb legyen ellenőrizni, nem úgy küldte-e el a júzer a "módosított" adatot, hogy valójában nem módosított semmit - ha nem módosított, megegyezik az eredetileg látott értékkel, minek nyúlkáljak adatbázishoz, úgysincs változtatás.Ja igen, ami fontos a megértéshez: a Jeditable úgy működik, hogy mondjuk megadsz egy CSS-osztályt (pl. "edit") egy HTML-elemnek (pl. egy div-nek), és onnan fogja tudni, hogy kétszeri ráklattyogásnál (lehet akár egyszeri is egyébként, több lehetőség van) módosítható legyen a mező, átalakítja form-má, azonbelül létrehoz egy input mezőt, majd egy Enter leütésével ezt a form-ot tudod elküldeni a feldolgozó fájlnak, majd az abból visszakapott adatot kiíratni - ha sikerült a módosítás, nyilván már a módosított adatot írod ki.
Maga a HTML-elem azonosítója (id) a $_POST['id'] változóval érhető el, a módosított érték pedig a $_POST['value'] segítségével (ez az input mezőből jön).Példa:
<div class="edit" id="nev_68_eredetinév">eredetinév</div>A példában szereplő "eredetinev" adatbázisból jön (ebben lehet szóköz is! Pl. "eredeti név"); a "nev" jelzi, hogy most mondjuk az adatbázisba feltöltött cuccnak a nevét szeretném módosítani, a "68" pedig az adott elem azonosítója.
Eszerint pedig szétrobbanthatom a $_POST['id'] változót mondjuk alsóvonás szerint (erre mondtam, hogy esetleg hibaforrás lehet, ha a júzer alsóvonás-karaktert ad meg, ez most átmeneti próbálkozás egyelőre), az új név pedig a $_POST['value'] változóban van:list($object_to_mod, $dog_id, $original)=explode("_", $_POST['id']);
$new=$_POST['value'];Ha a $new megegyezik az $original változóval, akkor visszatérek az eredeti névvel, és kész, nem vizsgálgatok tovább, így gyorsabb.
Remélem nem voltam túl zavaros.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #5414 üzenetére
Hali!
Sajnos az nem jó megoldás, mert az eredeti névre van szükségem. De az furcsa, hogy a HTML-kódra lecserélve sem fogadja el a w3c validitás-ellenőrzője.
Na, de jobb, ha elmondom, mire kell:
a Jeditable nevű jQuery-plugint használom egy admin-oldalon, ahol módosításokat lehet elvégezni egy adott névnél és egyéb adatbázisban szereplő elemeknél, de úgy, hogy a felhasználó csak kétszer ráklattyog a névre, és máris módosítható az elem, a módosítást pedig elküldi a feldolgozó PHP-fájlnak. Kényelmes, olyan jellegű, mint pl. Facebook-on a módosítható mezők (pl. a Magamról résznél, stb.), helyben módosítasz, nincs szükség az egész lap újratöltésére, stb.A HTML-elem (div, stb.) azonosító (id) attribútuma segítségével (többek közt ezt alakítja a Jeditable $_POST adattá, úgy, hogy a div-et formmá alakítja a ráklattyogáskor! Meg elküldi az input mezőbe beírt adatot) elküldöm az adott elem azonosítóját, ami alapján lecsekkolom az adatbázisban, tényleg van-e ilyen elem, valamint egy alsóvonással elküldöm az eredeti nevet is (ez viszont egyelőre hibaforrás lehet, ha a felhasználó alsóvonás-jelet ad meg a névben, mert explode()-dal bontom szét az elemeket, de ezt majd megoldom), hogy amennyiben megegyezik a módosított névvel, akkor egyszerűen visszaküldöm az eredeti nevet, és nem dolgozgatok fel, így gyorsabb.
Természetesen minden oldal elején ellenőrzöm, a felhasználó belépett-e (a módosító oldalon és a feldolgozó fájlban is), tehát valamelyest biztonságosnak mondható, még ha egyelőre vannak is lyukak benne...Ezért szeretném elküldeni az eredeti azonosítót és magát a mezőnevet is.
Többnyire nincsenek brutálhosszú dolgok, ami ne férne bele egy id-be, ezért gondoltam ehhez a módszerhez folyamodni...
Kerülő megoldás lehetne az, hogy csak az id-et küldöm el, de akkor minden alkalommal tényleg szükség van adatbázis-lekérésre, eddig ezt kerültem el azzal, hogy csekkoltam, megegyezik-e az eredetileg a mezőben szereplő értékkel, vagy sem, ha igen, akkor nem dolgozgattam fel, egyszerűen visszaadtam a júzernek ugyanazt a nevet (amit nem is módosított).Nem tudom, érthetően írtam-e le...
-
Tele von Zsinór
őstag
válasz
Speeedfire #5410 üzenetére
Valóban, kb. 3 kattintással több post adatot átírni, mint getet. És ékezetes karakterekkel sincs különbség, a böngésző elintéz mindent.
-
Tele von Zsinór
őstag
válasz
Speeedfire #5399 üzenetére
Biztonsági szempontból semmi különbség nincs a get és a post között. Mindkettő felhasználótól származó adat, ergo megbízhatatlan.
-
Lakers
tag
válasz
Speeedfire #5402 üzenetére
yes! a 000webhost.com-ot kerestem, kösz!
-
Lakers
tag
válasz
Speeedfire #5399 üzenetére
Kösz a választ!
Esetleg itt is neked feltenném a kérdést, hbogy tudsz-e jó php-s host oldalt? (ahol esetleg több weboldalt is fenntarthatok ingyen, és ne magyar, ahol esetleg élőben is lehet szerkeszteni...) A régi nagyokat nem lelem neten... és a Google találotoknál a biztonsági szoftverek szólnak hogy nem ajánlott kategória.
És kívánom, hogy a te kérdésedre mihamarabb feleljenek
-
nuendo
tag
válasz
Speeedfire #5359 üzenetére
de persze az a lényeg hogy érted a kódot
-
nuendo
tag
válasz
Speeedfire #5359 üzenetére
amugy szerintem jobb az or die alkalmazása....kevesebb a kód
de csak ugy mondtam
-
nuendo
tag
válasz
Speeedfire #5357 üzenetére
Az include_once() beilleszt és feldolgoz fájlokat a program futása közben. Ez hasonló az include() működéséhez, azzal a fontos különbséggel, hogy ha a már egyszer beillesztésre került kódot a PHP nem próbálja meg ismét betölteni.
nem is gondoltam hogy azzal lesz a gond -
ArchElf
addikt
válasz
Speeedfire #5357 üzenetére
De mi van a db.php-ban?
AE
-
nuendo
tag
válasz
Speeedfire #5353 üzenetére
if (!isset($_SESSION['belepett']) or ($_SESSION['belepett']!== true))
elég az isset hogy ha azt vizsgálod hogy nem létezik!$sql = "SELECT * FROM linkek_users ";
szerintem igy jobb hogy....
$sql = mysql_query "SELECT * FROM linkek_users " or die ("Hibás lekérdezés!");igy legalább megvizsgálod a lekérdezést is hogy jó-e
-
Sk8erPeter
nagyúr
válasz
Speeedfire #5336 üzenetére
Az nem baj, ha dolgozol vele, felhasználod az értékeit (nem muszáj átadni másik változónak, sőt, sokszor felesleges - pl. végigrohangászhatsz egy foreach ciklussal a $_POST értékeken, átadni az értékeket másik változónak meg csak felesleges időveszteség (már amennyiben ez egyáltalán érzékelhető ideig tart)) csak az a furcsa, ha módosítod. Én nem tenném, persze mindenki azt csinál ezekkel a változókkal, amit csak akar.
Most megtaláltam cucka egy régi hsz.-ét, amire emlékeztem, ahol ő is pontosan ugyanerről ír, csak jóval több hozzáértéssel, mint ahogy én vakerászok: [link]A switch nagyon egyszerű, és megkímél a sok-sok if-elseif-else ág írogatásától, pl. a Te kódod esetén jelenleg így néz ki:
if-elseif-else megoldással:
if ($_POST['tipus'] == 'navigacio') {
// ...
}
elseif ($_POST['tipus'] == 'tartalom') {
// ...
}
elseif ($_POST['tipus'] == 'felhasznalo') {
// ...
}
// ...
else{ //ha egyik sem a fentiek közül
// ...
}ugyanez switch-case megoldással:
switch($_POST['tipus']){
case 'navigacio':
//...
break;
case 'tartalom':
//...
break;
case 'felhasznalo':
//...
break;
//...
default: //ha a fentiek közül egyikkel sem egyezik meg (ez az if-elseif-else ágból az utolsó, az else ág)
//...
break;
}(amúgy most nézem, nálad nincs az if-elseif után egy végső else, ami arra vonatkozik, ami egyik korábbi feltételre sem igaz, persze nem kötelező, de nem árt)
Szerintem legalábbis utóbbi átláthatóbb, jobban egységbe foglalja a feltételvizsgálatot.
Ezek tényleg csak tanácsok, nem kötekedés.
------
(#5324) nuendo: tényleg egész szépen elrendezi a kódot ez a PHP Formatter.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #5313 üzenetére
a rengeteg elseif helyett megoldhattad volna switch-csel, így nagyon átláthatatlan
szerk.: amúgy bocs a kötekedésért, csak rég voltam a topicban, kicsit visszaolvastam, és szemet szúrt ez meg az előző -
Sk8erPeter
nagyúr
válasz
Speeedfire #5251 üzenetére
Ez aztán jó ronda megoldás...
($_GET változónak értéket adni? Hmm...
)
-
fordfairlane
veterán
válasz
Speeedfire #5329 üzenetére
Escape van, már a legelején, ez csak egy kódrészlet volt.
Hát az totál rossz, ebben a formában nem escapel semmit. Ha már mindenáron a $_POST tömböt előre kiescapelni akarod:
$_POST = array_map('mysql_real_escape_string',$_POST);
-
fordfairlane
veterán
válasz
Speeedfire #5325 üzenetére
$sqlJelszo = mysql_query("select jelszo from szapar_felhasznalo where fnev='".$_POST['fnev']."' jelszo='".$_POST['jelszo']."' ");
if (!$sqlJelszo) {
die('Hiba: ' . mysql_error());
}Nagyon csúnya ez így. Először is használj saját függvényt, amelyik lefuttatja a query-t, és kiírja az sql hibát.
function sql_query($q) {
$res = mysql_query($q);
if (mysql_errno()) {
die('Hiba: ' . mysql_error());
}
return $res;
}Másrészt pedig nem használsz escapelést a szöveges tartalomnál, ami súlyos hiba.
$query = 'select jelszo from szapar_felhasznalo';
$query .= ' where fnev="'.mysql_real_escape_string($_POST['fnev']).'"';
$query .= ' AND jelszo="'.mysql_real_escape_string$_POST['jelszo']).'"';
$jelszo_res = sql_query($query);Harmadrészt, és ez csak egy javaslat: Már most szedd szét az action mappinget magától az actionöktől. Tehát az if-elseif-else ág csak függvényeket hívogasson, mást ne csináljon, és külön függvényekbe rakd az egyes funkciók implementációját, különben makaróniként fog tekeregni nemsokára a kód a rengeteg globális változójával, amik egymást írják felül.
Szerk: Ja igen, kimaradt az " AND ", tényleg. Javítom én is
-
wis
tag
válasz
Speeedfire #5325 üzenetére
WHERE 'valami' AND 'valami'
Szóval: "select jelszo from szapar_felhasznalo where fnev='".$_POST['fnev']."' AND jelszo='".$_POST['jelszo']."' "
-
nuendo
tag
válasz
Speeedfire #5321 üzenetére
Új hozzászólás Aktív témák
Hirdetés
- Bomba ár! Fujitsu LifeBook U757 - i3-7GEN I 16GB I 256SSD I 15,6" FHD I HDMI I Cam I W11 I Garancia!
- iKing.Hu - Apple 16 Pro Max - Natural Titanium - Új, kipróbált
- BESZÁMÍTÁS! ASUS ROG STRIX Z390-E GAMING alaplap garanciával hibátlan működéssel
- Csere-Beszámítás! RTX Számítógép PC Játékra! R5 8400F / RTX 3070Ti / 32GB DDR5 / 1TB SSD
- BESZÁMÍTÁS! Apple MacBook Pro 14 M4 16GB RAM 512GB SSD garanciával hibátlan működéssel
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest