Lucky-DEN пишет:А как сделать так чтоб юзер мог залогиница с главной страницы? (Т.е. как прилепить на сайт квадратик с полями "логи" "пароль"и кнопочку "войт" и чтоб потом в этом квадратике отображалась сцылка "админка" либо просто был автоматический редирект в админку в добавление новости.)
я делал так:
если strawberry 1.1.1, то
скопировал модуль login.mdu, например login_ext.mdu - оставил его в тойже папке.
отредактировал новый файл:
<?php
// из punBB
$PHP_SELF = $_SERVER["HTTP_REFERER"];
function random_pass($len = 6){
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$password = '';
for ($i = 0; $i < $len; ++$i){
$password .= substr($chars, (mt_rand() % strlen($chars)), 1);
}
return $password;
}
if ($action == 'forgot'){
if ($for){
if ($key){
$new_password = @file_read(cache_directory.'/_'.$for.'_.tmp');
unlink(cache_directory.'/_'.$for.'_.tmp');
if ($key == $new_password){
$sql->update(array(
'table' => 'users',
'where' => array("username = $for"),
'values' => array('password' => $new_password)
));
echo 'Пароль был успешно изменён изменён. <br><a href="'.$PHP_SELF.'">'.t('Вернуться назад').'</a>';
break;
} else {
echo 'Ключ не верный. Попробуйте снова. <br><a href="'.$PHP_SELF.'">'.t('Вернуться назад').'</a>';
break;
}
} else {
foreach ($sql->select(array('table' => 'users')) as $row){
if (strtolower($for) == strtolower($row['username']) or strtolower($for) == strtolower($row['mail'])){
if ($row['mail']){
$new_password = random_pass();
$activation_url = $config['http_script_dir'].'/?mod='.$mod.'&action='.$action.'&key='.md5x($new_password).'&for='.$row['username'];
ob_start();
include mails_directory.'/forgot.tpl';
$tpl['body'] = ob_get_clean();
preg_match('/Subject:(.*)/i', $tpl['body'], $tpl['subject']);
preg_match('/Attachment:(.*)/i', $tpl['body'], $tpl['attachment']);
$tpl['body'] = preg_replace('/Subject:(.*)/i', '', $tpl['body']);
$tpl['body'] = preg_replace('/Attachment:(.*)/i', '', $tpl['body']);
$tpl['body'] = trim($tpl['body']);
$tpl['subject'] = trim($tpl['subject'][1]);
$tpl['attachment'] = trim($tpl['attachment'][1]);
if (!file_exists(cache_directory.'/_'.$row['username'].'_.tmp')){
file_write(cache_directory.'/_'.$row['username'].'_.tmp', md5x($new_password));
cute_mail($row['mail'], $tpl['subject'], $tpl['body'], $tpl['attachment']);
}
echo 'Вам на e-mail было отправлено сообщение. Проверьте почту. <br><a href="'.$PHP_SELF.'">'.t('Вернуться назад').'</a>';
break;
} else {
echo 'Ой какая непрятность. Пользователь <b>%user</b> найден, но он не указал свой e-mail. Если вы являетесь этим неродивым пользователем, то обратитесь к администрации.'. array('user' => $row['name']).' <br><a href="'.$PHP_SELF.'">'.t('Вернуться назад').'</a>';
break;
}
} else {
echo 'Нет такого пользователя в базе. Извините, проваливайте отсюда. <br><a href="'.$PHP_SELF.'">'.t('Вернуться назад').'</a>';
break;
}
}
}
} else {
?>
<form action="<?=$PHP_SELF; ?>" method="get">
<input name="mod" type="hidden" value="<?=$mod; ?>">
<input name="action" type="hidden" value="<?=$action; ?>">
<?=t('Укажите ваш логин или e-mail'); ?><br />
<input class="restorepass" name="for" type="text" value=""><br />
<input class="restorepassbtn" type="submit" value=" <?=t('Восстановить'); ?> ">
</form>
<?
}
} else {
cute_setcookie('username', '', (time - 3600 * 24 * 365), '/');
cute_setcookie('password', '');
cute_setcookie('md5_password', '', (time - 3600 * 24 * 365), '/');
cute_setcookie('login_referer', '');
?>
<table border="0" cellspacing="0" cellpadding="1">
<form name="login" action="<?=$PHP_SELF; ?>" method="post" onsubmit="return process_form(this)">
<tr>
<td><?=t('Логин'); ?>
<td><input class="user" tabindex="1" type="text" name="username" value="">
<tr>
<td><?=t('Пароль'); ?>
<td><input class="pass" type="password" name="password">
<hr>
<tr>
<td><a href="<?=$PHP_SELF; ?>?mod=login&action=forgot"><?=t('Забыли пароль?'); ?></a>
<td><input class="loginbtn" accesskey="s" type="submit" value="<?=t('Вход...'); ?>">
<td align="center" colspan="3"><?=$result; ?></td>
</tr>
<input type="hidden" name="action" value="dologin">
</form>
</table>
<?
}
?>
отредактил поля так, чтобы вписывалось в скин сайта, стилей добавил(они прописаны в основном стиле сайта)
добавил в раздел Кабинета такое(это блок драгндропа)
<? if ($member){ ?>
<li><a href="<?=$config['http_script_dir']; ?>?mod=personal">Профиль</a></li>
<li><a href="?do=logout">Выход</a></li>
<hr>
<? if (cute_get_rights('ddb', 'read')){ ?>
<li><a href="<?=$config['http_script_dir'] ;?>">Админка</a></li>
<li><a href="?ddb=edit">Редактировать блоки</a></li>
<li><a href="?ddb=html">Смотреть html</a></li>
<li><a href="<?=$config['http_script_dir'] ;?>/docs">Документация</a></li>
<? } ?>
<? } else { ?>
<li><a href="?do=registration">Регистрация</a></li>
</ul>
<?
include_once 'admin/head.php';
require modules_directory.'/login_ext.mdu';
?>
<? } ?>
ну и в этой строчке
<li><a href="?do=logout">Выход</a></li>
видно, что блок логаута, вот его скрипт:
<?php
cute_setcookie('username', '', (time() - 3600 * 24 * 365)); // cnr
cute_setcookie('md5_password', '', (time() - 3600 * 24 * 365)); // cnr
cute_setcookie('username', '', (time() - 3600 * 24 * 365), '/');
cute_setcookie('md5_password', '', (time() - 3600 * 24 * 365), '/');
cute_setcookie('login_referer', '');
@session_destroy();
@session_unset();
cute_setcookie(session_name(), '');
header('Location: '.$_SERVER["HTTP_REFERER"]);
?>