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

Rimelek képe

Ha a header include után rakod a megoldásod, ez nem meglepő. Tedd elé!

pisti87 képe

bent volt az ini és header közt is ugy sem ment csak részben van mikor beolvasa a headert aztán pl adminbol semmi az ini ben is volt nagy fehérség fogadott lehet a tár miatt is? itt nem kapok se levelet se reginél az automatikus kodgenerátort sem az avatárok nem futnak bár utobi három alapból na szóval akkor mit rakjak hova? lang rész az ini mellet class megint . még van 3 tippem a mapoa elérés jó mert a fótert nem ismerné fel ha rosz lenne

pisti87 képe

a legegyszerűben bővíthető akkor lenne ha smartyt használnám de a fügvényei megírása még nagy munka számomra a másik megoldás xml ez valamivel egyszerűb lenne de a php az aminél döntötem ez miatt föleg hogy kezdő vagyok még a témában

geld77 képe

Szia, megszeretném kérdezni, hogy meg lehet oldani benne a Facebook-kal való regisztráció lehetőségét?

Rimelek képe

Nem csináltam még facebookos logint.

geld77 képe

Volna még kérdésem, a felhasználó listát kicsit át szerkesztettem úgy hogy avatárral együtt jelenjen meg a felhasználó lista. 5 sorba és 3 oszloppal oldottam meg, de hiába írtam át ezt:
$pageLinks = $users->pageLinks(15);
szóval 10 helyett 15-re írtam át még is 10-essével jeleníti meg.
hol kell még át írni, hogy jó legyen?

Rimelek képe

A pageLinks metódussal nem az egy oldalon megjelenő elemek számát adhatod meg, hanem a lapozó linkek számát.

A page metódus állítaná az egy oldalon megjelenők számát, de azt betettem a UserList osztályba. A classes/UserList.class.php -ben a konstruktorban.

geld77 képe

És tényleg. :D
Külön, hogy lehet lekérdezni a Nőket és a Férfiakat? Kiíratni hány nő és hány férfi van?

Rimelek képe

A nők és férfiak számlálása volt a legutóbbi módosításom pont a loginban, amit már nem nagyon reklámoztam. De itt megtalálod a metódusokat:

UserList.class.php

echo UserList::countMen();
echo UserList::countMen();

Ha pedig külön listát akarsz belőlük, akkor azt a UserFilter felhasználásával tudod megoldani:

$userFilter = new UserFilter();
$userFilter->addEqualFilter('sex', 'm'); //m, mint male, azaz férfi. "f" a female azaz nő.
$users = new UserList(null, $userFilter);
geld77 képe

Azt szeretném megkérdezni, hogy a htaccess az működik ezzel a login rendszerrel?

Rimelek képe

A htaccess az Apache szerver beállításaitól függ. De feltételezem, neked az a kérdésed inkább, hogy azokat a bizonyos "szép url-eket" meg tudod-e oldani a loginnal.

Sosem próbáltam ki úgy. Nem készítettem fel a htaccess-szel manipulált url-ekre. Elvben a login telepítésénél, ahol fájlokat kell megadni, megadhatnád az új url-eket is. De gyakorlatban könnyen lehet, hogy nem fog működni.

Ha meg kódba kell nyúlni hozzá, akkor mivel minden linket és php kódból történő átirányítást ki kellene cserélned, ezért nem javaslom, hogy ennek nekiállj.

Levente képe

Szia,
Tudom nem ide tartozik, de a csibusz féle rendszer hol található meg?

Rimelek képe

Szia. Arról nekem fogalmam sincs. Próbáld valamilyen fórumon megkeresni csibuszt és kérdezd meg tőle. Volt codenet.hu -n is. Nem tudom, most olvassa-e.

csibusz képe

Szia , még a fejlesztéseknek nem értem a végére.
Amint megvagyok a Szerzővel tudatom (bemutatom) neki "Rím Elek"-nek azután publikálom.
Jelezni fogom itt is majd .
Várhatóan Februárban tudom befejezni.
Köszönöm még egyszer Rím Elek munkáját .

Csákány Krisztián képe

Üdv Rimelek!

Azt szeretném kérdezni, hogy hogyan lehetne a megnyitott üzenetbe a küldő mellé beépíteni a küldő profilképét.

Arra a részre gondolok, amikor már olvassa az adott üzenet tartalmát, nem amikor kilistázza az üzeneteket (csak hogy félre értés ne essék).

Ha lehet, kódot is csatolhatnál, mert a logikai alapra volna elképzelésem, de a kódot nem tudom megírni.

Előre is köszönöm:
Krisztián

Rimelek képe

Üdv. A profilban így van az avatar megjelenítése:

<img src="<?php print $user->avatar(120); ?>" alt="gravatar" />

Egy $user objektumra lesz szükséged az üzeneteknél is. És akkor a fenti kód működik. A user objektumhoz egy felhasználó azonosító kell. És akkor így tudod elkészíteni:

$user = new User($userid);

A $userid nálad az üzenet feladója lesz, amit a relogin2/msgread.php fájlban $msgUserId néven találsz meg. Ez alapján van a profilurl generálása is. Tehát valahogy így tudod megjeleníteni a képet:

<?php $sender = new User($msgUserId); ?>
<img src="<?php print $sender->avatar(120); ?>" alt="gravatar" />
Csákány Krisztián képe

Nahát, ez felett átsiklottam. Nem vettem észre ott azt a $msgUserId-t csak a $msgUserName-t.

Próbáltam leképezni a küldő id-je alapján, de nem sikerült.

Az általad mutatott megoldással már működik.
Köszönöm!

Sándor képe

Sziasztok. Sikerült megcsinálni a weboldalam egy ingyenes tárhelyen. (atw.hu)
http://kepfeltoltes.hu/140111/kijelentkezes_www.kepfeltoltes.hu_.jpg
De viszont lenne olyan problémám, hogy amikor ki szeretnék jelentkezni akkor eldob egy üres oldalra és utána ha frissítem ugyanúgy bevagyok jelentkezve
http://kepfeltoltes.hu/140111/atw_www.kepfeltoltes.hu_.jpg

Melyik fájl-ban lehet a probléma? És micsoda?

Rimelek képe

Szia. Pont ezen az oldalon a bejegyzés vége felé van ennek a megoldása. Keress rá az "atw" kifejezésre a böngészőben, ha nem találod meg. (CTRL+F)

Sándor képe

Köszönöm szépen az előbb sikerült megoldanom a problémát! Már csak azt nemtudom, hogy a jelszó milyen kódolásban van (pl.HEX)

Rimelek képe

A Login.class.php-ben van a getPasswordHash metódus. Abból kilesheted a módszert. LINK

Ma már talán más megoldást választanék. Ha úgy látod jónak, te is átírhatod. Csak a meglévő felhasználók jelszavát kell újragenerálni akkor.

Béla képe

Hello!
lenne egy olyan problémám hogy van egy mappa és azt szeretném hogy amik benne vannak (képek, fájlok) nelehessen csak úgy megnyitni hogy PL: weboldalad.hu/design/img/kep.png

Rimelek képe

Üdv. Ha a tárhelyeden lehet htaccess-t használni, akkor letilthatod az elérést. De olyankor csak php-ból olvashatod be a képet és küldheted ki a böngészőnek.

".htaccess" fájl a design/img mappába:

Order Deny,Allow
Deny from all

De ezt csak olyan mappákba tedd be, ahol tutira nincs olyan kép, amit a külvilág felé engedélyezned kell.

Csákány Krisztián képe

Üdv!

Azt szeretném kérdezni, hogy az alábbi kód alapján miért nem jelenik meg az avatár a lekérésben, hibás képnek jelöli:

<?php
                                                $sms_data = mysql_query("SELECT * FROM `tema_teszt` order by `date` DESC");
                        while($row = mysql_fetch_assoc($sms_data))
                        {
                                               
echo "
<table width='100%' style='min-height:250px; border-top: 2px solid #2a4b69;' border='0' cellspacing='0' cellpadding='0' class='torzs'>
  <tr>
    <td rowspan='2' width='120' align='center' valign='top'><img src='"
.$row['avatar']."' alt='gravatar' style='width: 120px; height:120px; border: 5px solid #2a4b69;'></td>
    <td valign='top' align='left' height='25' class='focim' style='padding-left: 5px;'>"
.$row['irta']."</td>
    <td width='150' align='right' valign='bottom' class='lablec'>"
.$row['date']."</td>
  </tr>
  <tr>
    <td colspan='2' align='left' valign='top' style='border-top: 1px solid #2a4b69; padding-left: 5px; padding-top: 5px;'>"
.nl2br($row['uzenet'])."<br /></td>
  </tr>
</table> "
;
                                                }
?>

<?php
if(isset($_POST['submit'])) {
$uzenet = $_POST['uzenet'];
$irta = System::$user->username;
$userid = System::$user->T_users_userid;
$user = new User($userid);
$avatar = $user->avatar(120);

if($uzenet == null){
echo 'Nem írtál üzenetet!';
} else {
$query="INSERT INTO tema_teszt (uzenet, irta, avatar, date) VALUES ('".$uzenet."', '".$irta."', '".$avatar."', NOW())";
 mysql_query($query);
 header("Location: ".$_SERVER['PHP_SELF']);
}}

?>

<div class="torzs" style="border-top: 2px solid #2a4b69;">
<div class="focim">Szólj hozzá</div>
<form method="post" action="" class="torzs">
  <textarea name="uzenet" title="Sz&oacute;lj hozz&aacute;..."></textarea>
  <br /><br />
  <div align="center"><input name="submit" type="submit" class="buttom" value="Hozzászólok" /></div>
</form>
</div>

Régebben még működött, egy másik weblapban, most átraktam az adott lapba, és nem jelenik meg a kép. Pedig a rendszer ugyan az.

Rimelek képe

Hogy az avatar miért nem jelenik meg, nem tudom. Nézd meg a hibás kép url-jét. Akár a kép új oldalon való megnyitásával. Jobb egérgombbal eléred a menüből. Abból kiderül, hogy hol próbálja keresni. Abból pedig a hiba oka.

Viszont ez helyett:

$uzenet = $_POST['uzenet'];
$irta = System::$user->username;
$userid = System::$user->T_users_userid;
$user = new User($userid);
$avatar = $user->avatar(120);

inkább ezt írd:

$uzenet = $_POST['uzenet'];
$irta = System::$user->username;
$avatar = System::$user->avatar(120);

A System-ben levő $user ugyanolyan, mint amit egyébként létrehoznál.

Csákány Krisztián képe

http://hunmtsts.funpic.de/relogin2/0 - ezen az URL-en szerepel.

A mysql táblázatban a Típus INT(11), és ennyi.

Rimelek képe

Most néztem meg alaposabban az üzeneted (nem rég értem haza) és látom, hogy beszúrod az avatar url-t egy másik táblába. Gondolom, ott adtál neki akkor rossz mezőtípust. Ha egész számnak adod meg, akkor nem fog belekerülni a szöveges tartalom.

Ha így csinálod, még ha át is írod a mező típusát varchar(200) -ra például, ha változik az avatarja valakinek, az üzenetben még a régi kép lesz, ami talán már nem is létezik. Inkább a felhasználó azonosítóját mentsd a táblába és az alapján hagyományos módon jelenítsd meg az avatart userid alapján.

Csákány Krisztián képe

Az túl macerás a lekérési megoldásommal.

Inkább akkor kihagyom az avatar-t. Bár nem lesz olyan mutatós, de megfelel így is.

Köszönöm a segítséget.

Rimelek képe

Miért macerás? Csak a ciklusba kell betenned ugyanazt, ami cikluson kívül már működik. Tény, hogy annyira nem hatékony hozzászólásonként lekérdezni a felhasználókat újra és újra. De ha például elmented őket egy tömbbe, amit a saját userid-jükkel indexelsz, akkor valahogy így nézne ki, hogy maximum egyszer kérdezz le egy avatart:

$usersCache = array();
while (...) {
    $user = isset($usersCache[$userid]) ? $usersCache[$userid] : new User($userid);
    $avatar = $user->avatar(120);
    // többi kód
}

Tovább is lehetne optimalizálni, hogy ne kelljen egyenként lekérdezni. Az annyiból macerásabb, hogy be kellene gyűjtened az összes userid-t, amire szükséged lehet. Tehát az összes hozzászólást kellene tömbbe menteni ideiglenesen és közben gyűjteni az id-ket egy másikba. Majd az alapján az összes usert lekérdezni (van egy UserFilter osztály is erre. Ha minden igaz, használható erre) ugyanúgy a $usersCache tömbbe például. És a kiírás hasonló lenne, mint az első példában, csak nem kellene már ott példányosítani a usert sosem. És nem while-t használnál, hanem foerach ciklust.

De ha ennek nem akarsz nekiugrani, az első verzió is használható szerintem.

Csákány Krisztián képe

Az alapkönyvtárban az include/header.php-be illesztem bele az alábbi kódot:

<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<link rel="icon" href="favicon.ico" type="image/ico" />
Rimelek képe

Mert egyébként sincs ott a fájl. Mindig azt nézd meg előbb, hogy ami nem jelenik meg ott, ahol kéne, annak milyen a hivatkozása és meg tudod-e nyitni böngészőből.

Betetted az includes könyvtárba a header.php mellé. A főkönyvtárba tedd, ha arra hivatkozol a html-ben. Nem számít, hányszázadik almappában van a php fájl, amiben a html forrást írtad. Csak az, hogy az a fájl hol van, amit közvetlenül a böngészőből futtatsz és megjeleníti a weblapot. (pontosabban nem a fájl fizikai helye a lényeg, hanem az url, de htaccess nélkül ez ugyanaz)

Illetve ne tedd be többször ugyanazt a css hivatkozást és a content-type meta fejlécet. De ez az ikontól független, csak tanács.

Csákány Krisztián képe

Köszönöm.
Ezt eddig nem tudtam, hogy figyelni kell arra, h mit néz. :O

Anonymous képe

