PayPal - Rendszeres, automatikus átutalás lemondása, avagy megújuló előfizetés

FIGYELEM: Ez a leírás elavult!
A visszajelzések alapján a PayPal változása miatt a lenti megoldás már nem működik. Friss információk a hozzászólásokban.

PayPal

Manapság elterjedt fizetési lehetőség a PayPal fiókon keresztül történő manuális vagy automatikus tranzakció. Ez utóbbi annyit jelent, hogy egy bizonyos szolgáltatásra úgymond feliratkozunk, és rendszeres jelleggel egy adott összeg levonásra kerül az elérhető PayPal egyenlegünkből, vagy annak híján a megadott bankszámlánkról, ha hozzárendeltünk egyet a fiókhoz. A fizetésnek ez a része még mondhatni, egyszerű. Ráadásul úgy látom, a fizetésről több leírás szól, mint annak lemondásáról.

Megosztás/Mentés

Apache, osztott mappa virtuális gépen - A fájlok nem frissülnek a böngészőben

Nem szeretek kérdezni, ha nem sürgős a megoldás. Szeretek magam rájönni mindenre, még ha ez időbe is telik. Nem volt ez másképp most sem, amikor virtuális gépen próbáltam futtatni apache webszervert, amihez a gazda gépről megosztottam egy partíciót az egyszerűség kedvéért. Miután a jogosultságokkal és a partíció felcsatolásával megbirkóztam, beletelt egy kis időbe, mire google-lal megtaláltam a megoldást a következő problémámra is:

Megosztás/Mentés

MySQL WorkBench és Ubuntu 11.10 Oneric

Már egy ideje feltűnt, hogy nem indul el a MySQL WorkBench -em, de épp nem volt sürgős megoldani és gondoltam, biztosan valamit én csinálok rosszul. De mint ma kiderült, nem vagyok egyedül a problémával. Viszont van rá megoldás. Ráadásul egész egyszerű.

Valójában a MySQL WorkBench elindul, de a Splash képernyőnél meg is áll. Viszont fél perc google után megtaláltam a következő oldalt: MySQL Workbench 5.2.34 building fails on Oneiric (Ubuntu 11.10) beta. Ami meg is oldotta a problémám. Ugyanis elég a splash screen betöltése után nyomni egy ALT+F4 billentyűkombinációt, ami - gondolom - bezárja a splash screent és betölt rendesen a workbench.

Remélem, ezt a lépést sem kell sokáig elvégezni, de addig is vészmegoldásnak jó. A fent linkelt oldalon még javasolnak több megoldást is, de ennek egyszerűsége mindent ver.

Szerkesztve: 2011. december 20. 14:55
Vagy egyszerűen fel lehet telepíteni a legfrissebb workbench verziót :) Hát igen. Ezt lehet, a bejegyzés írása előtt is kipróbálhattam volna.

Megosztás/Mentés

PHP fordítási hiba: /usr/bin/ld: cannot find -lltdl

Mi a teendő, ha a make parancs futtatása után a következő hibaüzenet fogad?

/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [libphp5.la] Error 1

Bizonyos kiterjesztések igényelnek egyéb könyvtárakat. Jó esetben már a configure futtatásakor kiderül, de ha nem, akkor a make fog elszállni hibával. A fenti hibaüzenet az mcrypt bővítmény befordításakor jön elő például. A -lltdl arról árulkodik, hogy az ltdl könyvtár hiányzik.

Megoldás: Feltelepíteni a libltdl-dev könyvtárat.
ubuntu linuxon: sudo apt-get install libltdl-dev

Megosztás/Mentés

Rekordlista-szerű tömbök fa struktúrába rendezése - Fa menüstruktúra

