Meghívós loginrendszer - R.E. Login v2.0

R.E. Login v2.0

Az R.E. Login újabb verziója, vadi új objektum orientált motorral. Megőrizve az elődje funkcióit, de némileg kibővítve azt, és lehetőséget biztosítva további fejlesztések egyszerűbb elvégzésére. Ebből kifolyólag valószínű lesz is folytatás. Addig is köszöntsük szeretettel új barátunkat, az R.E. Login v2.0 -át.
R.E. Login v2.0.3 letöltése
Kövesd a projektet és keresd a legfrissebb verziókat a:
https://sourceforge.net/projects/relogin/ oldalon.


Figyelem: Ez a rendszer már elavult. Hibákat tartalmazhat és az új PHP verziókkal nem teljesen kompatibilis. Az init.php-be beillesztve az alább írt sorok egyikét a hibaüzenetek eltüntethetők, de a login használata csak saját felelősségre javasolt.

error_reporting(E_ALL | E_STRICT); // E_STRICT hibaüzenetek elrejtése
vagy
error_reporting(0); //minden hibaüzenet elrejtése

Kapcsolódó oldalak

Szerkesztve: 2010.04.04. 23:02
A loginban sikerült felfedezni pár hibát. Ezek javítva lettek. A hibák a következők voltak:

  • Profil módosítás fájl kimaradt a beállításokból, így csak changeprofile.php néven működött
  • Ugyanezen okból adminnak más profiljában is a saját profiljára mutató link volt.
  • Apró elírás a telepítőben. STMP volt SMTP helyett az egyik megjegyzésben
  • A telepítő nem ellenőrizte, hogy az SMTP host és port meg van-e adva. Sem az e-mail címeket.

Továbbá egy kiegészítés:

  • Most már opcionális az SMTP használat is. ha netán valakinek nem lenne semmilyen SMTP szerver használatára lehetősége, akkor SMTP nélkül küldi a leveleket.

Más nem változott. Ha bárki hibát észlel, kérem szóljon.
Köszönet tbence-nek az észrevételeiért és hibajelentésért.

A Login funkciói nagy vonalakban:

  • Regisztráció ( Opcionális meghívó mód, regisztráció blokkolása )
  • Beléptetés
  • Meghívó küldés
  • Privát üzenet küldés ( Kimenő, bejövő postafiók, Hír küldés )
  • Felhasználói profil
  • Gravatar és MKAvatar használat
  • Admin felület ( Tulajdonos és Admin rangot megkülönböztetve )
  • Bővíthető ranglista
  • Felhasználó lista
  • Online lista
  • Felhasználó keresése usernév szerint
  • Elfelejtett jelszó funkció

Figyelem! Ez nem egy portálrendszer, hanem loginrendszer. Bármily sokat is tud.
Így a PHP alapszintű ismerete elengedhetetlen a használatához.
Vagy legalább a kellő kitartás és hajlandóság a tanulásra.

R.E. Login v2.0 - Rendszerigény
Mindenképpen szükség van egy webszerverre, amin lehetőség van
PHP 5.0, valamint MySQL 5.0 használatára.
PHP GD támogatás szükséges
SMTP szerver ( Internetszolgáltató, vagy a tárhelyszolgáltató adja )

Ma már az ingyenes tárhelyek is átálltak 5 -ös verzióra.
Minden esetre, akinek fontos, hogy tárhelyével minél kevesebb
probléma legyen, az ruházzon be egy fizetett tárhelybe.
Azokon már szinte mindenhol PHP 5 vagy annál magasabb verzió van.

R.E. Login v2.0 - Telepítési útmutató

  • Tömörítsd ki az RELogin-v2.0.zip -et.

  • A tartalmát másold fel a webtárhelyedre!

  • Nyisd meg böngészőben a "relogin2" mappában levő "install" mappát.
    Töltsd ki az adatokat, majd kattints alul a küldés gombra.
    Megjegyzés: UTF8 karakterkódoláson kívül más is megadható a telepítőben,
    Ekkor viszont minden fájlt külön el kell menteni a megadott
    karakterkódolással. Így ajánlott hagyni UTF8 -nak, és
    a weboldalon is mindenhol ezt használni.

  • Ha mindent jól csináltál, a telepítés sikeres volt.

R.E. Login v2.0 - Használatba vétel
Hozz létre egy "init.php" nevű fájlt a "relogin2" mappa mellett

Írd bele a következőt:

<?php
ob_start();

require_once('relogin2/classes/System.class.php');
$system = System::getInstance();
header('Content-type: text/html; charset='.Config::DBCHARSET);
?>

A fenti kódrészletet közvetlenül a fájl elejére írd. Se szóköz,
se újsor ne legyen előtte.

Az összes olyan fájlban, amiben a login bármely modulját használni szeretnéd,
ezt az "init.php" -t kell beilleszteni a következő módon szintén a fájl elejére:

<?php
require_once 'init.php';
?>

Ehhez hasonlóan kell a modulokat is beilleszteni, de már bárhova lehet
a fenti kód után. Ezek már a relogin2 mappában lesznek.
Tehát így fog kinézni a kód:

<?php
require_once 'relogin2/login.php';
?>

