[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Найти ошибку
denis79513
Простой пример по работе с сессиями, сразу все работало, потом что-то перестало.
1 файл

<link rel="stylesheet" type="text/css" href="style.css" />
<div
class="login"><form method="post" action="log.php">
<font
color="#FFFFFF"> <strong>Авторизация</strong></font>
<table>
<tr><td><font
color="#FFFFFF">Логин:</font></td>
<td><input
name="login" type="text" /></td></tr>
<tr><td><font
color="#FFFFFF">Пароль:</font></td><td><input name="pas" type="password" /></td></tr>
<tr><td><input
name="submit" type="submit" value="Войти" /></td><td><input name="reset" type="reset" /></td></tr>
</table>
</form></div>


2 файл

<?php
if(isset($_POST['submit']))
{
include "conect.php";
If (!$conect) {echo('Соединение с сервером не было установлено!<br>');}
$condb=mysql_select_db($dbname,$conect);
If (!$condb) {echo('Соединение с базой данных не было установлено!<br>');}
$login = (isset($_POST['login']) ? htmlspecialchars(trim($_POST['login'])) : false);
if (empty($login))
{echo('
<br><center><b><font color="ffffff">Вы не ввели имя!</font></b></center>'
);} else {
$password = (isset($_POST['pas']) ? htmlspecialchars(trim($_POST['pas'])) : false);
if (empty($password))
{echo ('<br><center><b><font color="ffffff">Вы не ввели пароль!</font></b></center>');} else {
session_start();
$res = mysql_query("SELECT `id`, `login`, `password` FROM `users` WHERE login ='" . $login. "' AND Password='" . $password . "'");
if (!mysql_num_rows($res))
{echo ('<br><center><b><font color="ffffff">Пользователь с таким логином и паролем не зарегистрирован!</font></b></center>');}
else{ function generate_code($length = 35){
$num = range(0, 9);
$alf = range('a', 'z');
$_alf = range('A', 'Z');
$symbols = array_merge($num, $alf, $_alf);
shuffle($symbols);
$code_array = array_slice($symbols, 0, (int)$length);
$code = implode("", $code_array);
return $code;
}
$sid=generate_code();
$query = mysql_query("UPDATE `users` SET `sid` = '".$sid."' WHERE `login` = '".$login."'");
$_SESSION['login']=$login;
$_SESSION['sid']=$sid;
mysql_close();
Header("Location: office.php");
}
}
}
}

?>

3 файл

<?php
include "conect.php";
include "pronlog.php";
if($pronlog=1)
{
session_start();
$query=mysql_query('SELECT `name`, `family` FROM `users` WHERE `login` = "'.$_SESSION['login'].'"');
if($query !== false)
{
while($row = mysql_fetch_object($query))
{$family=$row->family;
$name=$row->name;}
echo "Личный кабинет <table><tr><td>Здравствуйте, $family $name.</td></tr></table> <br><a href='logout.php'>Выход</a>";
}
}

else {Header("Location:login.php");}
mysql_close();

?>

4 файл

<?php
session_start();
session_destroy();
Header("Location: office.php");
?>

Когда авторизируешься, тебя перенаправляет в личный кабинет и все ОК фамилия имя отображаются корректно, а когда нажимаешь выход, то по идее должно перенаправлять на файл login.php для входа а он пишет
Цитата

Личный кабинет
Здравствуйте, .

Выход

помогите пожалуйста...



Спустя 58 секунд (25.11.2010 - 13:45) denis79513 написал(а):
и еще забыл файл pronlog.php

<?php
session_start(); //инициализирум механизм сесссий
If (!$conect) {echo('Соединение с сервером не было установлено!<br>');}
$condb=mysql_select_db($dbname,$conect);
If (!$condb) {echo('Соединение с базой данных не было установлено!<br>');}
//начинаем проверку логина и пароля
$res=mysql_query("SELECT * FROM users WHERE login='".$_SESSION['login']."'
AND sid='"
.$_SESSION['sid']."'");
$pronlog=mysql_num_rows($res);
?>

Спустя 4 секунды (25.11.2010 - 13:45) linker написал(а):
Видимо тут
<?php
session_start();
session_destroy();
Header("Location: office.php");
?>
надо написать
<?php
session_start();
session_destroy();
header("Location: login.php");
?>

Спустя 6 минут, 17 секунд (25.11.2010 - 13:51) denis79513 написал(а):
нет ты не прав, если так сделать, то после выхода он и перенаправляет на login.php но если набрать адрес вручную /office.php то он доступен и без авторизации а это недопустимо, скорее всего ошибка в файле office.php

Спустя 37 минут (25.11.2010 - 14:28) linker написал(а):
Это я только мельком глянул. Всмотрелся поточнее и понял, что тебе надо все заново переосмыслить и лучше переписать заново. Смотри, вот строчка
if (!$conect) {echo('Соединение с сервером не было установлено!<br>');} 
ну да нет коннекта к серверу и что? Ты упорно продолжаешь выполнять свой скрипт дальше, хотя ошибка относится к разряду критических и требует остановки. И так везде, одна сплошная логическая ошибка. Подумай таки.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.