Gyakori feladat olyan menüket készíteni, amik fa struktúrában épülnek fel és akár egy javascript program készít belőle lenyíló menüt. Vagy akár csak egy oldaltérképre is gondolhatunk. A következő megoldásom főként azon alapszik, amikor egy adatbázisban tárolunk valamilyen adatokat. Legyen az többszintű kategória rendszer vagy menüszerkezet. Ilyenkor többnyire van egy egyedi azonosító. Amire az alárendelt rekordok hivatkoznak egy másik mezőben. Emellett persze egyéb adatokat tartalmaz a rekord. Legalább egy megjelenítendő mező is van, ami például a menü szövege. De lehet hozzá leírás is rendelve. Különböző listák lehetnek, de ami közös bennük, az a felépítés módja. Azon túl más lehet a megjelenítés. Az egyiket például egyszerű rendezetlen listában kell megjeleníteni, a másikat talán már táblázatban. A harmadikat pedig csak tabulátorokat használva. Ráadásul ha már html megjelenítésről beszélünk, ott képbe jön a css is. HTML attribútumok, osztályok. Célszerűen, lehetőleg elérhetővé téve minden elemhez egy hivatkozást, amivel egyedien lehet szükség esetén formázni akár a második menüelem 3. gyerekének 1 gyerekét. Stb... Erre mutatok egy lehetséges, ám nem mindenre kiterjedő megoldást.

Megosztás/Mentés

R.E. Login 2.0 -tól oldalak megtekintésének korlátozása és jogok (rangok).

Kérek mindenkit, akinek nem a rangokkal, oldalak megtekintésével van problémája, a következő oldalon kérdezzen:
Meghívós loginrendszer - R.E. Login v2.0

Ez a login talán a legnépszerűbb programom. De való igaz, hogy nem készítettem hozzá részletes használati útmutatót. Mivel egy komplett leírásra egyszerre nincs időm, úgy döntöttem, a leggyakrabban feltett kérdésekre válaszolok. Amik egyben a leglényegesebbek is.

Hogyan kössem regisztrációhoz egy oldal megtekintését?

Teljes oldal letiltása

Ebben a verzióban létezik egy System osztály, ami többek között tartalmaz egy protectedSite() nevű metódust. Ez a metódus mondja meg a loginnak, hogy az adott oldal védett. Tehát nem tekintheti meg akárki. Paraméter nélkül hívva csak a belépést követeli meg. És ilyenkor a config-ban beállított ( Telepítéskor megadott, vagy utólag a classes/Config.class.php -ben beállított ) főoldalra irányít át, vagy külön beállított „Védett oldal fájlja” jelzésű ( config fájlban FILE_PROTECTED_SITE konstans ) oldal esetén utóbbira..

<?php
require_once 'init.php';
System::protectedSite();
?>
Amit ide írok, azt kizárólag belépett user tekintheti meg. A többi át lesz irányítva.
Megosztás/Mentés

Szöveg első N karakterének kinyerése reguláris kifejezéssel, php-val

Az előző bejegyzésemhez hasonló megoldást mutatok, csak most nem adott számú szót vág le a függvény egy szövegből, hanem karaktereket. Szintén állítható, hogy mi kerüljön a levágott szöveg végére, ha volt mit vágni. És szintén megadható, hogy unicode szövegként legyen-e értelmezve a megadott string. Itt mégis a lényegesebb paramétere a függvénynek a 3. paraméter. Ha egy szövegben pont egy szót kéne ketté vágni, nem biztos, hogy jól mutat. Vegyük példának azt a szöveget, hogy: „Mi ez a foszfor?”. Ennek az első 11 karakterét levágva fixen elég érdekes eredményt kapnánk, ami nem biztos, hogy megengedhető. A következő függvény harmadik paraméterével szabályozható, hogy a szövegben a félbevágott szavakat be kell-e fejezni, vagy esetleg el sem kell kezdeni. Netán nyugodtan meg lehet vágni bárhol. A megoldás most is reguláris kifejezésekkel működik, bár az mb_substr függvényt is használhattam volna.

Függvény