A fenti kód hatására megjelenik a beléptető űrlap.
Minden szükséges modul a relogin2 mappában található.
Egyik fájl sem érhető el közvetlenül. Csak az imént leírt módon beillesztve
a fájlokat egy új .php fájlba, ahol előtte be volt illesztve az init.php

További modulok helye, és funkciója:

  • relogin2/admin.php - Adminisztrációs felület
  • relogin2/changeprofile.php - Profil módosítás
  • relogin2/forgotpass.php - Elfelejtett jelszó funkció
  • relogin2/invite.php - Meghívó küldés
  • relogin2/login.php - Bejelentkező űrlap
  • relogin2/logout.php - Kijelentkező
  • relogin2/msginbox.php - Bejövő üzenetek
  • relogin2/msgoutbox.php - Kimenő üzenetek
  • relogin2/msgread.php - Üzenet olvasás
  • relogin2/msgwrite.php - Új üzenet írása
  • relogin2/news.php - Hírek listája
  • relogin2/onlinelist.php - Online lista
  • relogin2/profile.php - Profil megtekintése
  • relogin2/register.php - Regisztrációs űrlap
  • relogin2/search.php - Felhasználó kereső ( Még csak usernévre )
  • relogin2/userlist.php - Felhasználó lista

A login támogatja a gravatar és mkavatar használatát. Ha nem tudod mi az,
nézd meg az alábbi két weboldalt:
http://en.gravatar.com/
http://www.mkavatar.hu/

Sreenshotok:
Profil módosításBejövő üzenetekProfilRegisztrációUserlistaAdmin


További ismertető későbbiekben még lehet, hogy várható. Addig is a felmerülő kérdéseket szívesen megválaszolom.



Szerkesztve: 2010.06.27. 16:20
Találtam egy hibát a loginban. Mégpedig a relogin2/classes/ForgotPass.class.php végén az errors metódusnál duplán volt deklarálva a metódus static tulajdonsága. Ez nem tűnt fel eddig, de most átnéztem a logint, és hibát adott az elfelejtett jelszó funkciónál. Lehet, hogy nem mindenhol ad hibaüzenetet, habár szintaktikai hiba. Ezért javaslom a javítását. Feltöltöttem a módosított logint, de nyilván nem akar ezért senki letölteni újra mindent. Tehát a fent említett fájlban a következő kódot

        public static static function errors()
        {
                return self::$errors;
        }

kell lecserélni erre

        public static function errors()
        {
                return self::$errors;
        }

Szerkesztve: 2011. május 14.23:36
Gyakori probléma a captcha kép ( ellenőrző kód ) megjelenésének hibája ingyenes tárhelyeken. Ha valaki szembekerül ezzel, akkor javaslom elolvasni a következő hozzászólásomat: Link
Így a captcha kiszedhető. Csökkentett biztonsággal, de működhet a login.

Szerkesztve: 2011. június 7. 21:10
Letölthető a R.E. Login v2.0.1. ez egy javított változat csak, ami a különböző ingyenes tárhelyeken hibásan kiszámított url-ekre ad helyesebb és rugalmasabb megoldást. Mostantól működik a Captcha is atw.hu-n, freeweb.hu-n és 000webhost.com-on is. Ami hibájának oka egy részt az útvonalszámítás volt. Kivéve freewebet, ahol más jellegű probléma volt, de addig is, amíg azt megoldják ( ha sikerül ), sikeresen áthidaltam a hibát. Javítottam továbbá az e-mail aktiváltság ellenőrzést is. Ami valóban hibás volt. Így soha nem kellett aktiválni az emaileket akkor sem, ha az be volt állítva. A fent említett 3 tárhelyen teszteltem is a logint. Ezeken a tárhelyeken az url-t illető helyes beállítás a következő:

Minden esetben a telepítőben „weblap gyökérre” ( vagy a relogin2/classes/Config.class.php-ben levő PATH_BASE konstansra) vonatkoznak a beállítások, ami 4 féle képpen adható meg:

  • Üresen hagyva: Ekkor automatikusan számítja a login az url-t, ha tudja. Pl. freeweben működik.

  • / jellel kezdve, weblap gyökérkönyvtárától számítva a loginra épülő weblap url-je. Pl.: /weblapom ( Ez az ajánlott )

  • http-vel vagy https-el kezdve. Pl.: https://domain.hu/weblapom

  • / jel nélkül kezdve. Pl.: weblapom
    Ebben az esetben az automatikusan számolt útvonal megmarad. Csak az útvonal elé téve a megadott mappát, korrigálja azt. ( pl. atw.hu -n használható így )

Az említett 3 tárhelyen a beállítások:

  • atw.hu: userneved.atw.hu esetén vagy csak "userneved" -et írod be per jel nélkül, vagy per jellel "/userneved". Ha nem a fő könyvtárba tetted a logint, akkor a mappa neve is kell mögé. "userneved/weblapmappa" vagy "/userneved/weblapmappa"

  • freeweb.hu ( fw.hu ): Itt üresen lehet hagyni.

  • 000webhost.com: Itt meg kell adni az útvonalat. Ami gyökérkönyvtárba telepített rendszernél egyszerűen "/" jel. Vagy megadható http-vel is, ahogy fentebbi módszerekben írtam. Üresen hagyva nem működik, mert beteszi a public_html mappát is az útvonalba. Ami nem kell.

