Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
"Submit gomb minek? Enterrel is végrehajtja az action-t."
Nem jó, ha megszokod, hogy nem használod a submit gombot, mert később, ha honlapot akarsz csinálni, akkor figyelembe kell venned, hogy a legtöbben az egerüket szeretik használni böngészés közben, és nem a billentyűzetet. Különösen igaz ez akkor, ha opciók közül kell majd választani, nem csak begépelgetni. -
Sk8erPeter
nagyúr
válasz
fordfairlane #3171 üzenetére
Pontosan ez bizonyítja, mennyi hiba van a Tanuljuk meg a PHP4 használatát 24 óra alatt! c. könyvben...
A példa ugyanis onnan származik. Ha valakinek fogalma sincs a PHP-ról, akkor az csak kaparja az arcát, hogy mit csinálhat rosszul, a könyvben ennél a résznél még csak utalás sincs arra, hogy talán valahogy a bejövő adatokat fel is kéne dolgozni, és azt hogyan.
-
Sk8erPeter
nagyúr
válasz
animatrix11 #3154 üzenetére
Flash-videókra használd ezt az ingyenes lejátszót, sok mindent (többek közt lejátszólistát) lehet vele beállítani: JW FLV Media Player.
De ez már bőven OFF-topic, nem itt kellene beszélni erről. -
Sk8erPeter
nagyúr
válasz
Tele von Zsinór #3144 üzenetére
Értem, köszönöm a kimerítő választ, pont erre voltam kíváncsi.
Egyébként a perzisztens kapcsolat milyen esetekben lehet szükséges/ajánlott?
-
Sk8erPeter
nagyúr
Hali!
Ha van egy oldal, ahol van egy galéria, ahol a képek elérési útját adatbázisból kérem le, valamint magát az oldal tartalmát is a könnyebb módosíthatóság érdekében (adminfelületen keresztül kényelmesen módosítható, hozzácsapok a szerkesztőmezőhöz még egy TinyMCE-t, így találtam a legegyszerűbbnek, hogy az emberkének ne kelljen kódokat szerkesztenie) minden menüpontban, akkor melyikkel érdemes csatlakozni a MySQL-kiszolgálóhoz, a
mysql_connect(), VAGY a
mysql_pconnect()
paranccsal?
Azt vágom, hogy utóbbi egy állandó kapcsolatot hoz létre arra az esetre, ha meg akarjuk takarítani az időt, ami egy kapcsolat felépítéséhez szükséges - de nem rejt ez magában biztonsági kockázatot?
Előnyök/hátrányok?Lehet, hogy nem a legjobb, ha minden egyes függvény után beteszem a mysql_close() parancsot.
(ami mondjuk nem zárja a mysql_pconnect()-tel megnyitott kapcsolatot)
Köszi!
-
Sk8erPeter
nagyúr
Hali!
PHP+MySQL kérdés, csak ahogy elnézem, a MySQL topic nem túl sűrűn látogatott mostanában
Rá tudnátok nézni a kérdésre? Halál egyszerű dologról lenne szó, amire valahogy így későn nem sikerül rájönnöm:
[link]
Köszi! -
Sk8erPeter
nagyúr
válasz
PazsitZ #3111 üzenetére
TÖKÉLETES!
Pont ilyen tömbös megoldásra gondoltam én is, csak én úgy akartam megoldani, hogy pl.$special_chars = array (
'á' => 'a',
'à' => 'a',
'ä' => 'ae',
'â' => 'a',
'ã' => 'a',
...
}(ezt a tömböt kimásoltam innen, úgyhogy nem kellett szenvedni a megírásával
), tehát hogy ami a nyíl után van, arra helyettesítse, azt hittem, úgy is megoldható
De így is tökéletes, köszönöm, PazsitZ!Tényleg, ha már itt tartunk, akkor már érdekelne, hogy egyébként esetleg kivitelezhető lenne azzal a változattal is, amire én gondoltam eredetileg? Ha igen, akkor mi a módja?
Szerk.:
most látom, valahogy így oldja meg:if (in_array($char, array_keys($special_chars))) {
$result .= $special_chars[$char];
}Kicsit túl hosszú a többi kód, rá kéne vennem magam, hogy áttanulmányozzam...
-
Sk8erPeter
nagyúr
válasz
PazsitZ #3109 üzenetére
Persze, hogy nem illik ékezetes betűt használni url-ben, épp ezért akartam ellenőrizni a júzert, aki feltölti a képet mondjuk "csodálatos ez a kép, sőt mondhatnám gyönyörű.jpg" néven
Szóval hogy helyettesítse a szóközöket mondjuk alsóvonással, az ékezetes betűket pedig a neki megfelelő ékezet nélküli karakterrel, mint pl. gyönyörű -> gyonyoru
Ez esetleg megoldható? Nem is nagyon vágom, miért nem működik az ékezet-konvertálás... -
Sk8erPeter
nagyúr
válasz
Tele von Zsinór #3074 üzenetére
A böngészőfüggőt csak azért kérdeztem, mert már nem tudtam mire gyanakodni, hirtelen arra gondoltam, hogy esetleg az egyes form-ok esetén a böngészők más-más karakterkódolással küldik el a szövegeket... De akkor ez nem igaz.
Viszont kipróbáltam már szinte minden kombinációban, us-ascii-vel is, meg még kb. 5-féle kódolással, de egyszerűen sehogy sem akarja olyan formára alakítani, ahogy nálad megszületik a kimenet. Több szerveren is próbáltam már, ugyanúgy vagy csak egy ilyen dobozszerű ikon lesz az ékezetes betűk helyett, vagy egy, illetve más kódolás esetén kettő kérdőjel.
Próbáltam már az iconv-vel is, és próbáltam az mb_convert_encoding függvénnyel is, reménykedve abban, hogy az majd megoldja, de nem.
Kipróbáltam az alábbit is:$enc = iconv_get_encoding('all');
print_r ($enc);Így olvasható formában kapom meg pl. egy tömb elemeit, esetemben ez lesz az eredmény:
Array ( [input_encoding] => ISO-8859-1 [output_encoding] => ISO-8859-1 [internal_encoding] => ISO-8859-1 )
Pedig tudtommal az ISO-8859-1-ben nem kéne ékezetes karakternek lennie.
Mi lehet a gond, ami miatt nem tudom konvertálni az ékezetes karaktereket?
-
Sk8erPeter
nagyúr
válasz
Tele von Zsinór #3062 üzenetére
Hali!
Ezt most kipróbáltam, de ez az á, é, stb. ékezetes karaktereket pl. csak simán eltávolítja.
Gondolom ez a// remove unwanted characters
$text = preg_replace('~[^-\w]+~', '', $text);sor miatt van, mintha rosszul dolgozná fel a beolvasott karaktereket.
Ráadásul ez a könyvtárral együtt lévő hivatkozás esetén a '/' (perjel) karaktert is lecseréli '-' (kötőjel) karakterre, az meg nem jó, igaz, ez mondjuk megoldható, úgy, hogy nem a könyvtár nevével együtt teszem be a szöveget, hanem csak simán, a fájl nevére hivatkozva, tehát ez még annyira nem is lenne érdekes (de ettől függetlenül nem jó, hogy így van).Érdekes az is, hogy ha úgy csinálom, ahogy itt van: iconv
echo 'Original : ', $text, PHP_EOL;
echo '<br />';
echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;akkor meg az ékezetes karakterekből ilyen karaktert csinál, kimenet:
Original : upload/Gyémánt.gif
TRANSLIT : upload/Gy�m�nt.gifSzerk.: ezek szerint itt nem látszik, de amit kiír, az ilyen négyzet alakú ikon.
Legalábbis ez az, amit kiír, de valójában ez lesz belőle a tényleges fájlnév, amit feltölt:GyĂ©mánt.gif
Ez így nem túl jó. Ezért is gondoltam arra a tömbös megoldásra.
Ez böngészőfüggő probléma lehet? Operából próbálom, ha ez érdekes. Ja, és természetesen UTF-8 kódolású maga a php-fájl, ha ez fontos.
Mi lehet a probléma? Alternatíva? -
Sk8erPeter
nagyúr
válasz
Tele von Zsinór #3058 üzenetére
lezso6, cucka, Tele von Zsinór: nagyon köszönöm mindannyiotok hozzászólását, sokat segítettetek!
Végül is maradtam a Tele von Zsinór által ajánlott getimagesize () függvénynél, ez bizonyult a lehető legegyszerűbb megoldásnak, mivel a lehető legtöbb képtípust támogatja.
Ha esetleg több olyan képtípus is felmerül, amit nem szeretnék, hogy feltöltsenek, akkor a lezso6 által ajánlott if (in_array(...) ) megoldást fogom választani, az is nagyon kézenfekvő.
cucka, abban pedig tökéletesen igazad van, hogy inkább azt engedjem, amit feltölthetnek, ne azt tiltsam, amiből többszáz típus van, először nem is tudom, ezt hogy gondoltam...
Ezt viszont már több helyen is olvastam, amit írtál, de nem értem az okát:
"Harmadrészt a mime típust a kliens küldi, tehát megbízhatatlan."
Miért olvas ki a fájlból esetlegesen rossz információt?___________________
Végül egyébként sikerült megoldani azt is, hogy ha létezik a fájl, akkor tegye mögé az alsóvonás utáni számot, attól függően, hogy hányszor létezik hasonló nevű fájl, tehát az volt a végső megoldás, hogy közvetlenül a move_uploaded_file függvény elé tettem egy ellenőrzést:
$target_dir = "upload/";
$target = $target_dir . basename( $_FILES['uploaded']['name']);
$fajlnev = $_FILES['uploaded']['name'];
// bla-bla... utána:
//Létezik már azonos nevű?
if (file_exists($target))
{
$file = $target;
$name = substr($file, 0, strrpos($file, '.')); // kiterjesztés levágása
$i = 1;
while(file_exists($file))
{
$i++;
$file = $name . '_' . $i . '.' .$path_parts['extension'];
}
echo 'A fájl neve korábban már szerepelt! Összerakott fájl neve: '.$file.'<br /><br />';
$target = $file; //hogy ne az eredeti elérési út maradjon, hanem az új névvel mentse el a fájlt a move_uploaded_file fv.-ben is
$fajlnev = substr($target, (strrpos($target, '/')+1));
// hogy utóbbi változók is az új célhelyre mutassanak a move_uploaded_file fv.-ben
}
//eddig tart az ellenőrzés;
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
{
// bla-bla...
}_________________________________
Itt (Google Cache által elmentve) pedig találtam egy tömböt, melyben a legtöbb, a böngésző vagy a szerver által kérdésesen támogatott vagy megjeleníthető ékezetes vagy egyéb karakter megtalálható - ez alapján szeretném kicserélni a feltöltendő fájl nevében szereplő esetleges hasonló karaktereket, na meg a szóközt!
Ilyesmi módon oldjam meg, ahogy itt látható, vagy a preg_replace() függvénnyel, vagy utóbbinak ehhez semmi köze? -
Sk8erPeter
nagyúr
Hátha találsz itt megoldást, születtek karakterkódolási problémákról cikkek a Weblaboron is:
Karakterkódolási problémák kiküszöbölése
A MySQL nem ért magyarul, de még lehet rajta segíteni (ez lehet, hogy segít neked is)
MySQL 5.0: karakterkódolások
Magyar karakterek kezelése UTF-8-at használó MySQL-ben
stb. -
Sk8erPeter
nagyúr
Igen, ennek a függvénynek én is megörültem, mert korábban a levagdosással szenvedtem, ami sikerült is, de azért ez így jóval egyszerűbb megoldás.
Köszi, akkor ezeket majd kipróbálom, de időközben lenne egy másik probléma:
szeretnék korlátozást beállítani a feltölthető fájltípusokra, de valamiért csak akkor működik, ha az if feltételnél egyetlen szempontot adok meg, ha VAGY-olom a feltételeket ( || ), akkor már igazából semmilyen típust nem enged feltölteni, és ez így nem túl vicces.
Így írom be, egy feltétel esetén tökéletesen működik, csak a több feltétel esetén nem://Fájltípusra vonatkozó korlátozások
$tipus = $_FILES['uploaded']['type'];
if ($tipus == ('application/octet-stream' || 'application/zip' || 'application/x-msdownload' || 'text/css' || 'text/html' || 'text/plain' || 'message/rfc822'))
{
echo 'Ne tölts fel ilyen kiterjesztésű fájlt!<br />';
$ok=0;
}Mit ronthatok el?
-
Sk8erPeter
nagyúr
Valóban, akkor lehet, hogy mástól lestem el. De kézenfekvőnek tűnik a változó állapotának nyomonkövetése. Ez miért csak egyszerűbb szkriptekhez jó? Mármint mitől jobb a többi hibakezelő módszer? A változó állapotának követésénél is meg lehet adni, hogy ha az mondjuk 0, akkor legyen "return: false", stb... Tehát akkor végül is ez, amit Te is használsz, elvileg majdnem ugyanaz.
Kiterjesztés kiderítésére a pathinfo() függvényt találtam a legésszerűbbnek, így:
$target_dir = "upload/";
$target = $target_dir . basename( $_FILES['uploaded']['name']);
$akarmivaltozo = pathinfo('$target');
echo 'Kiterjesztés: '.$akarmivaltozo['extension'].'<br />';Akkor ezt az extension tömböt lehetne rakni a substr() függvénybe, hogy ily módon vágja le a kiterjesztést, így jó?
Vagy mondjuk astrrpos($target, '.');
is jónak látszik.
_________________
(#3045) cucka: kivételkezelés?
Ez miben más/jobb, mint a többi hibakezelés?
-
Sk8erPeter
nagyúr
Jahh, értem már, akkor így módosítottam az image változót:
$image = ($_FILES['uploaded']['tmp_name']);
Ezzel már megfelelően eléri?
Másik kérdés, hogy még a konkrét feltöltés előtt mindenféle fájltípusra, fájlméretre és egyebekre vonatkozó ellenőrzéseket végzek a fájlon, és egy $ok változóval jelzem, ha minden ok, utána mehet a feltöltés, tehát így (sztem ezt még Te javasoltad, h így érdemes):
if ($ok==0)
{
...valami gáz van...;
}
else
{
if (move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
{
...ezt meg ezt csináld, írd ki, hogy faszán sikerült feltölteni a fájlt...;
}
else
{
...írd ki, hogy nem jött össze, stb...;
}Nyilván az ellenőrzésnek, hogy létezik-e már a fájl, ezelőtt kéne lefutnia.
Ekkor tehát csak simán állítsam az $ok változót 1-re, miután a while ciklus az i változó növelgetésével, kiterjesztés levágásával, kiegészítő név hozzácsapásával lefutott?
Hogy fog mögékerülni a kiterjesztés, ha a move_uploaded_file függvénynek kéne utána következnie? Külön if-be tegyem be, hogy ha volt ilyen jellegű változtatás (kiterjesztés levágása), akkor a képtípustól függő kiterjesztést tegye mögé? -
Sk8erPeter
nagyúr
Jaaaaa
Oké, úgy látszik, késő van...
A feltöltés során mondjuk így adok nevet:$target_dir = "upload/";
$target = $target_dir . basename( $_FILES['uploaded']['name']);Milyen módon érem el bináris formában magát a képet?
____________________________________________________________________
Basszus, a fájltípusra vonatkozó kérdésem sztornó... Azt nem írtam, hogy próbáltam már a $_FILES tömbből elérni (ahogy írtad is), és ezt jól is tettem, azzal a kivétellel, hogy elcsesszintettem két karaktert a formon belül, az inputnak adott névnél, és emiatt nyilván nem működött...
Tehát így:
$tipus = $_FILES["uploaded"]["type"];
(na, és itt az uploaded helyett upload-ot írtam, és ezt jó ideig nem vettem észre
)
-
Sk8erPeter
nagyúr
Ezzel helyesen tudod megjeleníteni ATW-n is az UTF-8-as karakterkódolást?
Csak mert én már rákérdeztem ATW-nél, hogy mikor válik lehetővé ott az UTF-8-as kódolás helyes megjelenítése, miért csak az ISO-8859-2 kódolás megy, és ezt válaszolták:
"A karakterkódolás az ingyenes oldalaknál valóban csak ISO-8859-2 lehet. Ez régebbről maradt így a rendszer felépítése miatt, és több dolgon is módosítani kellene, hogy változzon. Idővel természetesen változni fog ez, egészen konkrétan az admin felületről lehet majd választani. Pontos időpontot erre most nem tudnék mondani."Ezek szerint mégis ki lehet ezt kerülni, és helyesen megjeleníteni az UTF-8-as kódolású weblapokat?
_______________
Még egy kérdés a képfeltöltéssel kapcsolatban: hogyan tudom olvasható formában kiíratni egy feltöltött kép típusát? Próbálkoztam párral, de eddig valahogy nem jött össze:
image_type_to_extension
image_type_to_mime_type
Persze lehet, hogy valami tök triviális dolgot rontok el, vagy valamire nem gondoltam.Köszi!
-
Sk8erPeter
nagyúr
Hali!
Bocsánat, csak most volt időm foglalkozni a dologgalKöszönöm a segítséget!
A dolog valamilyen oknál fogva nem működik jól:
ha létezik a fájl, létrehozza az új, kiegészített fájlnevet, de maga a kép csak az image változóban meghatározott számsorozatot tartalmazza (36 bájt, nyilván, mivel 36 szám (karakter) van benne).Egy-két alapdolog még nem teljesen tiszta számomra, ezért inkább megkérdezem:
1.) mi a szerepe az$image = '010101110101011010111010101011011110';
sornak?
A file_put_contents szerint ez hozzáfűzi ezt az infót a fájlhoz. Valóban, a tartalma ez lesz. Tehát ha megnézem magát a fájl tartalmát mondjuk szövegszerkesztővel, akkor benne ezt látom.
De ez mire jó jelen esetben? Csupán ennyit fog tartalmazni a fájl, semmi mást.Ebből következően a képet nem tudja megjeleníteni, mert arra vonatkozó infókat nem tartalmaz, hogy akkor hogyan is néz ki a fájl (ezt felülírja az image változóval a file_put_contents második paramétere).
2.) Jól értelmezem, hogy az alábbi sornál a strpos megkeresi azt a pozíciót, ahol a pont előfordul a fájlnévben, és a substr pedig a file változó legelejéről kezdve elmegy a pontig, és azt adja vissza eredményül?
$name = substr($file, 0, strrpos($file, '.')); // kiterjesztés levágása
Majd ha jól értem, a while függvényben szereplő cucc ehhez a névhez fogja hozzáfűzni a ".jpg" kiterjesztést.
Egyébként természetesen jpg kiterjesztésű fájllal próbáltam ki a dolgot. -
Sk8erPeter
nagyúr
Hali!
Viszonylag egyszerű kérdésem lenne:
van egy képfeltöltő szkriptem, és azt szeretném, hogy amennyiben már létezik azonos nevű fájl a tárhelyen, adott könyvtárban, akkor a szkript dobjon hozzá mondjuk egy alsóvonás2-t (_2).
Példa: valami.jpg-t akar valaki feltölteni, de ilyen nevű már van a tárhelyen, ezért az új valami.jpg fájlból valami_2.jpg fájl lesz.Mondjuk ez hülyén mutat, ha már van egy valami_2.jpg fájl, mert abból valami_2_2.jpg lesz... De mindegy, ez már lényegtelen.
(ez áthidalható úgy, hogy csak mondjuk alsóvonást teszek hozzá...)
Esetleg olyan megoldás is létezik, hogy automatikusan generál hozzá akármilyen végződést? Végül is így működnek a képfeltöltő oldalak is.
Köszi!
____________________________
(#2865) lezso6: bocs, csak most láttam a választ, köszi az infót!
(#2863) Tele von Zsinór: neked is köszi! -
Sk8erPeter
nagyúr
Ezek szerint az include ilyen durván lassítja a betöltést?
Ez nem túl jó, mert a baloldali menük miatt egy honlapon így oldottam meg, hogy ne kelljen mindenhol megismételni.
Végül is akkor észrevehető valamennyire a sebességbeli különbség olyan esetben, ha csak mondjuk a menüpontokat include-olom? -
Sk8erPeter
nagyúr
Hello!
Készítek egy viszonylag egyszerű honlapot, amihez szeretném, ha olyan is tudna feltölteni képeket képaláírásokkal együtt az egyes menüpontokhoz, akinek fogalma sincs, mit kellene átírni a html-kódban.
Arra gondoltam, hogy ehhez lehetne egy admin-felület, - szemléltetésként - pl. www.honlap.hu/admin, és itt be tudna lépni a user egy felhasználónév-jelszó párossal, ami után lenne egy "Tallózás..." gomb (ezzel tudna képeket feltölteni), majd ezalatt három szempont szerinti képaláírás (ilyen táblázatszerűen elrendezve), amit csak be kellene írnia, majd még kiválasztaná, hogy melyik menüponthoz töltse fel, a "Kész!" gomb lenyomásának hatására pedig már meg is jelenne az oldalon, az adott menüpontban az új feltöltött kép.
Gondolom ehhez php kellene, de javítsatok ki, ha nem. Elég kezdő vagyok a témában, tudnátok esetleg valami kicsit szájbarágós leírást adni ahhoz, hogy hogyan is tudnám ezt megvalósítani?Szemléltetésként - ilyesmire gondolok:
A végeredmény meg valami ilyesmi lenne (persze egy adott menüponton belül!):
Előre is köszi!
Új hozzászólás Aktív témák
Hirdetés
- BESZÁMÍTÁS! GIGABYTE AORUS ELITE Z790 i7 14700K 64GB DDR5 1TB SSD 7900XTX 24GB be quiet! SB802 1000W
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- BESZÁMÍTÁS! Gigabyte B760M i5 13400F 16GB DDR4 512GB SSD RTX 3070 8GB Pure Base 500DX fehér 650W
- Apple iPhone 12 Mini 64GB, Kártyafüggetlen, 1 Év Garanciával
- ÚJ Lenovo ThinkPad X13 Gen 5 - 13.3" WUXGA IPS - Ultra 5 135U - 16GB - 512GB - Win11 - 2,5 év gari
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest