19. Prosinec 2008
Pokud potřebujete převést stávající databázi uživatelů do tabulky uživatelů patřící phpBB a umožnit tak pouze jedno přihlašování pro vaše stránky i fórum, pak si přečtěte tento návod: Hromadné přidávání uživatelů ze souboru.
Aby vše proběhlo hladce, použijeme funkci add_user(), kterou používá phpBB pro registraci nových uživatelů.
Záleží na nastavení phpBB, co je vyžadováno při registraci, ale nám nyní stračí jen jméno, heslo a email. Tyto data jsou v našem příkladě uložena v proměnných. $_GET["username"], $_GET["pwd"], $_GET["email"].
Všechna data musíme samozřejmě před vložením zkontrolovat a ošetřit (není součástí tohoto článku). Myslím tím maximální délku nicku, minimální délku hesla, složitost hesla, zda je email platný a funkční atp…
Základ php souboru s registrací bude vypadat asi takto:
// phpBB inicializace
define('IN_PHPBB', true); // základní kostanta
$phpbb_root_path = "./forum/"; // cesta k fóru
$phpEx = "php"; // koncovky php souborů
include($phpbb_root_path . "common." . $phpEx);
include($phpbb_root_path . "includes/functions_user." . $phpEx);
$arrTime = getdate();
$unixTime = strtotime($arrTime["year"] . “-” . $arrTime["mon"] . “-” . $arrTime["mday"] . ” ” . $arrTime["hours"] . “:” . $arrTime["minutes"] . “:” . $arrTime["seconds"]);
$user_row = array(
'username' => $_GET["username"],
‘user_password’ => phpbb_hash($_GET["pwd"]),
‘user_email’ => $_GET["email"],
‘group_id’ => (int) 2,
‘user_timezone’ => (float) 0,
‘user_dst’ => “0″,
‘user_lang’ => “cs”,
‘user_type’ => 0,
‘user_actkey’ => “”,
‘user_ip’ => $_SERVER["REMOTE_HOST"],
‘user_regdate’ => $unixTime,
‘user_inactive_reason’ => 0,
‘user_inactive_time’ => 0
);
$user_id = user_add($user_row);
Na konci získáváme uživatelovo id ($user_id) pro párování s tabulkami, které jsme vytvořili a používáme my.
Hlavní zdroj: Automated member registration for phpBB
Dále:
Rubriky: phpBB |
Štítky: návod, phpBB | 1 komentář
19. Prosinec 2008
Náš cíl je mít jedno uživatelské jméno a heslo pro stránky a zároveň pro phpBB. Formulář pro přihlašování bude na každé stránce webu a chceme se přihlašovat přes vlastní formulář = bez nutnosti navštívit fórum. V jiném článku se můžete dočíst o vlastní registraci i do phpBB.
Příhlášení
Pro přihlášení potřebujeme přihlašovací formulář:
<form action="./forum/ucp.php?mode=login" method="post"><div>
Uživatelské jméno: <input name="username" type="text" />
Heslo: <input name="password" type="password" />
<input name="redirect" type="hidden" value="..<?=$_SERVER['PHP_SELF']?>” >
<input name=”login” type=”submit” value=”Přihlásit” /></div>
</form>
Upravte si správně cestu k souboru ucp.php a hodnotu pole redirect abyste se po zalogování vrátili na původní stránku. (Uvidíte stránku fóra na pár vteřin, řešení viz níže)
Je návštěvník přihlášený?
První možnost:
if(isset($user->data['is_registered']) && $user->data['is_registered']){
// je přihlášený
}else{
// není přihlášený
}
Druhá možnost:
if($user->data['username'] != “Anonymous”){
// je přihlášený
}else{
// není přihlášený
}
V případě, že je uživatel přihlášen, může se nám hodit uživatelovo id pro výběr dalších informací z jiné tabulky v databázi:
$user->data['user_id'];
Případně další informace: Obsah proměnné $user->data v phpBB
Odhlášení
Pro odhlášení stačí zavolat tyto dvě funkce:
$user->session_kill();
$user->session_begin();
Vylepšení přihlašování
Nejprve je dobré vyhnout se několika vteřinám po zalogování strávených na stránce fóra. Chceme tedy abychom po vyplnění formuláře ihned byly zpět na té samé stránce.
V souboru functions.php (/forum/includes/functions.php) najděte funkci login_box() (v mé verzi to je řádek 2425) a tam najděte a vymažte nebo dejte do komentáře řádek, kde se volá funkce meta_refresh():
$redirect = meta_refresh(3, $redirect);
Na toto místo přidejte tento řádek kódu:
$redirect = redirect($redirect);
Celkově to tedy bude vypadat asi takto:
$redirect = redirect($redirect); // nove
//vymazano: $redirect = meta_refresh(3, $redirect);
V případě špatného zadání jména nebo hesla musíme vyřešit oznámení chyby. Přidáme celou větev else
if ($result['status'] == LOGIN_SUCCESS)
{
// zde jsme upravovali kód
}
else
{
$redirect = redirect($redirect.’?err=’.$result['error_msg']); // nove
}
Zde se rovnou také přesměrováváme na původní soubor současně také souboru posíláme, co se stalo za chybu a můžeme tak tedy vypsat chybovou zprávu. Například takto:
switch ($_REQUEST["err"]) {
case “LOGIN_ERROR_USERNAME”: echo “Bylo zadáno špatné uživatelské jméno!”; break;
case “LOGIN_ERROR_PASSWORD”: echo “Bylo zadáno špatné heslo!”; break;
case “NO_PASSWORD_SUPPLIED”: echo “Zadejte heslo!”; break;
}
Pokud je přihlášení neúspěšné přesměrování se v tomto příkladě provede vždy na náš přihlašovací soubor. Šlo by například do přihlašovacího formuláře přidat další skrytou hodnotu, podle které bychom poznali, že soubor ucp.php voláme my a ne phpBB. Záleží samozřejmě na konkrétní potřebě…
Další čtení:
Rubriky: phpBB |
Štítky: návod, phpBB | Žádné komentáře
19. Prosinec 2008
Koukněte se na phpBB.cz: Přidaní vlastní stránky do phpBB, což je v zásadě překlad Add a New Custom Page to phpBB.
Toto je velmi čisté a zřejmě doporučované řešení. Ale má nevýhodu, že stránky jsou společně s fórem. Mají stejné rozvržení designu a pro jednu stránku musíte editovat dva soubory na dvou různých místech.
Musím upozornit, že předpokládám vývoj nějaké složitější PHP aplikace a fórum je jednou z mnoha částí a ostatní stránky budou mnohem odlišnější.
Základ je tedy, že porušíme oddělovaní obsahu stránky od designu a PHP kódu. Každá stránka musí mít na začátku definovánu konstantu IN_PHPBB.
define('IN_PHPBB', true);
Je dobré taky definovat cestu k fóru kvůli volání dalších souborů s funkcemi. Současně také existuje v phpBB proměnná pro koncovky souborů (php). Pokud chceme vědět, zda je uživatel přihlášený musíme taky naplnit pole $user. Celý začátek stránky tedy bude vypadat takto:
// phpBB inicializace
define('IN_PHPBB', true); // základní kostanta
$phpbb_root_path = "./forum/"; // cesta k fóru
$phpEx = "php"; // koncovky php souborů
include($phpbb_root_path . 'common.' . $phpEx); // základní funkce
$user->session_begin(); // naplnení $user
Možné konflikty ve zdrojovém kódu: třída $user, třída $db, funkce user_add() se připojuje k databázi, kde je phpBB uloženo, funkce, třídy, proměnné, konstanty.
Pokud budete používat ve vašem projektu dvě databáze, pak musíte u vašich SQL dotazů určit, které spojení se má použít ($db2):
$db2 = mysql_connect($db_host, $db_user, $db_pswd, true);
$z = mysql_query(”SELECT sloupec FROM tabulka”, $db2);
Pokud budete používat jednu databázi, tak můžete na to zapomenout. Připojit se můžete dvakrát.
Více se dozvíte v článcích:
Rubriky: phpBB |
Štítky: návod, phpBB | Žádné komentáře
18. Prosinec 2008
Pomocí funkce print_r() jsem si nechal vypsat obsah pole $user->data[] pro nepřihlášeného uživatele. Vidíme tak, jaka data můžeme získat bezpracně. Například barvu uživatele: $user->data['user_colour'] atp..
[user_id] => 1
[user_type] => 2
[group_id] => 1
[user_permissions] => 00000000003khra3nk i1cjyo000000 i1cjyo000000 i1cjyo000000
[user_perm_from] => 0
[user_ip] =>
[user_regdate] => 1227702342
[username] => Anonymous
[username_clean] => anonymous
[user_password] =>
[user_passchg] => 0
[user_pass_convert] => 0
[user_email] =>
[user_email_hash] => 0
[user_birthday] =>
[user_lastvisit] => 0
[user_lastmark] => 0
[user_lastpost_time] => 0
[user_lastpage] =>
[user_last_confirm_key] =>
[user_last_search] => 0
[user_warnings] => 0
[user_last_warning] => 0
[user_login_attempts] => 0
[user_inactive_reason] => 0
[user_inactive_time] => 0
[user_posts] => 0
[user_lang] => cs
[user_timezone] => 0.00
[user_dst] => 0
[user_dateformat] => d M Y H:i
[user_style] => 2
[user_rank] => 0
[user_colour] =>
[user_new_privmsg] => 0
[user_unread_privmsg] => 0
[user_last_privmsg] => 0
[user_message_rules] => 0
[user_full_folder] => -3
[user_emailtime] => 0
[user_topic_show_days] => 0
[user_topic_sortby_type] => t
[user_topic_sortby_dir] => d
[user_post_show_days] => 0
[user_post_sortby_type] => t
[user_post_sortby_dir] => a
[user_notify] => 0
[user_notify_pm] => 1
[user_notify_type] => 0
[user_allow_pm] => 1
[user_allow_viewonline] => 1
[user_allow_viewemail] => 1
[user_allow_massemail] => 0
[user_options] => 895
[user_avatar] =>
[user_avatar_type] => 0
[user_avatar_width] => 0
[user_avatar_height] => 0
[user_sig] =>
[user_sig_bbcode_uid] =>
[user_sig_bbcode_bitfield] =>
[user_from] =>
[user_icq] =>
[user_aim] =>
[user_yim] =>
[user_msnm] =>
[user_jabber] =>
[user_website] =>
[user_occ] =>
[user_interests] =>
[user_actkey] =>
[user_newpasswd] =>
[user_form_salt] => a85f92ac60096180
[session_last_visit] => 1229628479
[is_registered] =>
[is_bot] =>
[session_id] => e417cf1d45228067c9df78a4009c2b93
[session_user_id] => 1
[session_start] => 1229628479
[session_time] => 1229628479
[session_browser] => Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4
[session_forwarded_for] =>
[session_ip] => 94.166.0.108
[session_autologin] => 0
[session_admin] => 0
[session_viewonline] => 1
[session_page] => ../soubor.php
[session_forum_id] => 0
Rubriky: phpBB |
Štítky: phpBB | Žádné komentáře
10. Prosinec 2008
Na serveru phpBB.com si stáhnete aktuální verzi phpBB 3.
Na serveru phpBB.cz si stáhnete jazykový balík pro češtinu a pro vaši verzi phpBB.
Anglickou verzi si rozbalíte na disk a nahrajete pomocí FTP na váš server. Jazykový balí si také rozbalíte a nahrajete složku cs do složky language na vašem serveru.
Po instalaci, kdy se přihlásíte do administrace najdete nastavení jazykových balíku v Systém -> Jazykové balíky. Jazykový balík musíte nainstalovat a aktivovat.
Záleží v jakém pořadí uvedené kroky provedete, jestli projdete anglickou instalací nebo českou (měla by být aktivní pokud nahrajete všechny soubory phpBB i jazykového balíku najednou).
Zkontrolujte také zda máte v Obecné -> Nastavení fóra nastavenou Češtinu jako výchozí jazyk. Zde si také můžete nastavit časové pásmo a formát data a času, já preferuji vlastní nastavení: “j. F Y, H:i” tedy například “10. prosinec 2008, 12:39″.
Po instalaci a úpravách nezapomeňte zmazat potřebné složky (Install) a změňte zpět práva souborů (CHMOD, 604/644). Instalační procedura i Administrační rozhraní by vás na to mělo upozornit.
phpBB.cz: phpBB 3.0: Instalace
Rubriky: phpBB |
Štítky: česky, návod, phpBB | Žádné komentáře