Ha nem elég érthető a leírás, jelezzetek vissza, és érthetőbbé teszem.

Szerkesztve: 2011. augusztus 11. 22:48
A relogin2/classes/Login.class.php -ben a logout metódusból hiányzott az onlinestatus mező módosítása után az adatbázisba feltöltés. Ezt javítottam. Egyetlen sor változott. De idézem az egész metódust:

public static function logout()
{
        $_SESSION['s'.self::$userNameVar]='';
        $_SESSION['s'.self::$userPassVar]='';
        if (System::$logged)
        {
                System::$user->onlinestatus = 0;
                System::$user->update(); //ezt a sort kell beszúrni!!
        }
        Session::getInstance()->setLifetime(0);
}

Ez egy nagyon apró javítás. Ezért nagyon apró verziószám változással, de feltöltöttem az R.E. Login 2.0.2 -es verzióját. A 2.0.1 sourceforge-ról továbbra is elérhető. Bár letölteni ezek után azt a verziót nincs értelme.

Szerkesztve: 2011. november 05. 17:30
Újabb hibajavító verzió került fel a loginból. Két hibát javít. Egy részt ha egy admin megváltoztatta egy felhasználó jelszavát a profil módosításnál, kiléptette az admint. Más részt a telepítőben megjelenhetett néhány undefined index hibaüzenet. Eddigi szokásomhoz híven ez a kisebb hibajavítás is csak kis verziószám változást jelent. Így most letölthető a R.E. Login v2.0.3

Akik megkímélnék magukat a teljes csomag letöltésétől, a következő linkeken megnézhetik, pontosan mi a két változtatás:

Kategóriák: 
Megosztás/Mentés

Hozzászólások

Dual képe

Szia kellemes hétvégét :)
Sikerült végülis megoldanom úgy hogy kivettem a connectet, és footerbe raktam be a kódot most tökéletesen működik :)

Továbbá lenne egy kérdésem :D

Ugye van a profile.php?uid=

Ezt hogy tudnám úgy átírni hogy:
profile.php?tag=username

Köszi előre is :)

Rimelek képe

Visszakeresd a profile.php-t, amelyikben a megfelelő forráskód van. ( relogin2/includes/profile.php ) és kicseréled a "uid" -kat "tag"-ra. A T_users_userid tulajdonságot meg T_users_username -re.

if (!System::$logged and !isset($_GET['uid']))
{
        System::redirect(Config::FILE_HOME);
}

if (System::$logged and (!isset($_GET['uid']) or System::$user->T_users_userid == (int)$_GET['uid']))
{
        $user = System::$user;
}
else
{
        $uid = isset($_GET['uid']) ? (int)$_GET['uid'] : 0;
        $user = new User($uid);
}

Erre:

if (!System::$logged and !isset($_GET['tag']))
{
        System::redirect(Config::FILE_HOME);
}

if (System::$logged and (!isset($_GET['tag']) or System::$user->T_users_username == (string)$_GET['tag']))
{
        $user = System::$user;
}
else
{
        $tag = isset($_GET['tag']) ? (string)$_GET['tag'] : 0;
        $user = new User($tag);
}

Magyarázat: A User osztály név alapján keres, ha szöveget kap konstruktorban. És id alapján, ha számot kap.

Dual képe

Aha értem

viszont, ha átírom a dolgokat akkor csak a saját adatlapomat hozza be és azt is csak belépés után :/

Rimelek képe

Elírtam, javítottam. Nézd meg újra.

Egyébként ne csak másold, amit írok! Miközben ezer más dolgom van, simán elírhatom a kódot kipróbálatlanul. Az előbb például bent hagytam az integerré konvertálást, mikor már nem számokat kellett volna használni. Szóval nézd meg mit csinál egy kód, ha ráadásul ilyen rövid! És akár még az én hibáimra is felhívhatod a figyelmem.

Dual képe

Szia

Nem csak másoltam maga egykét dolgot át tudtam írni, bocsi ha úgy vélted h felhívtam a figyelmed :S

Köszönöm szépen.
D

Rimelek képe

Félreértettél. Pont azt szeretném, hogy felhívd a figyelmem, ha valamit elrontok, mert te észrevetted, mivel átnézted a kódot.

Dual képe

Szia :) Megint sikeresen elakadtam és már nem tudom hogy mit csináljak :/

Profil szerszerkéshez vennék fel cuccokat mint pl:

<td>Fejléc</td>
                <td>
                        <input type="radio" name="profile[im_fejlec]" <?php if($data['im_fejlec']) print 'checked="checked"' ?> value="Kapcsolat" /> Kapcsolat
                        <input type="radio" name="profile[im_fejlec]" <?php if($data['im_fejlec']) print 'checked="checked"' ?>  value="Szex" /> Szex
            <input type="radio" name="profile[im_fejlec]" <?php if($data['im_fejlec']) print 'checked="checked"' ?>  value="Barátság" /> Barátság
                </td>

