Hirdetés
-
Ősszel jön a Metal Slug Tactics teljes kiadása
gp Kezdetben PC-re és Switch-er szánták a játékot, végül kiderült hogy PlayStationre és Xbox-ra is megkapjuk.
-
Hódít az AI, közben a Microsoft emberek százait küldi el a felhős részlegétől
it Folyamatosak a dollármilliárdos befektetések a felhő, az adatközpontok és az AI kapcsán, de a Business Insider jelentése szerint eközben emberek százait küldik el a Microsoft felhős ágazatától.
-
Computex 2024: az ASUS nem viccel, ha felsőkategóriás billentyűzetről van szó
ph A ROG Azoth feltupirozott utódja elég impresszív lett, és egy mozdulattal puhítható vagy keményíthető vele a gépelési érzet.
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
$response.user_exist=true;
$response.pass_ok=true;
$response.auth_ok=true;
Ilyen nincs PHP-ben, ilyen van:
$response['user_exists'] = TRUE;
$response['pass_ok'] = TRUE;
$response['auth_ok'] = TRUE;$ = mysql_result($, 0); // ide nem tudom mi kéne:/
Én sem, mert nem írtad, ide minek kéne jönnie.Szerk.: most látom, hogy közben utólag szerkesztetted a hsz.-edet.
"A jquery-ben utána ha pl response.user_exist=true és response.pass_ok=false jött vissza"
Akkor ezek szerint mégis jQuery-vel szeretnéd összehozni... Én meg az előbb ennek megfelelően írtam meg a példát. Azon mi nem volt érthető?
A fentebbinek a vége is akkor
json_encode($response);
épp ahogy előbb is írtam....(#9152) Speeedfire : akkor jó.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
Pont ezt magyaráztam, hogy ha ez a vége a PHP-fájlodban:
echo json_encode($response);
akkor úgy tudod elérni a változókat jQuery-ben, ahogy az előbb mutattam... Ennél egyszerűbb példát erre nehéz lett volna mutatni.
Először mutattam a PHP-kódot, majd utána a jQuery-ben való b@szkurálást.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
Nincs mit, de végül hogy oldottad meg?
Megoldhatjuk szépen is.A data.auth_ok ellenőrzésére vonatkozó ág most hirtelen nem esik le, hogy miért nem volt igaz, pedig az alapján jónak tűnt. Mondjuk akkor értettem volna, ha így néz ki:
data = {"user_exist":"true","pass_ok":"true","auth_ok":true}
Tehát nem stringként van benne, hanem simán true értékkel, mert akkor a data.auth_ok == "true" hamisra értékelődik ki, a data.auth_ok == true igaz.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Sk8erPeter #9158 üzenetére
Amúgy attól függ, mit küldesz PHP felől.
Példa:
test.php<?php
$response = array();
$response['user_exists'] = TRUE;
$response['pass_ok'] = TRUE;
$response['auth_ok'] = TRUE;
$response['auth_ok_2'] = 'true';
echo json_encode($response);erre a response pedig (a data objektumban) ez lesz a fentebbi módszerrel:
{"user_exists":true,"pass_ok":true,"auth_ok":true,"auth_ok_2":"true"}
Ebből jól látható, hogy a
(data.auth_ok == true)
igaz lesz, a
(data.auth_ok == 'true') hamis,
aztán a _2-nél pedig fordítva:
(data.auth_ok_2 == true)
hamis
(data.auth_ok_2 == 'true')
igaz.Jim-Y: azt javaslom egyébként, hogy használd a console.log()-ot, ez mondjuk IE-nél nem működik, ha nincs megnyitva a fejlesztőkonzol (értelemszerűen régebbiekben, ahol ez még nincs is, még annyira sem működik), de Chrome-nál nagyon szépen kiíratja az értékeket (meg Firebugban is jó), egyszerű példa:
$.post('ajax/test.html', function(data) {
console.log('data after POSTing:');
console.log(data);
$('.result').html(data);
});Sk8erPeter
-
Sk8erPeter
nagyúr
Nem hiszem, hogy az volt a gond, hogy kihagytad a $response = array() sort, hiszen a PHP ennél egyszerűbb (persze ez nem mindig előny), ha akárhol azt mondod, hogy $response['loszar'], akkor létrejön a $response tömb, a 'loszar' kulccsal.
Szerintem az a gond, hogy az echo-zásnál a json_encode()-ot következetesen kihagyod.Második kérdésre:
Igen, ott.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9169 üzenetére
Nem ártana tudni, mit akarsz kezdeni az adatokkal, egyáltalán hogy küldöd el szerveroldalra, és hogyan fogod feldolgozni, hogy fogod eltárolni...
Itt egyébként miért a getDay értékét küldöd el? (Gondolom tudod, hogy az 0-val kezdődik, ami a vasárnapot jelzi, a hétfő az 1-es, stb...)
Egyébként a céltól függ, hogy mit és mennyire érdemes szétbontani.
Mondjuk itt valami dátumot akarsz beállítani, ha jól látom, hogy meddig elérhető a hirdetés. Ezt nem valami Datepickerrel intézed el? Ha nem, akkor csináld azzal, csak hogy megint megkaphassam a fejemhez, hogy hype-olok. (Egyébként csak azért ajánlott, mert iszonyat egyszerű a kezelése.)Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9176 üzenetére
Ha AJAX-szal küldenéd el, akkor is meg tudnád nézni a helyességét.
Ha nagyon muszáj így csinálni, hidden input fieldekkel, akkor igen, én mindenképp kettébontanám, felesleges egybesűríteni.
De szerintem nem muszáj. Nekem eleve az nem világos, hogy ezt miért akarod kliensoldalon elintézni, ha a kliensoldalon lényegében semmi szerepe nincs - tehát miért nem szerveroldalon kéred le az aktuális napot, időt, date()-tel... A checkbox megléte vagy hiánya úgyis egyértelművé teszi a helyzetet, így felesleges kliensoldalon beállítani, plusz ugye az megint csak tök felesleges plusz validálás.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9177 üzenetére
Hogy mi? Miért feltételezed, hogy a mai napon született, mondjuk 35 éve?
Ez ugye ezt adja vissza: "1977-04-08"...
Ennek mi értelme? Te nem csak évre vonatkozó életkort akarsz számolni? Megint kicsit homályos nekem a kérdésed.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9180 üzenetére
where bday >= '1982-08-17' and bday<='1950-02-14'
Csak azt magyarázd el nekem, hogyan fog valaha is teljesülni az, hogy egy dátum 1982-nél későbbi, de 1950-nél korábbi!Ja hogy a kliens pontos ideje kell (tehát a látogató szerinti idő), azt előbb nem írtad, így érthető.
Én a helyedben ezt a számolgatást inkább az adatbázisra bíznám, ha már úgyis onnan kellenek az adatok. Bár ez megint hitkérdés, mert a query cache szempontjából lehet, hogy jobb, ha inkább PHP-ra bízod a számolást.
Na de abból már eleve ki lehet indulni, hogy a MySQL-ben nagyon egyszerűen lehet egyszerű intervallumokat számolni, lásd pl. ezt:
SELECT DATE_SUB( NOW(), INTERVAL 60 YEAR );
Eredménye épp most:
1952-04-08 19:41:06Most leteszteltem az intervallumokra egy teszttáblával és néhány tesztadattal, úgy, hogy az ezelőtt 30-60 évvel születettekre vagyok kíváncsi, ez lesz az intervallum, a teszttáblával tök jól működött:
Táblastruktúra:
CREATE TABLE IF NOT EXISTS `test_dates` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`my_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_hungarian_ci AUTO_INCREMENT=10 ;
INSERT INTO `test_dates` (`id`, `my_date`) VALUES
(1, '2012-04-08 16:52:36'),
(2, '2012-02-06 10:00:00'),
(3, '2012-01-09 11:36:00'),
(4, '2011-01-09 08:00:49'),
(5, '1981-07-07 22:00:00'),
(8, '1972-03-14 23:33:00'),
(9, '1978-04-04 16:00:00');A query az intervallumokkal:
SET @now = NOW( );
SET @interval_start = 30;
SET @interval_end = @interval_start + 30;
SET @date_first = DATE_SUB( @now , INTERVAL @interval_end YEAR );
SET @date_second = DATE_SUB( @now , INTERVAL @interval_start YEAR );
SELECT * FROM `test_dates`
WHERE
`my_date` >= @date_first
AND
`my_date` < @date_second
ORDER BY `my_date` ASC;Nálam "a lekérdezés 0.0221 másodpercig tartott".
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
válasz Speeedfire #9185 üzenetére
Számomra egyből átlátható a query-s változat, főleg ez az INTERVAL 60 YEAR és hasonló megoldások igazából az ember pofájába vágják, hogy igazából itt mi is történik.
Ilyesmire én inkább ezt preferálom, még ha a query cache szempontjából valaki máglyán is akarna látni emiatt.Mindenesetre az tény, hogy a PHP-vel sztringként összeállítós megoldás ránézésre ocsmányabb. Meg nekem kevésbé átlátható.
De az tény, hogy a tiéd nyert, mert 0.0001 másodperccel gyorsabban futott le.
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9187 üzenetére
Query cache, nézd meg az első tippet:
[Nettuts+: Top 20+ MySQL Best Practices]Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9189 üzenetére
A linkelt példában csak CURDATE() van, ami ilyen:
2012-04-08Ha aznap meg van mondjuk 1000 ugyanilyen lekérés, ami ezt a dátumot tartalmazná, akkor miért is ne cache-ből kotorja elő. A CURDATE() nem sokszor változik egy nap...
Igen, nálad bőven lehetnek variációk, meg gondolom nem töltik ki olyan durván sokszor azt a formot, szóval én nagyjából itt leszarnám a query cache-t, és épp ezért alkalmaznám a korábban mutatott módszert.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
Én is azt javaslom, amit Tele von Zsinór már előttem elmondott, hogy azért a biztonság kedvéért előbb kukkantsd meg egy Hex Editorral, pl. ez az XVI32 elég jó: [link]. Megmutatja, hogy nincs-e mégis BOM vagy más rejtett karakter az elején.
Szerk.: látom megoldódott.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz vakondka #9216 üzenetére
Hali!
Ilyet nekem is kellett még ötezer éve csinálnom, én akkor ez alapján csináltam, és működött:
How do I convert a .pfx to be used with an Apache server?
Lényegében hasonló ahhoz, amit Te írtál, csak -nokeys kapcsoló nélkül. Meg mondjuk ez igazából https-kapcsolathoz kellett Apache-ra.
Tényleg nagyon rég volt, de nekem úgy rémlik, mintha szükség is lett volna arra a kulcsra, amit a tanúsítvány kibocsátója adott, de nem adnám rá a nyakam...
Mondjuk tudom, ezzel aztán rohadt sokat segítettem...[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
válasz Speeedfire #9221 üzenetére
Elfelejtetted bekapcsolni a PHP-s szintaktika-kiemelést.
Konkrétan mit írtál át? Most nincs időm áttanulmányozni az egész kódodat.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9223 üzenetére
"Annyi, hogy a tmp fájl máshogy declarálja a dolgokat, ott kicsit máshogy van."
Hát ez most nagyon sejtelmes válasz volt. Pont a konkrétumokra lettem volna kíváncsi, hogy mit kellett változtatni..."A type-ot írtam át és illetve az array-ből adtam meg neki a magasságot és a szélességet."
Mit írtál át a type-on?
Milyen array-ből?Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9225 üzenetére
Ja, vágom, hogy a getimagesize visszaadott tömbjének 2. indexe IMAGETYPE_XXX konstanst ad vissza, ami egy szám.
Éppen ezért jobban járnál, ha a semmitmondó számok helyett egy kicsit egyértelműbb jelzést használnál:switch($type){
case '6': $img = imagecreatefromwbmp($src); break;
case '1': $img = imagecreatefromgif($src); break;
case '2': $img = imagecreatefromjpeg($src); break;
case '3': $img = imagecreatefrompng($src); break;
default : return "Unsupported picture type!";
}HELYETT:
switch($type){
case IMAGETYPE_BMP: $img = imagecreatefromwbmp($src); break;
case IMAGETYPE_GIF: $img = imagecreatefromgif($src); break;
case IMAGETYPE_JPEG: $img = imagecreatefromjpeg($src); break;
case IMAGETYPE_PNG: $img = imagecreatefrompng($src); break;
default : return "Unsupported picture type!";
}Szerk.:
itt láthatsz jó hosszú listát ezekről a konstansokról: [link].[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9228 üzenetére
Ja értem, és azt a 4 számot lecserélni a fentebb felsorolt teljesen egyértelmű konstansokra biztos rohadt nagy meló... De ha szereted a misztikus kódokat, úgy minden más.....
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9231 üzenetére
Ezek a PHP-ben alapból meglévő, előre definiált konstansok, neked semmit nem kell megírnod, erről beszéltem eddig is, nem véletlenül linkeltem be a php.net-es példákat tartalmazó kommentet is...
Szerk.:
de ha nem hiszed, akkor próbáld ki ezt egy tesztoldalon:<?php
function my_var_export($stuff, $text = '...'){
return '<p>'.$text.':</p><pre>'.var_export($stuff, TRUE).'</pre>';
}
echo my_var_export(IMAGETYPE_GIF, 'gif');
echo my_var_export(IMAGETYPE_JPEG, 'jpeg');
echo my_var_export(IMAGETYPE_PNG, 'png');
echo my_var_export(IMAGETYPE_BMP, 'bmp');Mivel PHP-s konstansokat használnál fel, így a kódod hordozható is lenne...
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Brown ügynök #9238 üzenetére
Próbáld nem ilyen tömbszerűen meghívni, szerintem az lehet a baj.
Pl. van egy Drupal-modul, az Ubercart, ami egy elég régóta fejlesztett webshopmodul, ott van egy hasonló példa:
[link]if ($image_widget) {
$image_widget_func = $image_widget['callback'];
$output .= $image_widget_func($rel_count);
}Szóval próbáld így:
$controller = $route["controller"];
$action = $route["action"];
$c = new $controller();
$c->$action();Nem garantálom, hogy így menni fog, de esélyesebb.
===
(#9239) Speeedfire :
úgy tuti nem jó.
OK, már eltüntetted.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz InfiniteReality #9246 üzenetére
"Továbbá ha egyéb php file-okat is include-álsz amiben szintén szükség van a session-re akkor @session_start(); és nem okoz E_NOTIFY üziket a php error logban."
Na ezt NE!!! Főleg ne egy viszonylag kezdőnek...
Mi értelme van annak, hogy van egy ordas nagy hiba, de inkább úgy csinálsz, mintha nem tudnál róla/nem lenne?
Tudom, van egy olyan mondás, hogy "amiről az ember nem tud, az nem is fáj", de ez sajnos a programozásnál nagyon nem igaz.A hibajelzéseket nem elrejteni kell, hanem megszüntetni a hiba okát.
Sk8erPeter
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
válasz InfiniteReality #9249 üzenetére
PazsitZ előttem már szépen elmondta, vannak alternatív módszerek annak elkerülésére, hogy több fájlban is kelljen sessionöket küldözgetni. Meg lehet template-ezni is, stb. Alapvetően a keretrendszerek, CMS-ek felhasználásakor nem kell ilyesmivel szívnod.
De hogy lehetséges megoldást mondjak arra is, amiről Te beszélsz, lehet ellenőrzéseket is végezni:
1.) headers_sent() függvény segítségével megtudhatod, a HTTP fejlécek el vannak-e már küldve - azt is meg lehet vele tudni, konkrétan hol.Ilyen módon nem használtam még, de ez működhet:
if(!headers_sent && !isset($_SESSION)){
session_start();
}2.) AJAX problémára:
a jQuery pl. beállít egy fejlécet az XMLHTTPRequest-kérésekre (lásd [link]), így a jQuery-s AJAX-függvények használata esetén ez is teljes biztonsággal ellenőrizhető (sokszor tesztelve, valóban működik):define('IS_AJAX', ( isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' ) );
if(IS_AJAX){
session_start();
}Valószínűleg más JS-library-k, frameworkök is beállítanak valami plusz headert, hogy konkrétan mit, az könnyen kideríthető.
Mivel elsősorban AJAX-os problémáról beszéltél Te is, utóbbi megoldás lehet a jobb a kettő közül. De alapvetően inkább egyik sem - jobb adni egy "keretet" a programjaidnak, amiben bizonyos szabályok szerint működnek a dolgok, mindennek megvan a helye, és nem mindenféle fájlban indítgat az ember sessiont - valami olyasmi a megoldás, amit előttem PazsitZ leírt.Alapvetően a hibák elnyomása a @ karakterrel egy nagyon rossz szokásra ösztönöz.
Az elnyomott hibák felderítése pedig egy kódban maga a pokol.
NEM képzelhető el olyan eset, amikor a hibák elnyomását ne lehetne elkerülni valami előzetes vizsgálattal. Ha pedig van rá lehetőség, akkor azt kell alkalmazni.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Sk8erPeter #9256 üzenetére
if(!headers_sent && !isset($_SESSION))
a gyors gépelés közben itt természetesen lemaradt a zárójel a headers_sent után, tehát így lenne jó:
if(!headers_sent() && !isset($_SESSION))Sk8erPeter
-
Sk8erPeter
nagyúr
válasz InfiniteReality #9260 üzenetére
Szívesen, örülök, hogy működött.
Az utóbbi kérdésről itt egy link:
http://stackoverflow.com/a/6472150/517705"After using session_destroy(), the session cookie is removed and the session is no longer stored on the server. The values in $_SESSION may still be available, but they will not be on the next page load."
A másik:
If you need to clear the values of $_SESSION, set the array equal to an empty array:
$_SESSION = array();Sk8erPeter
-
Sk8erPeter
nagyúr
"Az isset elhagyható."
A hsz.-ed nagy részével egyetértek, de ezzel nem.
Ha ezt csinálod, és az oldal úgy töltődik be, hogy a felhasználó még nem küldte el a formot, akkor a következő kód hatására:
if (!($_POST["nev"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";
szépen kapsz egy notice-t:Notice: Undefined index: nev in ......... on line ........
Akkor már érdemes átereszteni egy empty()-n, ez elméletileg az ellenőrzéshez először végez egy isset()-et amúgy is, és ha ez hamis, egyből visszatér, tehát ezzel nem kapsz notice-t:
if (empty($_POST["nev"])) print "Mégis hogy gondolod azt, hogy nem adsz meg nevet?<br />";
Sk8erPeter
-
Sk8erPeter
nagyúr
Mondjuk az is igaz, hogy most nézem, Te előtte nyomatsz egy if ($_POST), ami miatt tulajdonképpen csekkolod, hogy egyáltalán valami $_POST érték be van-e állítva, de az előbb írtak attól még állnak (az empty()-vel ellenőrzés), mert pl. ha a júzer egy checkbox-ot nem választ ki, akkor abban az esetben nem is állítódik be a hozzá tartozó $_POST változó.
Szerk.: ne aggódj, ezzel én is így vagyok, meg kábé mindenki, aki fejleszti magát programozásból, én is fogom a fejem és pirulok a régi kódjaim láttán.
Szerk. 2.:
(#9277) Speeedfire:
én már onnantól kezdve nem értem, hogy nem látom, milyen globális függvényt írtál, és hol is hívod meg.
" $kategorianev->kategoria; sorra kiírja, hogy nincs az xyz controllerben $kategorianev változó, ami érthető mert én nem is raktam oda..."
Hogy mi? Nem a $kategorianev-en belül nem létezik a public $kategoria mondjuk?Na mindegy, "dögöljek meg, ha ebből egy szót is értek".
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
válasz Brown ügynök #9285 üzenetére
Vagy empty()-vel, ahogy írtam.
(#9284) CSorBA : persze, hogy foglalkoznék. Nem szeretem, ha a kódom működése nem kiszámítható.
(#9283) Speeedfire: ha jobban tudod, minek kérdezed?
Egyébként nem magyaráztad el jobban semmivel.Sk8erPeter
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
válasz Brown ügynök #9305 üzenetére
"átváltott ANSI-ba"
Magától? Ez fura, mert így még nem jártam Notepad++-szal, pedig sokszor használtam már karakterkódolás megváltoztatására.
Egyébként érdekes, hogy a Drupal core fájljait is ANSI-ban szokták írni, de Unix-sortörésekkel, legalábbis a Notepad++ ezt érzékeli, NetBeans meg sír, ha már ékezetes karaktereket tartalmazó kommenteket írok bele, mondván, nem helyes UTF-8-kódolású fájlom van - a NetBeans meg ugye defaultból UTF-8-cal dolgozik (persze BOM nélkül).
Szóval ha a NetBeans sír, akkor először konvertálom (! - nem pedig csak "átkapcsolom") UTF-8-ra, és onnantól már a NetBeans-nek is megfelelő, persze lehet, hogy ezt a konverziót NetBeans-ben is el lehetne végezni, ilyen opciót mondjuk még nem találtam (igaz, nem is olyan nagyon kerestem, csak egy rövid ideig).
Másik megoldás, hogy egyszerűen NetBeans-ben létrehozod a fájlt, az már eleve UTF-8 lesz, és ebbe belemásolod a tartalmat.
Vagy nem használsz ékezetes karaktereket egyáltalán. De utóbbi persze nyilván nem lehetőség, ha szükség van pl. magyar vagy más nyelvű, ékezetes karaktereket tartalmazó stringre, kommentre.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Brown ügynök #9312 üzenetére
És a $route tömbnek honnan kéne jönnie?
Van egy ilyened: getApplicationRoutes(), ebben:
$routes = new Routes();
de ennek a visszaadott értéke elvész az éterben, mert nem azt írtad, hogy $this->routes = new Routes();.
Ezenkívül te utána a $route tömb (egyesszámban) értékeit akarod felhasználni, ami ki tudja, hol lenne beállítva, nem $this->routes változót, ami esetleg még tartalmazna is valamit.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9318 üzenetére
A függvényedet nem fejezted be, nincs vége, nem látni, aztán mivel térsz vissza.
Itt először a $filename-be beleteszed a kiterjesztés nélküli változatot, de aztán sehol nem vágod le ezt a részt. Gondolom úgy szeretnéd, hogy a kiterjesztés nélküli változatot levágod, aztán hozzápakolod az eredeti kiterjesztést.
Szóval a végén kéne még egy ilyen:
return ( mb_substr($filename, 0, $maxLength, 'UTF-8').$ext );Ha alapnak vesszük az UTF-8 karakterkódolást, akkor nagyon nem árt, ha odateszed, hogy stimmeljen a hossza, lásd ezt itt. (Tehát esetleg a $filename változóba belerakáshoz is oda kéne tenni.)
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9320 üzenetére
Akkor jó.
Amúgy fájlneveknél szerintem elég hülyén mutat a három pont a végén, ott inkább simán vágd le a megfelelő karakterhossznál, majd ellenőrizd, olyan néven nem létezik-e már ugyanilyen fájl, ha igen, akkor tegyél mögé egy alsóvonás+inkrementálódó indexet, azt' kész.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9322 üzenetére
Ha nem fájlnevek levágására fogod használni, akkor miért az a változó neve, hogy $filename, és az $ext változóba miért láthatóan fájlnév-kiterjesztést szeretnél belerakni?
De ami fontosabb: ha ezt pl. címek és ehhez hasonlók levágására akarod alkalmazni, akkor jó szarul fog működni, ahogy a címed akár egy pontot is fog tartalmazni...
Hadd mondjak gyorsan egy példát:Itt a címed:
$myTitle = 'L.orem ipsum dolor sit amet, consectetur adipiscing elit Maecenas nec odio eget magna malesuada vestibulum nec ut nunc';
echo levag($myTitle);Eredménye:
'L....orem ipsum dolor sit amet, consectetur adipiscing elit Maecenas nec odio eget magna malesuada vestibulum nec ut nunc'Biztos, hogy te ezt akartad? Nem hiszem.
Szerk.: egyébként gyorsan hozzáteszem, pontosan a fenti miatt fájlnevek levágására sem biztonságos ez a módszer, mivel semmi nem garantálja, hogy a kiterjesztés mondjuk ne legyen olyan hosszú, mint a fenti példában az "L." utáni rész - már ha előtte a megfelelő PHP-s fájlellenőrizgető függvényeken nem futtattad át, és ellenőrizted inkább azokkal a fájlnév-kiterjesztést.
[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9324 üzenetére
Nálam meg másnapos vasárnap van, úgyhogy eltartott egy darabig, amíg felfogtam ezt a regexpet.
Amúgy ez referenciának elég jó komment: [link]. Mondjuk nem minden modifier van benne, amit itt használsz ebben a példában. Az nekem kicsit fura, hogy ha nem illeszkedik a regexpre, akkor üres stringet adsz vissza, de végül is lehet, hogy ezzel ki lehet szűrni, ha mondjuk más típusú változót adsz át a fv.-nek, nem stringet, bár akkor nem vágom, miért nem futtat arra egy korábbi ellenőrzést.Sk8erPeter
-
Sk8erPeter
nagyúr
Ha ilyen van, miért nem kapod elő a php.net leírását?
"For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error."
Az adatbázis-kapcsolati erőforrás-azonosítót adja vissza."The returned result resource should be passed to mysql_fetch_array(), and other functions for dealing with result tables, to access the returned data."
Ott a példa is:
// Perform Query
$result = mysql_query($query);
// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
// Use result
// Attempting to print $result won't allow access to information in the resource
// One of the mysql result functions must be used
// See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while ($row = mysql_fetch_assoc($result)) {
echo $row['firstname'];
echo $row['lastname'];
echo $row['address'];
echo $row['age'];
}=====
Nálad most csak egy sor lesz, ezért nem kell ciklus:
...
if(!empty($rows)){
$row = mysql_fetch_assoc($res);
echo 'The country code is the following: '.$row['country_code'];
}==============================================
(#9329) whited :nincs mit!
Amúgy csak szimpla i-vel Brian.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
válasz Speeedfire #9336 üzenetére
- Mila Kunis jóféle
- De nem ám.
Ember legyen a talpán, aki ezt érti.Sk8erPeter
-
Sk8erPeter
nagyúr
válasz spammer #9342 üzenetére
Ez mitől PHP kérdés?
Egyébként kicsit homályos a kérdésed.
Most a linkkel oldalon belül szeretnél ugrabugrálni, vagy épp, hogy külső linket szeretnél meghatározni?
Ide felraktam neked mindkettőről példát:
http://jsbin.com/iliwac/1/edit#html,liveSk8erPeter
-
Sk8erPeter
nagyúr
-
Sk8erPeter
nagyúr
válasz negyedes #9356 üzenetére
fordfairlane igazából kb. pontosan ezt írta le, hogy itt ne legyen undefined index:
if(isset($_SESSION['valid_user']) && $_SESSION['valid_user'] == true){
include('fejlec_be.php');
}
else{
.............
}de persze ahhoz, hogy egyáltalán legyen bejelentkezett állapot, neked kell beállítanod a $_SESSION['valid_user'] változót.
De ezt azért szebb lenne, ha inkább egy külön függvénybe raknád be, hátha ott még külön ellenőrzésekre is szükség lesz:function user_is_logged_in(){
// ..... ellenőrzöd, a felhasználó be van-e jelentkezve
// ha IGEN:
if( $bejelentkezve ......... ){
return TRUE;
}
// ha nincs bejelentkezve
return FALSE;
}
if( user_is_logged_in() ){
include('fejlec_be.php');
}
else{
include('fejlec.php');
}Szerk.:
Amúgy igen, fordfairlane ezt is jól írta:
"Ha nem csak az index.php oldal lesz, hanem érkezik mellé több fájl, akkor ezt a feltételvizsgálatot érdemes átrakni a fejlécbe."[ Szerkesztve ]
Sk8erPeter
Új hozzászólás Aktív témák
- Most 2027-re tippelik az Apple iFoldot
- EAFC 24
- Mindennél kisebb és gyorsabb chipeket hoznak az ASML új gépei
- Mobil flották
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Robot fűnyírók
- Honor Magic V2 - origami
- [SoP] Premier dátumot kapott a Silent Hill 2 Remake
- Kínai, és egyéb olcsó órák topikja
- Skoda, VW, Audi, Seat topik
- További aktív témák...
- MacSzerez.com - iPhone 11 Pro / 64GB / Kártyafüggetlen / Space Grey / Garancia!
- Google Pixel 8 Pro Bay 128gb - Használt, Google gari, akár beszámítással
- Gamer PC RTX 3070 Intel i5 10600KF 1TB NVME SSD Nagyrészt új alkatrészek Garancia és Beszámítás!
- Apple iPhone 15 Pro Black 1TB - Makulátlan, Apple garancia, akár beszámítással
- Apple iPhone 14 Pro Max 1TB - Makulátlan, akár beszámítással
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs