Вход

View Full Version : личный кабинет, авторизацию на сайте в шапку сайта.


z-0091
07.04.2010, 19:53
дело в том, что по своей задумке, ввод логина и пароля на моем сайте будет находиться в шапке сайта (с права рядом/на банере) хотелось бы поподробнее узнать, как это можно осушествить. ведь этот блок для анонимов и для авторизованых пользователей будет разным.

Soniks
08.04.2010, 19:59
Есть вот такой вариант проверки:
global $user;
if(is_user($user)){
echo " тут выводим блок для пользователя";
}else{
echo "тут выводим блок для гостя";
}
Если вы используете темы на html шаблонах,
то вместо echo "...";
можно ввести переменную, например:

if(is_user($user)){
$u_block = "тут html код для блока пользователя";
}else{
$u_block = "тут html код для блока гостя";
}

и в html шаблоне уже просто вставляете в нужном месте переменную $u_block

z-0091
15.04.2010, 12:36
этот пшп код адаптирован под версию 8.0??? дело в том что я нашел вот такой вот код, и он отличаеться вроде.

if ($username == $anonymous) {
mt_srand ((double)microtime()*1000000);
$maxran = 1000000;
$random_num = mt_rand(0, $maxran);
$datekey = date("F j");
$rcode = hexdec(md5(".htmlspecialchars($_SERVER[HTTP_USER_AGENT])." . $sitekey . $random_num . $datekey));
$code = substr($rcode, 2, 6);
echo "
<form action=\"modules.php?name=Your_Account\" method=\"post\" style=\"display: inline\">
<input type=\"hidden\" name=\"op\" value=\"login\">&nbsp; <font class=A_white>Логин:</font>
<input type=\"text\" name=\"username\" maxlength=\"25\">
<input type=\"hidden\" name=\"random_num\" value=\"$random_num\">
<input type=\"hidden\" name=\"gfx_check\" value=\"$code\">
<font class=A_white>Пароль:</font>
<input type=\"password\" name=\"user_password\" maxlength=\"20\">
<input type=\"submit\" value=\"Вход\">
</form>
";
}
else {
echo " &nbsp;&nbsp;<font class=A_white>Здравствуйте $username !</font></b>";
}
echo " </td>
<td width=\"30%\">
<p align=\"right\"><font class=A_white><b>
<script type=\"text/javascript\">
<!-- // Array ofmonth Names
var monthNames = new Array( \"Января\",\"Февраля\",\"Марта\",\"Апреля\",\"Мая\",\"Июня\",\"Июля\",\"Августа\",\"Сентября\",\"Октября\",\"Ноября\",\"Декабря\");
var now = new Date();
thisYear = now.getYear();
if(thisYear < 1900) {thisYear += 1900}; // corrections if Y2K display problem
document.write(now.getDate() + \" \" + monthNames[now.getMonth()] + \", \" + thisYear + \"&nbsp;года\");
// -->
</script>
</b></font>
</td>
</tr>
</table>
";

Этот код из файла theme в теме оформления под 8-ю версию

z-0091
15.04.2010, 14:56
немного разобравшись, изменил под себя часть авторизации, которая была в стандартной теме рус нюки 8.0. Получилось следующее:

if ($username == $anonymous) {
mt_srand ((double)microtime()*1000000);
$maxran = 1000000;
$random_num = mt_rand(0, $maxran);
$datekey = date("F j");
$rcode = hexdec(md5(".htmlspecialchars($_SERVER[HTTP_USER_AGENT])." . $sitekey . $random_num . $datekey));
$code = substr($rcode, 2, 6);
echo "

<table border=\"0\">
<tr>
<td>
<form action=\"modules.php?name=Your_Account\" method=\"post\">
<input type=\"hidden\" name=\"op\" value=\"login\">&nbsp;
<p><font class=A_white>Логин:&nbsp &nbsp </font><input type=\"text\" name=\"username\" maxlength=\"25\"></p>
<p><input type=\"hidden\" name=\"random_num\" value=\"$random_num\">
<input type=\"hidden\" name=\"gfx_check\" value=\"$code\"></p>
<p><font class=A_white>Пароль:&nbsp</font><input type=\"password\" name=\"user_password\" maxlength=\"20\"></p>
<p align=\"center\">
<input type=\"submit\" value=\"Войти\"></p>
<p align=\"center\">
<a href=\"modules.php?name=Your_Account&amp;op=new_user\">Регистрация</A>
<a href=\"modules.php?name=Your_Account&amp;op=pass_lost\">Забыли пароль?</A>
</p>
</form>

</td>
</tr>
</table>
";
}
else {
echo " &nbsp;&nbsp;<font class=A_white>Здравствуйте $username !</font></b>";

}

но дело в том, что мой шаблон сайта построен на html.
как я понимаю:
mt_srand ((double)microtime()*1000000);
$maxran = 1000000;
$random_num = mt_rand(0, $maxran);
$datekey = date("F j");
$rcode = hexdec(md5(".htmlspecialchars($_SERVER[HTTP_USER_AGENT])." . $sitekey . $random_num . $datekey));
$code = substr($rcode, 2, 6);
в этой часте идет шифрование кода. как мне вставить это все в мой шаблон?


Как вы мне посоветовали

if(is_user($user)){
$u_block = "тут html код для блока пользователя";
}else{
$u_block = "themes/$ThemeSel/loginbloks.html";
}

тоесть в своем шаблоне, я должен вставить переменую $u_block на том месте, где у меня будет выполняться вход на сайт. как мне засунуть, форму ввода вместе с шифрованием в фал loginbloks.html

зы. Большое спасибо за терпение.

Soniks
15.04.2010, 15:12
Можно и по другому:
global $user, $cookie, $anonymous, $sitekey;
cookiedecode($user);
$username = $cookie[1];
if ($username == "") {
$username = $anonymous;
}

if($username == $anonymous){
$u_block = " &nbsp;&nbsp;<font class=A_white>Здравствуйте $username !</font></b>";
}else{

mt_srand ((double)microtime()*1000000);
$maxran = 1000000;
$random_num = mt_rand(0, $maxran);
$datekey = date("F j");
$rcode = hexdec(md5(".htmlspecialchars($_SERVER[HTTP_USER_AGENT])." . $sitekey . $random_num . $datekey));
$code = substr($rcode, 2, 6);
$u_block = "

<table border=\"0\">
<tr>
<td>
<form action=\"modules.php?name=Your_Account\" method=\"post\">
<input type=\"hidden\" name=\"op\" value=\"login\">&nbsp;
<p><font class=A_white>Логин:&nbsp &nbsp </font><input type=\"text\" name=\"username\" maxlength=\"25\"></p>
<p><input type=\"hidden\" name=\"random_num\" value=\"$random_num\">
<input type=\"hidden\" name=\"gfx_check\" value=\"$code\"></p>
<p><font class=A_white>Пароль:&nbsp</font><input type=\"password\" name=\"user_password\" maxlength=\"20\"></p>
<p align=\"center\">
<input type=\"submit\" value=\"Войти\"></p>
<p align=\"center\">
<a href=\"modules.php?name=Your_Account&amp;op=new_user\">Регистрация</A>
<a href=\"modules.php?name=Your_Account&amp;op=pass_lost\">Забыли пароль?</A>
</p>
</form>

</td>
</tr>
</table>
";

}



Вставляете это в theme.php в функцию themeheader(), а в html файле header.html вставляете переменную $u_block в нуное место где необходимо вывести блок для гостя или пользователя.

z-0091
15.04.2010, 16:54
все остальное удалить в фнкции themeheader()?
function themeheader() {
global $user, $banners, $sitename, $slogan, $nukeurl, $site_logo, $anonymous, $cookie, $prefix, $db, $ThemeSel;
cookiedecode($user);
$username = $cookie[1];
if ($username == "") {
$username = $anonymous;
}
if (isset($_POST['query']) OR isset($_GET['query'])) {
(isset($_POST['query']) ? $query=filter($_POST['query'],"nohtml") : $query=filter(rawurldecode($_GET['query']),"nohtml"));
}
else {
$query='';
}
$ads = ads(0);
$public_msg = public_message();

$tmpl_file = "themes/$ThemeSel/header.html";
$thefile = implode("", file($tmpl_file));
$thefile = addslashes($thefile);
$thefile = "\$r_file=\"".$thefile."\";";
eval($thefile);
print $r_file;
blocks(left);
$tmpl_file = "themes/$ThemeSel/left_center.html";
$thefile = implode("", file($tmpl_file));
$thefile = addslashes($thefile);
$thefile = "\$r_file=\"".$thefile."\";";
eval($thefile);
print $r_file;


на том месте, где должны быть форма, стоит надпись здравствуйте гость..

поменял
if($username == $anonymous){

на

if(is_user($user)){

и все заработало

z-0091
15.04.2010, 19:34
еше вот маленький вопросик, возможно не по теме.
Если пользователь аворизовался, появляется надпись
Здравствуйте $username. где $username переменная содержащая имя пользователя. Я хотел бы еше добавить следующее:
поле личные сообщения
поле редактирования акка
поле выход.
Где мне взяять переменные все?
и вообще, на будушее, есть ли где-то список всех переменных?

Soniks
17.04.2010, 20:07
z-0091 Это обычные ссылки, на те или иные модули системы. установите обычную тему и посмотрите путь нужных вам ссылок.

BFG
16.01.2011, 17:01
а вот это как раз то что нужно, даже не пришлось новую тему создавать )))