a relogin2/classes/ChangeProfile.class.phpba is felveszem így: self::$user->im_fejlec = $post['im_fejlec'];

Ezzel az a gondom hogy folyamatosan a 3. 'Barátság' van bejelölve, viszont sql adatbázisban pedig Amit az illető állított be.
Mit ronthatok el? :)

Már vagy 50. jére írtam újra a dolgokat.

Előre is köszi
D.

Rimelek képe

Nem is ellenőrzöd sehol, hogy mi lett kiválasztva, csak hogy van neki értéke. Hol az értékek vizsgálata?

mivel az összeset bejelölöd ezzel, de csak egy lehet bejelölve, az utolsó marad meg.

Dual képe

Itt ellenőrizném de az utolsót nem igen akarja bevenni:

self::$user->im_fejlec = $post['im_fejlec']  == 'Barátság' ? 'Barátság' : 'Szex' : 'Kapcsolat';

Rimelek képe

Ez úgy rossz szintaktikailag, ahogy csak lehet. Így biztosan nem ellenőrzöd. Nézz utána ennek a szerkezetnek. Vagy használj sima if-et. Nem kell neked egyszerre három érték. Mindig csak egy. Mindegyik ellenőrzésnél.

Dual képe

Próbáltam így de ezzel sem engedi:

if (isset($post['im_fejlec']) and max(((string)$post['Barátság'])) != $post['im_fejlec'])
                {
                        self::$errors[] = 'Hopsz! Nem adtál meg valamit!';
                }

valamit nagyon elbénázok? :D

Dual képe

Sőt még így is próbáltam:

<td>Keres:</td>
                <td>
                        <input type="radio" name="profile[im_keres]" <?php if(!in_array($data['im_keres'],array('Barátot'))) print 'checked="checked"' ?> value="Barátot" />Barátot
                        <input type="radio" name="profile[im_keres]" <?php if(!in_array($data['im_keres'],array('Szexet'))) print 'checked="checked"' ?> value="Szexet" /> Szexet
            <input type="radio" name="profile[im_keres]" <?php if(!in_array($data['im_keres'],array('Semmit'))) print 'checked="checked"' ?> value="Semmit" /> Szexet
                </td>
Rimelek képe

Dual, már többször mondtam, hogy a loginhoz PHP tudás kell és hogy neked az alapok hiányoznak. Ráadásul régen nem a loginról kérdezel, hanem tényleg olyan dolgokról, amiket az ember a PHP tanulásának az eleje felé megtanul. Egy egyszerű IF feltételt kellene írnod és nem megy. Miközben egy más által megírt összetett rendszert akarsz módosítani.

Ez az oldal itt a loginnal kapcsolatos kérdésekre van. De mivel nem akarom senki kedvét szegni és csőlátással figyelmen kívül hagyni a más jellegű kérdéseket, szoktam válaszolni. De ez már az én kedvem szegi.

Ha továbbra is ilyen módosításokat akarsz végezni, kérlek, tanulj PHP alapokat! És ez minden kedves idelátogatónak szól!

A Vezérlési szerkezetek oldalon a php.net -en tanulhatsz a feltételekről is többek között.

A "Ternary operator" ( ? : ) egy speciális, két érték közül választó megoldás.

Az in_array pedig egy tömbben keres egy értéket.

A felkiáltójel a tagadást jelenti!

A max pedig ey listának a legnagyobb elemét adja vissza. Neked egyik se kell.

Cserélgeted a változókat ( $data és $post ) és az értékeket is a kérdéseid között, hogy véletlenül se kapjam el a fonalat és segíteni tudjak.... Én meg nem tudom követni. Valószínűleg 'Barátság' indexed sincs a $post tömbben. De ha még csak ez lenne a baj, akkor csak simán visszakérdeznék, mert a mezők nevének még van némi köze a loginhoz. De ha nem tanulod meg az alapokat, én sem segíthetek.

A barátságnál így nézne ki helyesen, feltételezve, hogy a $data változóban vannak az értékeid és "Barátot" az adott checkbox értéke:

<input type="radio" name="profile[im_keres]" <?php if($data['im_keres'] == 'Barátot') print 'checked="checked"' ?> value="Barátot" />Barátot

És a jövőben kérlek szorítkozz valóban a loginrendszerrel kapcsolatos kérdésekre! Az általános, a loginrendszer megvalósításához szorosan nem kötődő módosítások elvégzése és az ahhoz szükséges tudásanyag elsajátítása mindenkinek saját felelőssége. Így azokra választ nem ígérhetek. Ellenben más fórumokon sokkal nagyobb sikerrel járhatsz. Feltéve, hogy a kérdésed körültekintőbben és következetesebben teszed fel.

Dual képe

Reggelt

Legelsőnek is a kódod alapján csináltam (Avatárt copyztam), viszont rájöttem a hibára. Nem velem volt a gond :) Valahogy nem díjazza az sql-em az aláhúzásokat ... Ezért nem ellenőrizte le hogy melyik is van bepipálva. Most reggel kipróbáltam egy újon és sikeresen megy.

Rimelek képe

Megjegyzem, az aláhúzás maximum mező értékénél "gond". És ott is csak ha "like"-kal keresel, nem egyenlőség jellel vizsgálva, mivel az egy minden karakterre illeszkedő minta. Egyéb esetben pedig nem lehet probléma.

