Witam, ostatnio z ciekawości pobrałem ezRPG, może za jakiś czas pokuszę się nawet o próbę zrobienia czegoś na jego podstawie :P wkurzała mnie tylko jedna rzecz, przesyłanie komunikatów metodą $_GET, po co użytkownik ma widzieć w linku to co i tak zobaczy na stronie? (a jak zechce to i z nudów coś tam sobie napisze :P) więc pierwsza próba była ze zmiennymi sesyjnymi no ale tu coś mi ciągle nie grało tak jak powinno, więc idąc po najlżejszej linii oporu doszedłem do wniosku że można to przecież zapisać do ciasteczka, odczytać a następnie takie ciasteczko wywalić. Wiadomo ma to swoje wady, np. użytkownik może mieć w przeglądarce zablokowane zapisywanie ciasteczek, a i parę innych pewnie się znajdzie :P
Poniżej przykład jak to zrobić:
1. Otwieramy plik: /hooks/header_msg.php
Wygląda to mniej więcej tak:
Kod php:
<?php
defined('IN_EZRPG') or exit;
$hooks->add_hook('header', 'header_msg', 1);
function hook_header_msg(&$db, &$tpl, &$player, $args = 0)
{
global $purifier;
if (isset($_GET['msg']) && is_string($_GET['msg']))
{
$_msg = trim(stripslashes($_GET['msg']));
$_msg = $purifier->purify($_msg);
if (!empty($_msg))
$tpl->assign('GET_MSG', $_msg);
}
return $args;
}
?>
2. Zmieniamy na:
Kod php:
<?php
defined('IN_EZRPG') or exit;
$hooks->add_hook('header', 'header_msg', 1);
function hook_header_msg(&$db, &$tpl, &$player, $args = 0)
{
global $purifier;
/*sprawdzamy czy ciasteczko istnieje*/
if (isset($_COOKIE['msg']) && is_string($_COOKIE['msg']))
{
$_msg = trim(stripslashes($_COOKIE['msg']));
$_msg = $purifier->purify($_msg);
if (!empty($_msg))
$tpl->assign('GET_MSG', $_msg);
/*usuwamy ciasteczko*/
setcookie("msg", "", time());
}
return $args;
}
?>
Połowa pracy za nami pozostało tylko zmienić kilka linijek w plikach w katalogu modules, poniżej co i jak na przykładzie logowania.
1. Otwieramy plik /modules/Login/index.php, następnie zjadujemy:
Kod php:
header('Location: index.php?msg=' . urlencode($msg));
2. Zmieniamy to na:
Kod php:
header('Location: index.php');
3. Dodajemy pustą linie przed powyższym, i wpisujemy w niej:
Kod php:
setcookie("msg", $msg);
Analogicznie do tego przerabiamy pliki pozostałych modułów. Może komuś się to przyda.
pozdrawiam arti
Zakładki