Sziasztok!
Mindent meg csináltam (legalább is úgy gondolom) amit írtatok. De nekem ahova feltelepítettem egy nagy fehérség van. :(
Ezt hogyan lehet megoldani?

A válaszaitokat előre is köszönöm:
Ádám

Rimelek képe

Üdv. Mindenek előtt több infó kellene. A nagy fehérség elnyomott hibaüzenetre utal. Hibaüzenet nélkül vakon tapogatózik mindenki. Tudni kellene, milyen tárhelyed van. Ha van hibanapló a szolgáltatódnál, akkor azt meg kellene nézned. PHP verzió is lényeges.

De a hibaüzenetek megszerzése lenne a leghasznosabb.

Anonymous képe

Szia,
Azt hogyan lehet, hogy ha egy új user regisztrál, akkor mysql-be ne csak azokat az adatokat töltse ki, hogy username,password,email stb.stb. étre hoztam egy új táblát, van benne egy id meg fa sor. Ha regisztrál akkor a fa értéke 0 legyen.

Illetve a másik kérdésem, hogy ha bejelentkezik egy tag, akkor a rendszer honnan tudja, hogy melyik tagról van szó? Mert minden tagnak más lenne a fa értéke, és akkor nem akarom xy-nak a vw fa értékét ki iratni. Ez mind egy általam újonnan létrehozot php-ban.
A tartalma:

<?php
include('header.php');

require_once 'init.php';
System::protectedSite();

?>
<div class="menu_simple">
        <ul>
                <li><a id="relogin-logout" href="<?php print System::logoutLink() ?>">Kijelentkezés</a></li>
                <li><a href="#">Link 2</a></li>
                <li><a href="#">Link 3</a></li>
                <li><a href="#">Link 4</a></li>
                <li><a href="#">Link 5</a></li>
        </ul>
</div><?php
include('footer.php');
?>

Köszönöm!

Rimelek képe

Szia. Ha nem kell több rekordot is a felhasználóhoz rendelni az új tábládból, én azt javasolnám, hogy vagy a users, vagy a profiles táblába tedd inkább az új mezőt. A profiles táblába olyanokat tettem, ami plusz információ a felhasználóról, de más szerepe nincs. Míg a users táblába olyanokat, amiknek a login működése szempontjából is szerepe van. Ha default értéknek a "fa" mezőhöz "0" értéket rendelsz mysql-ben, akkor ehhez plusz kódot sem kell majd írni.

Ha viszont olyant is szeretnél, ami nem automatikusan jön létre, hanem a regisztráló tölti ki, ahhoz már kell programozni. De akkor is sokkal egyszerűbb a helyzet, ha nem új táblával csinálod. Persze a relogin2/classes/Register.class.php-ben levő request metódusban egyedi adatbáziskezeléssel bármit megoldhatsz. Ez után tudnád beírni a saját kódod, ahol a $userid változó a regisztrált felhasználó id-je, amit felhasználhatsz az összekapcsoláshoz:

public static function request()
{
    if (!self::isValidInput(($user = self::createUser()))) {
        return false;
    }
    $userid = self::addUser($user);
    //Ha az email aktiválás ki van kapcsolva, nem küldi ki az aktiváló emailt
    //de akkor sem, ha admin regisztrált

Van még pár hely, ahova írni kéne akkor is, ha regisztrációnál kitöltendő adatot akarsz, de most nincs időm kifejteni. Sokszor volt kérdés, de ose készült róla konkrét dokumentáció, mert nem gondoltam, hogy még használjátok.

Annyi biztos, hogy a Register osztályban a getRecord metódusban is fel kéne venni az új mezők neveit. Az relogin2/includes/register.php-ban is van egy $data tömb, amit bővíteni kellene. Illetve az includes/changeprofile.php, changeprofile.php és ChangeProfile.class.php is változtatásra szorulna.ott is egy $data tömböt kell bővíteni és a request metódusban a $post-ból átadni a user objektumnak az adatokat a többihez hasonlóan. És még a profile.php is ott van. Szóval van sok hely.

Egyébként az aktuális felhasználót a

System::$user

-ből tudod kivenni. A profil.php-ben pedig simán csak $user-ként írva éred el azt, akinek a profilját nézed.

Anonymous képe

Köszi a választ.
De a felhasználónevet nem akarja ki írni.
A kód:

<?php
require_once 'header.php';
require_once 'init.php';
System::protectedSite();
System::$user
?>
<div id="tartalom">
        <?php echo $user;?>
</div>
<div class="menu_simple">
        <ul>
                <li><a href="jatek.php">Város</a></li>
                <li><a id="relogin-logout" href="<?php print System::logoutLink() ?>">Kijelentkezés</a></li>
                <li><a id="relogin-inbox" href="msginbox.php">Üzenetek (<?php
                       
                        $stat = System::msgStat();
                        print $stat['inbox'].'/'.$stat['unread'];
                ?>)</a></li>
                <li><a href="#">Link 3</a></li>
                <li><a href="#">Link 4</a></li>
                <li><a href="#">Link 5</a></li>
        </ul>
</div>
<?php
include('footer.php');
?>

lehet azért van, mert nem a te általad készített header és footer.php-kat használom?

Rimelek képe

A header, footer teljesen mindegy. Az init.php számít, a többi csak design. Csak elfelejtettem írni korábban, hogy a System::$user és a $user is objektum. Tehát így tudod a felhasználónevet kivenni belőle:

echo $user->username
Anonymous képe

Nem tudom mi van vele, de még mindig nem akarja kiírni a felhasználó nevet.

<?php
require_once 'header.php';
require_once 'init.php';
System::$user;
System::protectedSite();
?>
<div id="tartalom">
        <?php echo $user->username;?>
</div>
<div class="menu_simple">
        <ul>
                <li><a href="jatek.php">Város</a></li>
                <li><a id="relogin-logout" href="<?php print System::logoutLink() ?>">Kijelentkezés</a></li>
                <li><a id="relogin-inbox" href="msginbox.php">Üzenetek (<?php
                       
                        $stat = System::msgStat();
                        print $stat['inbox'].'/'.$stat['unread'];
                ?>)</a></li>
                <li><a href="#">Link 3</a></li>
                <li><a href="#">Link 4</a></li>
                <li><a href="#">Link 5</a></li>
        </ul>
</div>
<?php
include('footer.php');
?>
Rimelek képe

Én már összezavarodtam, hogy kinek a nevét akarod kiírni. Mint mondtam, a $user változó csak a profilban elérhető. máshol System::$user van. De ez nem egy névtér. Azzal, hogy a fájl elején beírod, hogy

System::$user;

Nem lesz sima $user változód is. A hosszú verzióval kell használnod. Ez a System nevű osztály statikus tulajdonsága.

echo System::$user->username;

Amúgy az init.php-t minden előtt kellene beilleszteni. Utána jöhetne a header. Az init-nek úgysincs kimenete, de másképp a header fájlod nem fog tudni a loginról.

Anonymous képe

Annak a nevét akarom kiíratni, aki be van jelentkezve.

Rimelek képe

Akkor az utolsó példám jó lesz neked.

Anonymous képe

Köszönöm szépen! :)

Anonymous képe

Szia!
Hogyan lehet azt megoldani, hogy rendszerüzenetet tudjunk küldeni.
Tehát nem az a szokásos írja be a nevet,tárgyat üzenetet stílus, hanem ha megnyom egy gombot, akkor kap a felhasználó (aki megnyomta a gombot) egy üzenetet.
Az üzenet tartalmát pedig PHP-ban tudjuk megadni, legyen most a tárgy: Teszt üzenet a tárgy, a tartalom pedig: Teszt tartalom.
Illetve még az kéne, hogy erre az üzenetre ne lehessen álaszolni, ez miféle képen oldható meg?

Rimelek képe

Üdv. Üzenetet így lehet küldeni:

Messages::sendRequest($cimzett_neve, $targy, $uzenet);

A belépett felhasználó neve pedig így kérhető le:
System::$user->username
Vagyis így küldhetsz üzenetet neki:

Messages::sendRequest(System::$user->username, $targy, $uzenet);

Hogy a tárgyat és az üzenetet hol és hogyan állítod be, az már rajtad áll. A gombnyomásra pedig csak egy gombot kell kitenned valahova. rendszeruzenet1 néven mondjuk

<form method="post" action="" >
<input type="submit" name="rendszeruzenet1" value="Gomb szövege" />
</form>

Persze ezt olyan helyre tedd, ahol nincs még form.
És a gombnyomást így tudod figyelni:

if (isset($_POST['rendszerüzenet1'])) {
    Messages::sendRequest(System::$user->username, $targy, $uzenet);
}
Anonymous képe

Köszönöm szépen :)