NetwareSK képe

Kedves Rimelek, először is szeretnék gratulálni a rendszerhez. Valamint olyan kérdésem lenne, hogy milyen módon lehetne a rendszer alá SEO URL (Felhasználóbarát URL) varázsolni? -Illetve további adatokkal kibővíteni a regisztrációt, és a felhasználók avatár url -t vagy avatár -t tudjanak feltölteni maguknak? Válaszát előre is köszönöm.

Rimelek képe

Helló

Nem gondoltam a login írásakor, hogy ilyen népszerű lesz, így nem is volt célom a keresőbarát URL-ek megoldása. Tehát csak egyenként lehet minden url-t a forráskódban átírni. Aztán egy htaccess-szel Rewrite-tal átirányítani az eredetire őket.

A regisztrációt viszont igyekeztem egyszerűre írni. Így ott valamivel jobb a helyzet. A register.php-t kell tanulmányozni. A legkülső (az alap sabloné) register.php behívja a login register.php-jét a relogin2 mappában (Itt az űrlap). Az meg az azon belüli includes mappában levő register.php-t, ahol a regisztrációt indító rész van az űrlapról érkező adatok alapján.

Itt a $data tömbben fel kell venni azoknak a mezőknek a nevét az alapértékeikkel, amik az űrlapon szerepelnek. Ebből a tömbből kerülnek az űrlapra az alapértékek és ezt módosítja a hibás regisztrációkor, hogy megmaradjanak az elküldött adatok.

Viszont magát a regisztrációt a Register.class.php végzi a relogin2/classes mappában. A statikus $values tömbtulajdonságot kell módosítani. Ahogy a $data tömböt kellett az űrlaphoz. Csak a kötelező mezőket nézi. Ha jól nézem, másra nem használtam az osztályban.

A getRecord metódusban kell a profiles és a users tábla mezőit felsorolni, amiket a regisztrációkor módosítani kell. Tehát ezek már nem az űrlap mezői, hanem a tábláké.

A register.php-ben a Register osztály request metódusából indul az egész. Létrehozza a $user objektumot a createUser metódussal, amiben a $_POST tömbből feltöltheted az objektum tulajdonságait. Amik megegyeznek a táblanevekkel.

Majd ezeket az adatokat az isValidinput metódus ellenőrzi. Ide rakhatod te is a te ellenőrzéseidet. A hibaüzeneteket pedig az $errors statikus tömbbe kell tenni.

Majd az addUser metódus viszi fel a usert az adatbázisba.

Feltölthető profilképhez viszont a profile.php-t kell módosítani. A fájlok struktúrája hasonló a register.php-nél leírtakhoz. Mivel adatbázisban semmit nem kell tárolnod, csak az űrlapot kel bővíteni feltöltővel. És egy mappában letárolnod a userid-t felhasználva a képet. A User osztály avatar metódusában pedig figyelheted, hogy létezik-e a fájl. Ha igen, akkor azt az url-t adod vissza. Ha nem, akkor vagy a gravatar, vagy az mkavatar.

Ha ennél többet szeretnél tudni, akkor bele kell ásnod magad a forráskódjába. Ha megvan a tudásod a módosításához, akkor meglesz a kiismeréséhez is. De én mindig azt szoktam mondani, ha valamiben túl sokat kell módosítani ahhoz, hogy megfeleljen az igényeinknek, akkor rossz programot választottunk.

NetwareSK képe

Nagyon szépen köszönöm a hasznos leírást, megnézegetem és sikerült módosítani.

szabolcs képe

hello.
hogy lehet sajat "menut" letrehozni? szeretnek egy oldalt kesziteni..
de csak azok lassak akik beleptek.. de nem tudom megjeleniteni...

Rimelek képe

Helló. A menüt úgy készíted, ahogy tetszik. Ehhez csak a sablont kell módosítanod. Az alap sablonban az includes/footer.php és includes/header.php van. Attól függően, hogy hova akarod tenni, a megfelelő fájlba kell írnod. A fájlokban láthatsz a jogok ellenőrzésére is példát. De a bejegyzés tetején a kapcsolódó oldalaknál van linkelve, hogy hol találsz részletes információkat a jogok kezeléséről és ellenőrzéséről:

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

szabolcs képe

miert van az hogy ha csinalok egy menut a header-be bele irom...
ha kijelentkezek (frissitem) akkor is beirom a honlap url-jet, akkor latom mit irtam oda.. pedig nem kellene..

a masik pedig: ha belepek.. ramegyek egyik menure (pl Fooldal, felhasznalok)
akkor egybol kijelentkezes van.. a program egybol kijelentkezik..

Rimelek képe

Bizonyára rosszul alkalmaztad a jogok ellenőrzésénél írt módszereket. Ha megmutatod, hogy csináltad (forrás), akkor talán tudok konkrétabbat mondani. Illetve elég nehéz olvasni a kérdésed. És nem az ékezetek hiányára gondolok. Annak biztosan megvan az oka. Hanem a megfogalmazásra és a mondattagolásra. Próbálj kérlek kicsit összeszedettebben írni.