/**
 * Szöveg első N karakterének kinyerése
 *
 * @param int $n Hány karakter kell
 * @param string $str A string, amiből az első N karakter kell.
 * @param bool $wordwrapmod Ha null, akkor szavak közben is megvághatja  szöveget.
 *                                                      Ha true, akkor befejezi a szót, aminek a közepén vágna.
 *                                                      Ha false, akkor el sem kezdi a szót, aminek a közepén vágna.
 * @param bool $unicode Unicode karaktereket is értelmezzen.
 * @param string $more Tetszőleges szöveg, jelölés, ami akkor kerül az eredmény mögé,
 *                                              ha vágni kellett belőle.
 * @return string A levágott első N karakter
 */

function firstNChar($n, $str, $wordwrapmod = null, $unicode = true, $more = ' ...')
{
        $php53 = version_compare(PHP_VERSION, '5.3') >= 0;
        $w = $php53 ? '\w' : ($unicode ? '\p{L}\p{N}' : '\w');
        $W = $php53 ? '\W' :  '^'.$w;
        $x = $b = '';
        if ($wordwrapmod) {
                $x = '(?(?=['.$w.']+)['.$w.']+)';
        } else if (!is_null($wordwrapmod)) {
                $b = '(?=['.$W.']+)';
        }
        return preg_replace('~^(?>(.{0,'.(int)$n.'})'.$b.$x.').+$~is'.($unicode ? 'u' : ''), '$1'.$more, $str);
}

Példák

$nl = '<br />'.PHP_EOL;
echo firstNChar(10, "Ez egy szöveg").$nl;
echo firstNChar(10, "Ez egy szöveg", false).$nl;
echo firstNChar(10, "Ez egy szöveg", true).$nl;
echo firstNChar(10, "Ez egy szöveg", null, false).$nl;
echo firstNChar(10, "Ez egy szöveg", null, true, ' <a href="">&raquo;</a>').$nl;

Eredmény

Ez egy szö ...<br />
Ez egy ...<br />
Ez egy szöveg<br />
Ez egy sz� ...<br />
Ez egy szö <a href="">&raquo;</a><br />
Megosztás/Mentés

Szöveg első N szavának kinyerése reguláris kifejezéssel, php-val

A következő függvény az első N darab szót tudja kinyerni egy szövegből. Figyelembe veszi, hogy bár vessző, pont, stb... után szóköz kell, ezt nem mindenki tartja be. Ha egy mondat záródik az N. szó után, akkor a mondatzáró jelet is meghagyja. Egyébként levágja. Az N. szó után, ha az eredmény nem az egész szöveget tartalmazza, tetszőleges karakterlánc kiírható. Alapértelmezetten a három pont. Be lehet kapcsolni, hogy unicode karaktereket is tartalmaz-e a szöveg, vagy sem. Alapértelmezetten true-ra van állítva.

Függvény

/**
 * Szövegből első N szó kinyerése
 *
 * @param int $n Hány szó kell a szöveg elejéről
 * @param string $str A forrás szöveg
 * @param bool $unicode Unicode karakterek lehetnek-e a szövegben.
 * @param string $more Az eredmény szöveg mögé írt karakterlánc, ha az eredmény nem a teljes szöveg.  
 * @return string
 */

function firstNWord($n, $str, $unicode = true, $more = ' ...') {
        $php53 = version_compare(PHP_VERSION, '5.3') >= 0;
        $w = $php53 ? '\w' : ($unicode ? '\p{L}\p{N}' : '\w');
        $W = $php53 ? '\W' :  '^'.$w;
       
        return preg_replace('~^(\s*['.$w.']+'.
                        str_repeat('['.$W.']+['.$w.']+', $n-1).
                        '(?(?=[?!:;.])
                                [[:punct:]]\s*
                        ))\b(.+)$~isx'
.($unicode ? 'u' : ''), '$1'.$more, $str);
}