Anonymous képe

Sajnos nem működik, pedig még működött. Lehet valamit töröltem.
Letudnád írni, hogy fájlok szükségesek a működéshez?

Üdv.

Rimelek képe

Ha valamit törölhettél, másold vissza a fájlokat. Nem tudom leírni, milyen fájlok szükségesek a működéshez. Mindegyik. Illetve bármelyik. Hibaüzenet nélkül nem tudok okosabbat mondani.

Ha attól félsz, hogy felülírod az eredeti fájlokkal a módosításaidat, akkor mentsd le előbb az összes fájlod. Másold fel a login eredeti fájljait és másold vissza az előzőleg lementetteket. Akkor maximum visszaáll eredetire az, amit véletlenül töröltél.

Anonymous képe

Szia,
A regisztrációból hogyan lehet kivenni az E-mail kezelés,Nemed,Születési idő és a captcha pontokat?

Üdv.

Rimelek képe

Szia. Most ennek nem tudok utánanézni, de ezek szerint gyakorlatilag mindent kivennél a felhasználónevet és jelszót kivéve. Az email viszont a visszaigazoló levél miatt is lényeges. Ha nincs email, akkor minden azzal kapcsolatos dolgot is át kéne írni a loginban. Nem biztos, hogy ez a login kell neked. Pláne, hogy sajnos ezt is elhanyagoltam, mint az előző verzióját, mielőtt ez elkészült. De újra belemélyedni, hogy egy ilyen változtatáshoz összeszedjem az infókat, most nem tudok bevállalni.