NSKHost képe

Olyan kérdéssel fordulnék hozzád, hogy a programból a következő részeket, hogy tudnám teljesen ki venni:
- Meghívó küldés
- Hírek listája
- Online lista
- Felhasználó kereső
- Felhasználó lista
- gravatar, mkavatar kezelése

Válaszod előre is köszönöm.

Rimelek képe

Ezek a funkciók a login lényegét jelentő részei. Rossz példa, de mintha vennél egy tévét és abból neked csak a képcső kéne (Még a nem síkképernyős időszakból :)).

Ami csak be van linkelve a megjelenítésben, annak a linkjét kitörölheted. Ilyenek talán a listák. Online és felhasználó lista annak keresőjével együtt. Ha meg egyszerűen kitörlöd a listát beillesztő fájlt, akkor már véletlenül se tudják elérni.

A hírek más tészta. Az az üzenetküldés része. Persze ha belemászol a forrásba, azt is megtalálhatod valahol, de nem olyan triviális.

A meghívó küldés viszont éppen az, ami miatt a logint írtam. Ha neked még arra sincs szükséged és a többi részt is kivennéd, nem javaslom ezt a logint.

A gravatar és mkavatar is pont olyan dolog, ami bent van profilszerkesztésben, profilmegtekintésben és még a főoldalon is használtam a sablonban (footer.php talán) a megjelenítést.

Mindent ki lehet venni, ha az ember tud programozni, de nem úgy készítettem hogy a fő funkciók törölhetők legyenek. Ettől fő funkciók :) De ha megnézed a readme-t, akkor amit abban úgy emlegetek, mint modulok listája, amit abban felsoroltam, bármit kitörölhetsz egyszerűen a fájl fel nem használásával. És ahol link mutat rá, azt kitörlöd.

NSKHost képe

Egy általam felvitt sql táblát hogyan tudok lekérdezni a login rendszerben.
Konkrét példám: van egy blog, és a blog bejegyzéseket szeretném lekérdezni.
Próbáltam tanulmányozni, meg külön kapcsolódni az adatbázishoz is, az rendben volt, de egy idő múlva össze omlott az oldal. Tudsz nekem ebbe segíteni, esetleg ajánlani egy kis tutorialt?
Köszönöm.

Rimelek képe

Ha egy adatbázist használsz, akkor nincs semmi különös tennivaló. A hagyományos függvényekkel küldheted a lekérdezéseket. Ha több adatbáziskapcsolat is kell párhuzamosan különböző adatbázisokhoz, akkor viszont minden kérésnél meg kell adni a megfelelő adatbáziskapcsolatot. Ezt viszont nem tettem meg a loginban használt adatbáziskezelő osztályoknál. Így ez nem igazán megy.

A login ezt használja:
http://rimelek.hu/perzisztens-php-objektumok-r-e-dbobjects-v2-1

De nem muszáj neked is.

csibusz képe

Sziasztok!
Gratulálnék először is a rendszerhez szép munka.
Pár kiegészítés a rendszerhez:

Posta rész helyett egy üzeneted érkezett/nincs üzeneted if:

</div>
<div id="right-side">
        <?php if(!System::$logged) {
                        require_once 'relogin2/login.php';
        } else { ?>
        <img src="<?php print System::$user->kep; ?>" alt="avatar" width="100px" />
        <ul id="right-menu">
                <li><a id="relogin-logout" href="<?php print System::logoutLink() ?>">Kijelentkezés</a></li>
                <li><a id="relogin-profile" href="profile.php">Profil</a></li>
                <li><a id="relogin-inbox" href="msginbox.php"><?php
                $stat = System::msgStat();
if ($stat['unread']<1)
  {
  echo "Nincs új üzeneted";
  }
else
  {
  echo "Üzeneted érkezett";
  }
?> (<?php
                       
                        $stat = System::msgStat();
                        print $stat['inbox'].'/'.$stat['unread'];
                ?>)</a></li>

        </ul>
        <?php } ?>
       

csibusz képe

Ha nem gond akkor kicsit tovább viszem a rendszert kiegészítem egy chat, profil fotó feltöltés , szavazás valamint komment részekkel , Rímelek ha engeded akkor itt miután megtekintetted fel lehet majd tenni?
Természetesen ingyenesen elérhetően.

Rimelek képe

Először is köszönöm, hogy megosztod másokkal a munkádat.

A legjobb talán az volna, ha feltennéd például te is sourceforge-ra, ahol te is ingyen tarthatod a forrást és feltöltheted a tömörített programot is. Azt pedig szívesen belinkelem a többi letöltés mellett a lap tetején.

Ha a sourceforge-dzsal vagy hasonló oldalakkal nem boldogulsz és nincs hova feltölteni, akkor esetleg ide is feltehetem, ha olyan. De javaslom az előbbi megoldást.

A részleteket emailben is megbeszélhetjük.

csibusz képe

E-mailt tudsz adni ? Ott megbeszéljük a részleteket

Rimelek képe

Az oldal tetején "kapcsolat" menüpont :) De egyébként a readme fájlban írt email címnek is működnie kell. Ugyanott kapom meg.

scibag képe