A függvény elején levő verzió ellenőrzés azért kellett, mert 5.3 -ban már a \w is illeszkedik ékezetes karakterre.

Példák

$nl = '<br />'.PHP_EOL;
echo firstNWord(5, "Ez egy").$nl;
echo firstNWord(5, "Ez egy.").$nl;
echo firstNWord(4, "Ez egy szöveg.Amiből megtartok 4 szót.").$nl;
echo firstNWord(3, "Ez egy szöveg. Amiből megtartok 3 szót.").$nl;
echo firstNWord(5, "Ez egy szöveg,amiből megtartok 5 szót.", true,  ' <a href="#">&raquo;</a>').$nl;
echo firstNWord(5, "Ez egy szöveg,amiből megtartok 5 szót.", false,  ' <a href="#">&raquo;</a>').$nl;

Eredmény

Ez egy<br />
Ez egy.<br />
Ez egy szöveg.Amiből ...<br />
Ez egy szöveg.  ...<br />
Ez egy szöveg,amiből megtartok <a href="#">&raquo;</a><br />
Ez egy szöveg,amib <a href="#">&raquo;</a><br />

Bár a fenti példákra működik a megoldás, nem kizárt, hogy nem tökéletes.

Megosztás/Mentés

"Objektumorientált" Drupal - A reflection osztályok haszna

Nem rég el kellett kezdenem drupalban fejleszteni. Számomra nagyon új és furcsa volt, hogy gyakorlatilag sehol egy igazi osztály, vagy az objektumorientáltság jele. Ez annyiban érdekes, hogy számomra egy jól strukturált OOP-re épülő forráskód sokkal érthetőbb, mint függvények sokasága, ahol ráadásul minden függvény ott lebeg a globális térben. Az is, ami kizárólag a modulnak kell. Ugyanez a változókkal. Na most kezdő drupalosként, hogy otthonosabban érezzem magam a forráskódban, megpróbáltam kierőszakolni az osztályok használatát úgy, hogy közben kigenerálom a függvényeket is, de csak azokat, amiket a drupalnak meg kell tudni hívni automatikusan. Hangsúlyozom, hogy a következő megoldást az ötlet és a megvalósítás miatt teszem közzé. Nem ajánlásként.

Megosztás/Mentés

PHP jelentősebb változásai napjainkig - Kezdetektől a trait-ekig

Emlékszem, mikor még a PHP 4 volt számomra az egyetlen verzió. Majd igen késve belekóstoltam a PHP 5-be és tetszett, amit láttam. Azóta is folyamatosan fejlődött. Kapott új függvényeket is, de mégsem volt olyan látványos a változás. Hozzáteszem, a unicode változónevek használata sem jelentéktelen, ami már 5.3 előtt is létezett, de a valódi haszna mégis megkérdőjelezhető. Majd az 5.3 -as verzióban többek között bevezették a névtereket. Persze nem nagyon volt még akkor olyan szerver, ahol ez a verzió futott volna. És mivel névterek nélkül is jól megvoltam addig, ezt a funkciót inkább nem is használtam. De az idő nem állt meg és elértünk az 5.2-es széria támogatottságának végéig. Amikor már mindenkit az 5.3-ra való átállásra ösztönöznek a PHP nyelv fejlesztői. Egyelőre még mindig több szerveren csak 5.2 van. Többek között a rimelek.hu szolgáltatóján is. Tervezik viszont ők is, hogy bevezetnek 5.3-as szervert is, amire kérésre át lehet majd kerülni. Van ingyenes szolgáltató, ami már korábban váltott. Ilyen a Freeweb.hu is. Lehet több is van. Nem néztem utána. Már 5.3.8 -nál tart ez a széria. És bár korábban sokan hallhattak a 6-os verzióról, a következő az 5.4 lesz.

A PHP 5.4 ismét olyan újításokat vezet be, ami miatt megint lehet egy kicsit dicsérni a nyelvet. De hogyan jutottunk ide?

Megosztás/Mentés