|
|
|
| Здравствуйте!
Пишу программу по учёбе (файловый менеджер) пользуясь приобретённой книгой “PHP 5 на примерах” написанной нашими многоуважаемыми авторами. За книгу очень благодарен, всё ясно и чётко. Но у меня возникла такая проблема: при создании сессии не происходит регистрация переменных (session_register() ) из-за чего значения users и pass теряются на первых же шагах. А они необходимы, так как по users происходит запрос данных из файла ('./users/'.$login) а в данных содержится настройка начального пути для конкретного пользователя. В результате всё сбивается и пользователи, которые должны были попадать в разные папки попадают в одну. Помогите разобраться, т.к. сижу над этим уже почти неделю, всех замучил вопросами (никто не знает), и сроки сдачи поджимают.
Полный архив проекта приложенным файлом.
С уважением и ОГРОМНОЙ надеждой на помощь, Олег.
P.S. для программы в архиве логин: oleg пароль: 1234
Обратите внимание на начальный путь в conf2.php
Пользователи должны попадать в папку files , а затем в подпапки.
У логина oleg самой верхней должна быть установлена папка files/01
Вот интересующая выдержка из index.php
<?
/*
_______________________________
___________Файл: index.php_________
_______________________________
*/
//Включаем переменные настройки, хранящихся в одном файле
include("config.php");
//Включаем библиотеку функций, хранящихся в одном файле
include("functions.php");
clearstatcache();
//Присвоить переменной $control кнопки управления файл менеджера
$control="<hr width=600 size=1>
<table width=600 border=0 cellspacing=0 cellpadding=0 align=center>
<tr bgcolor=#EEEEEE>
<td><input type=image name=delete SRC=images/delete.gif alt='Удалить выбранное'></td>
<td><div align=center><input type=image name=copy_tree SRC=images/copy.gif alt='Копировать файлы в...'></div></td>
<td><div align=right><input type=image name=log_out SRC=images/log_out.gif alt='Завершить работу с файл менеджером'></div></td>
</tr>
</table>";
//Присвоить переменной $form форму авторизации
$form = "<form action=index.php method=POST>
<table align=center width=600 border=0 cellspacing=1 cellpadding=3 bgcolor=#333333>
<tr height=30 align=center><td bgcolor=#3399CC background=images\bckg.gif>
<font class=font_2><b>Авторизация</b></font></td></tr>
<tr align=center><td bgcolor=EEEEEE>
<input type=hidden name=seenpass value=true>\n<font class=font_2>Чтобы войти, Вам нужно ввести логин и пароль<br><hr size=1>
<table width=210 cellsapacing=5 cellpadding=1>
<tr><td align=left><font class=font_2>Логин:</font></td><td align=right width=100%><input type=text name=login size=17 class=form style=width=100%></td></tr>
<tr><td align=left><font class=font_2>Пароль:</font></td><td align=right width=100%><input type=password name=pass size=17 class=form style=width=100%></td></tr>
<tr><td colspan=2><input type=submit value=Войти class=input_text style=width=100%></font></td></tr></table>
</td></tr></table></form>";
if (!isset($seenpass) and !isset($uin)) {
print_header("Авторизация");
print "\n".$form;
print_footer();
exit;
}
elseif (!isset($uin)) {
@srand ((double) microtime() * 1000000);
@$uin = uniqid (rand(), true);
$pass_m = md5($pass);
}
session_name("CF");
$sid = md5($uin);
session_id($sid);
session_start();
echo "были введены данные $login $pass \n";
$usr_str=f_get('./users/'.$login);
$usr_str=str_replace("\r\n", "\n", $usr_str);
$arr=explode("\n", $usr_str);
echo "чтение из файла $arr[0] $arr[1] $mypath \n";
// подставить начальные пути и прописать в них
// путь из $arr[1]
include("conf2.php");
$pass_m_1 = $arr[0];
if (!file_exists('./users/'.$login) and ($pass_m == $pass_m_1)) {
session_register('seenpass');
session_register('pass_m');
//session_register('pass_m_1');
session_register('login');
//$_SESSION['pass_m_1'] = $arr[0];
//$_SESSION['d_path'] = $arr[1];
$_SESSION['mypath'] = $arr[1];
}
elseif (!file_exists('./users/'.$login) or ($pass_m != $pass_m_1)) {
//echo "значение pass_m_1 ($pass_m_1) \n";
//echo "значение пути ($d_path) СЕССИЯ ЗАКРЫТА!\n";
session_destroy();
print_header("Авторизация | Ошибка!");
print "<div align=center><font class=font_2 color=red><b>Вы ввели неправильный логин или пароль!</b></font><br>".$form."</div>";
print_footer();
exit;
}
|
| |
|
|
|
|
|
|
|
для: Oleg-Perm
(16.03.2006 в 02:06)
| | А у вас при авторизации, не происходит заход в блок
<?php
if (!file_exists('./users/'.$login) and ($pass_m == $pass_m_1)) {
session_register('seenpass');
session_register('pass_m');
//session_register('pass_m_1');
session_register('login');
//$_SESSION['pass_m_1'] = $arr[0];
//$_SESSION['d_path'] = $arr[1];
$_SESSION['mypath'] = $arr[1];
}
?>
|
т.е. условие не выполняется, нужно убрать отрицание ! у !file_exists('./users/'.$login) - тогда сессия будет регистрироваться. | |
|
|
|
|
|
|
|
для: cheops
(16.03.2006 в 13:52)
| | Да, да, точно! Я понял ошибку! Я на автомате поставил знак ! а потом его не увидел. И эхо не сделал! Сейчас попробую, может заработает.
Большое спасибо! | |
|
|
|