hello!
egy kerdesem lenne, szeretnek egy egyszeru "oldalt" berakni, de nem vagyok programozo, hogy tudom azt megoldani ?
egyszeru szoveges oldal lenne, de csak azok lathatnak akik regisztraltak...
akarhogy probalkozok, sehogy nem sikerul..
Esetleg te tudnal segiteni..

Rimelek képe

Üdv. Példákat a bejegyzés tetején levő Kapcsolódó oldalak alatt linkelt oldalon találsz. Jelenleg csak egy van.

De a loginhoz szükség van valamilyen szintű php programozási ismeretekre.

geld77 képe

Tisztelt Rímelek!

Szeretném a design a regisztrált felhasználokhoz igazitani ugy hogy mindenki olyan kinézetet válasszon ami épp neki tetszik. Szóval a profile táblába már be tettem az uj mezőt ami szükséges és a regisztrációhoz is kapcsoltam. Viszont az lenne a kérdésem hogy lehet alapbol lekérdezni hogy milyen stilust szeretne az aktuális felhasználó? A profilba tettem be egy style mezőt 7 féle stilussal amit le szeretnék kérdezni?

Rimelek képe

Ha ez az éppen belépett felhasználónak az általa látott designt jelenti, akkor "style" nevű mező esetén:

echo System::$user->style;

geld77 képe

Én így probáltam használni de nem tölti be innen az oldalt tovább.

<div class="menu bubplastic horizontal <?php if (System::$logged) { echo System::$user->style;}
                else {?>blue <?}?>">

Ha ki vagyok lépve akkor müködik az oldal de ha bejelentkezek akkor eddig a sorig be tölti és nem tovább. Hiba üzenet nincs.

Rimelek képe

A forráskódokat az alul felsorolt tag-ek valamelyikébe kell tenni nyelvnek megfelelően. Akkor megjelennek. Most javítottam a hozzászólást.

Biztos, hogy style a mező neve?

Hibaüzenet valahol mindig van. Akár szervernaplóban. Amit lehet, hogy a tárhelyszolgáltató felületén meg lehet nézni. Mondjuk ingyenesnél nem nagyon.

geld77 képe

Bocsánat, egy div formázás lett volna de eltünt ami a div kódba lett volna csak a vége maradt meg.

geld77 képe

Igen style a neve a mezőnek.
Az Apache nem log-olt error-t. Egyenlőre loclahost-on probálkozok még.

geld77 képe

Köszönöm a segitséget. Megoldodott. Duplán volt style és össze akadt :D
Még annyit kérdeznék, hogy a több nyelvűségre szeretném a login rendszert át alakitani, ha bele egyezel? És ehez kérném a segitséged hogy a system- és a session.class.php-ba hogy lehetne beiktatni a következőt hogy hasonló képen elérhető legyen mint az $user változó?

function lang(){
 if(!isset($_SESSION['lang'])){$_SESSION['lang'] = 'hu';}

  if( isset($_GET['lang']) && is_file(LANGUAGE . $_GET['lang'].".php")){
    $_SESSION['lang'] = $_GET['lang'];
  }
  $sql = "SELECT azon, ".$_SESSION['lang']." FROM relogin_lang";
  $query = mysql_query($sql);

  while ($row = mysql_fetch_array($query)){
    $lv[$row['azon']] = $row[$_SESSION['lang']];
  }

Szeretném a $lv változot bárhol elérni. Félig meddig sikerült de nem teljesen jól szerintem :D

Rimelek képe

Saját szerveren fejlesztői beállításokat kell alkalmazni a php-ben. Vagyis a php.ini -ben be kell kapcsolni a hibakiírást:

display_errors = On

És akkor jó eséllyel lesznek hibaüzenetek. A dupla style volt az egyik ötletem, de nem írtam, mert "áá, miért lenne mindkét táblában". Máskor hallgatok az első tippemre :)

Én megengedek mindent a loginnal. Épp csak az eltulajdonítást és saját néven továbbadást nem. De az csak egy egyszerű statikus tulajdonság. Az osztályban deklarálva

public $valtozoneve;

Máshol meg értéket kap valahonnét:

Osztalyneve::$valtozoneve = $valamimasikValtozo;

Mondjuk, ha a lang függvényedben az $lv -t átnevezed System::$lv -re.

Igazából valami rossz a megközelítésben szerintem. Először is van fájl, amivel a megoldás nem kezd semmit. Csak vizsgálja. De a szövegeket az adatbázisból szedi. Hacsak nem akarsz valami speciális dolgot művelni a szövegekkel, ami miatt elengedhetetlen az adatbázis, akkor elég csak fájlban, változóban tárolni őket. És nem kell adatbázishoz nyúlni. A megfelelő nyelv fájlját include-dal betöltőd. És a változót adod vissza a függvényben, amiben a szövegek vannak.

Az adatbázisos módszerrel már ott is gondok vannak, hogy nem szabad a $_GET-ből ellenőrzés nélkül berani az értéket a $_SESSION-be, amit ellenőrzés nélkül beírsz egy SQL kódba. Mert csúnya vége lehet az ilyeneknek, ha megtalál egy támadó.

Javaslok egy megoldást, amiről szintén én írtam régen. Kész kód található a cikkben és használati utasítás:

