Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Темы оформления phpNuke (http://forum.mynuke.ru/forumdisplay.php?f=12)
-   -   личный кабинет, авторизацию на сайте в шапку сайта. (http://forum.mynuke.ru/showthread.php?t=3832)

z-0091 07.04.2010 19:53

личный кабинет, авторизацию на сайте в шапку сайта.
 
дело в том, что по своей задумке, ввод логина и пароля на моем сайте будет находиться в шапке сайта (с права рядом/на банере) хотелось бы поподробнее узнать, как это можно осушествить. ведь этот блок для анонимов и для авторизованых пользователей будет разным.

Soniks 08.04.2010 19:59

Есть вот такой вариант проверки:
PHP код:
 global $user;
if(
is_user($user)){
echo 
" тут выводим блок для пользователя";
}else{
echo 
"тут выводим блок для гостя";


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


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

z-0091 15.04.2010 12:36

этот пшп код адаптирован под версию 8.0??? дело в том что я нашел вот такой вот код, и он отличаеться вроде.

PHP код:
 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($rcode26);
        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. Получилось следующее:

PHP код:
 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($rcode26);
        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

Можно и по другому:
PHP код:
 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($rcode26); 
     
$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()?
PHP код:
 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

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


Часовой пояс GMT +4, время: 05:04.

Copyright © 2005 by Soniks