http://rimelek.hu/rugalmas-nyelvkezeles

geld77 képe

Azt szeretném megkérdezni hogy a lapozó kinézetét hol definiáltad?

Rimelek képe

Milyen kinézetre gondolsz? A linkeket egy külön osztálykönyvtár egyik osztálya készíti el. Amiben megadható, hogy egy link szövege hogy jelenjen meg. Pl csak oldalszám legyen vagy zárójelben legyen stb...

A többit CSS-ben állíthatod.

geld77 képe

Arra gondolok hogy pl hozzá szeretnék adni egy üzenő falat ahol szeretném használni a lapozót amit a többi oldalon van. $pageLinks amit megtaláltam de hogy hol van megadva hogy mit csináljon azt még nem :)

Rimelek képe

Ezt használtam a loginhoz:

REDBObjects

De lehet egyszerűbb neked, ha saját lapozót írsz ez alapján:

http://rimelek.hu/lapozas-php-ben

Vagy felhasználod ezt:

http://rimelek.hu/php-lapozo-r-e-pagination-v1-0

Ez utóbbi nagyjából ugyanaz a módszer, mint amit beépítettem a login mögött levő REDBObjects -be.

pisti87 képe

nos a nyelvi fájlal kaocsolatos linket nézem amit adtál valami ijenre gondoltam szoval azt meglesem jobban is

pisti87 képe

s nyelvi fájl tökéletesen megfelel előb a csinosítás aztán a nyelv jön

pisti87 képe

sziasztok megoldottam egy beállítható nyelvet a loginnak a főmappában minden fájlba a header után szúrjátok be ezt

require_once 'class/Languages.class.php';
$languages = Languages::getInstance();
$languages->setLanguageDir('languages');
$languages->setDefault('hu');

ez mindenhol igy van a gyökérben kivéve az index.php fájlt az pedig igy néz ki

<?php
/*
 * Alap sablon az R.E. Login 2.0 -hoz.
 *
 * Szerző: Takács Ákos (Rimelek)
 * E-mail: programmer kukac rimelek.hu
 * Weboldal: http://rimelek.hu
 * Login weboldala: http://rimelek.hu/meghivos-loginrendszer-r-e-login-v2-0
 *
 * Ikonokat a következő weboldalakról töltöttem le:
 * http://www.freeiconsweb.com/
 * http://sixrevisions.com/resources/40-beautiful-free-icon-sets/
 */

require_once 'init.php';
require_once 'includes/header.php';
require_once 'class/Languages.class.php';
$languages = Languages::getInstance();
$languages->setLanguageDir('languages');
$languages->setDefault('hu');

?><h2><?php print $lang['languages'] ?></h2>
<a href="<?php $lang = $languages->getLanguage('en'); ?>"><?php print $lang['english'] ?></a>
               
<a href="<?php $lang = $languages->getLanguage('hu'); ?>"><?php print $lang['hungarian'] ?></a>
               
 
<?php
require_once 'includes/footer.php';
?>

igy már külön beállítható a nyelv igy minden oldalon látható
a fökönyvtárban vagy gyökér ki hogy hívja ot van egy class mappa azon belül egy Languages.class.php mej tartalma ez

Forráskód törölve. A két beillesztendő osztály forrása az alábbi linken.
http://rimelek.hu/rugalmas-nyelvkezeles
A hozzászólást módosította: Rimelek

ezen kivul van

még egy languages mappa ami en.php és hu.phpt tartalmazza $lang['languages']="nyelvek" stb dióhéjban enyi amúgy ez hőn szeretett RÍMELEK munkája amit kissé máskép illesztettem be ha kész teljesen a nyelv megosztom 2.0.4 es verzióként csaptázás nélkül és csaptázásal is

Rimelek képe

Na, sikeresen áthelyeztem a rossz helyre írt hozzászólásod. De nem volt egyszerű. Nincs rá felület.

Köszönöm, hogy leírtad a megoldásod! A forráskódot a nyelvkezelő osztályokról töröltem és linkeltem az eredeti cikket az átláthatóság kedvéért.

Ami a megosztást illeti, 2.0.4-es verziójaként az eredeti loginnak nem oszthatod meg, mert az eredetit majd én verziózom tovább, ha úgy adódik. De nincs ellenemre, hogy valami más módon továbbfejleszd és közzé tedd, ha kiírod az eredeti logint és szerzőt. Akár "R.E. Login 2.0.3-localized" néven. Vagy ha valaki hosszútávon szeretné továbbfejleszteni ezt a 2-es verziót, akkor valami más néven, de szintén az eredetire jól láthatóan hivatkozva.

Plusz megköszönöm, ha a megosztott verzióról én is értesítést kapok, hogy tudjam, merre milyen verziók vannak.

A "Csaptázás" pedig halvány fogalmam sincs, hogy mi lehet.

Ja és a forráskódokat, amikor beilleszted, tedd "code" vagy "php" html tag-ek közé. Itt alul látható, hogy milyen lehetőségek vannak.

pisti87 képe

rendben és köszönöm. nos a gondom a footer.php ki írja a nyelvet de a header már nem csak az ikont erre van valami ötlet?