Ответить
задавать в обработчике
а в закрытом:
Но даже при верном логине и пароле пишет отправление на авторизацию
Дамп результата.
Поидее if неверно работает? Если выносит всю таблицу
Судя по всему, ошибка в проверке авторизации в закрытом файле:
Если юзер авторизован, то $_SESSION['user'] принимает значение 1, при проверке мы делаем: Если $_SESSION['user'] не пустое, то пропустить. В ином случае echo с отправкой на авторизацию
Добавлено 2010.10.11 12-45
Если ставить так:
то даже если просто открывать страницу, прописывая в адресной строке, содержимое показывается
Работа с сессиями
Отправлено: 18 Июн 2010#1
Вы когда нибудь сталкивались с ситуацией, когда Вам надо передать значение из одного скрипта в другой? Вот именно для этого и служит сессии. Многие начинающие программисты при знакомстве с сессиями начинают срать кирпичами, но не огорчайтесь - тут нет ничего сложного, держитесь меня и я Вас научу.
Как обычно, сразу код, а в нем комменты...
Файл page1.php
Файл page2.php
Как видите, мы объявили переменую на одной странице, а воспользовались на другой.
На самом деле вы можете передавать переменные таким образом на любое кол-во страниц, главное что бы перед использованием сессии вы всегда ее стартовали при помощи функции session_start(). Вот самый простой пример, думаю дальше Вы сами придумаете как воспользоваться этим приколом. Сессии в основном юзаються для авторизации на сайтах
Как обычно, сразу код, а в нем комменты...
Файл page1.php
1
2
3
4
5
6
7
8
9
10
<?php <?php
//стартуем сессию, это необходимо дл того что бы пользоваться сессиями
session_start();
//теперь нам доступен массив сессии и мы можем заносить в нее данные
//например тут я присвоил ключу "id" значение 777
$_SESSION['id'] = 777;
?>
echo '
<!-- это ссылка на ворую страницу -->
<a href="page2.php">Page 2</a>';?>
Файл page2.php
1
2
3
4
<?php //стартуем сессию, это необходимо дл того что бы пользоваться сессиями
session_start();
//выводим переменную, которую обьявили на другой странице.
echo $_SESSION['id'];?>
Как видите, мы объявили переменую на одной странице, а воспользовались на другой.
На самом деле вы можете передавать переменные таким образом на любое кол-во страниц, главное что бы перед использованием сессии вы всегда ее стартовали при помощи функции session_start(). Вот самый простой пример, думаю дальше Вы сами придумаете как воспользоваться этим приколом. Сессии в основном юзаються для авторизации на сайтах

Отредактировано автором 18 Июн 2010
Я горжусь тем, что создал . И люблю нашу команду)
Отправлено: 10 Окт 2010#2
Если есть авторизация, то как можно проверить задана ли сессия?
Добавлено 2010.10.10 22-00
Вот есть страничка, на которую по идее можно попасть только посредством авторизации.
Как проверить, авторизовался ли человек, если он тупо вбил адрес страницы в браузере
Добавлено 2010.10.10 22-00
Вот есть страничка, на которую по идее можно попасть только посредством авторизации.
Как проверить, авторизовался ли человек, если он тупо вбил адрес страницы в браузере
Отправлено: 10 Окт 2010#3
ну если он авторизовался то у него должна быть какаято переменная в сессии. в зависимости от этой переменной можно делать что-то вроде
if (empty($_SESSION['переменнвя'])) {
header('Location: /'); die();
}
if (empty($_SESSION['переменнвя'])) {
header('Location: /'); die();
}
Я горжусь тем, что создал . И люблю нашу команду)
Отправлено: 10 Окт 2010#4
1
2
<?php $_SESSION['user'] = 1;?>
задавать в обработчике
а в закрытом:
1
2
3
4
5
6
7
<?php if (!empty($_SESSION['user'])) // проверяем сессию (вот думаю, стоит ли приписывать isset?)
{ } // просто показываем содержимое страницы, так как юзер получил правильный ключ
else
{
echo "Пройдите авторизацию: <a href=\"index.php\"> Авторизация </a>"; // Отправляем на авторизацию
exit();
}?>
Но даже при верном логине и пароле пишет отправление на авторизацию
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php <?php
error_reporting(E_ALL);
include ('mysql_conf.php');
//var_dump($users_tb);
$q = mysql_query("SELECT * FROM `". $users_tb ."` WHERE `password`='".$_POST['password'] ."' AND `login`='".$_POST['login'] ."' LIMIT 1 ");
if (mysql_num_rows($q) > 0) {
$result = mysql_fetch_array($q);
$_SESSION['user'] = 1;
header("Location: ../main.php");
die();
}
else {
unset($_SESSION['user']);
echo "Такие пара логина и пароля найдены не были <br/> <a href=\"../index.php\"> На авторизацию </a>";
// отправляем обратно на авторизацию
die();
}?>
Отправлено: 11 Окт 2010#5
проверь проходит ли этот блок if
например вместо хидеров поставь там какоето echo и посмотри доходит ли туда выполнение. Так как по какимто причинам может не доходить. например запрос не выполняется или таких логина и пароля в базе всеже нет(ты сказал что есть так что отпадает), мало ли, причины могут быть разными.
Вообще важно понять что все пишут код с багами. нет программиста без багов. Программист пишущий без багов это программист не пишущий вообще. Большая часть потраченого времени любого программиста это не время на написание а время на отладку. По-этому очень важно научиться ее делать.
если что-то не работает, проверяй логические узлы. Проверяй куда доходит выполнение а куда нет и так далее, пока не найдешь причину.
еще очень важно чтобы в самом начале выполнения скриптов было прописано
вар дамп все выводит в одну строку и это не удобно разбирать глазами, я например делаю так
в таком случае масивы просматривать очень удобно. Можешь написать такой скрипт и посмотреть
1
2
<?php if (mysql_num_rows($q) > 0) {?>
например вместо хидеров поставь там какоето echo и посмотри доходит ли туда выполнение. Так как по какимто причинам может не доходить. например запрос не выполняется или таких логина и пароля в базе всеже нет(ты сказал что есть так что отпадает), мало ли, причины могут быть разными.
Вообще важно понять что все пишут код с багами. нет программиста без багов. Программист пишущий без багов это программист не пишущий вообще. Большая часть потраченого времени любого программиста это не время на написание а время на отладку. По-этому очень важно научиться ее делать.
если что-то не работает, проверяй логические узлы. Проверяй куда доходит выполнение а куда нет и так далее, пока не найдешь причину.
1
2
<?php var_dump(переменная);?>
1
2
<?php error_reporting(E_ALL);?>
вар дамп все выводит в одну строку и это не удобно разбирать глазами, я например делаю так
1
2
<?php echo '<pre>'; var_dump(переменная); echo '</pre>';?>
1
2
<?php $x = array('key1' => 1, 'key2' => 2, 'key3' => 3);
echo '<pre>'; var_dump($x); echo '</pre>';?>
Отправлено: 11 Окт 2010#6
rest, А лучше это вообще вынести в отдельную функцию
и потом просто пользоваться ей. Допустим хочешь чтото продампить и пишешь
ЗЫ: print_r и var_dump это почти одно и тоже, просто вардамп еще типы показывает а это почти всегда пох)))
1
2
3
4
5
<?php function pr($data) {
echo '<pre>';
print_r($data);
echo '</pre>';
}?>
и потом просто пользоваться ей. Допустим хочешь чтото продампить и пишешь
1
2
<?php pr(переменная);?>
ЗЫ: print_r и var_dump это почти одно и тоже, просто вардамп еще типы показывает а это почти всегда пох)))
Отредактировано автором 11 Окт 2010
Я горжусь тем, что создал . И люблю нашу команду)
Отправлено: 11 Окт 2010#7
Code:
Array
(
[0] => 1
[id] => 1
[1] => admin
[login] => admin
[2] => rte56t7y56
[password] => rte56t7y56
[3] => 375617099
[icq] => 375617099
[4] => antonk96
[skype] => antonk96
[5] => SKAD!
[about] => SKAD!
[6] => dwarts@yandex.ru
[email] => dwarts@yandex.ru
[7] => Skad
[name] => Skad
[8] => 3
[group] => 3
)
(
[0] => 1
[id] => 1
[1] => admin
[login] => admin
[2] => rte56t7y56
[password] => rte56t7y56
[3] => 375617099
[icq] => 375617099
[4] => antonk96
[skype] => antonk96
[5] => SKAD!
[about] => SKAD!
[6] => dwarts@yandex.ru
[email] => dwarts@yandex.ru
[7] => Skad
[name] => Skad
[8] => 3
[group] => 3
)
Дамп результата.
Поидее if неверно работает? Если выносит всю таблицу
Отправлено: 11 Окт 2010#8
Смотря где дампишь. в каком месте и какую переменную дампишь? приведи пример своего кода как выше только с дампом(в смысле где ты там его пишешь)
Добавлено 2010.10.11 12-31
В принципе там у тебя ресальт только в одном месте есть так что я понял де ты дампишь его. значит иф проходит. надо искать проблему дальше.
Добавлено 2010.10.11 12-31
В принципе там у тебя ресальт только в одном месте есть так что я понял де ты дампишь его. значит иф проходит. надо искать проблему дальше.
Я горжусь тем, что создал . И люблю нашу команду)
Отправлено: 11 Окт 2010#9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php <?php
function pr($data) {
echo '<pre>';
print_r($data);
echo '</pre>';
}
error_reporting(E_ALL);
include ('mysql_conf.php');
//var_dump($users_tb);
$q = mysql_query("SELECT * FROM `". $users_tb ."` WHERE `password`='".$_POST['password'] ."' AND `login`='".$_POST['login'] ."' LIMIT 1 ");
if (mysql_num_rows($q) > 0) {
$result = mysql_fetch_array($q);
pr($result);
$_SESSION['user'] = 1;
// header("Location: ../main.php");
echo "проходит";
die();
}
else {
unset($_SESSION['user']);
echo "Такие пара логина и пароля найдены не были <br/> <a href=\"../index.php\"> На авторизацию </a>";
// отправляем обратно на авторизацию
die();
}?>
Судя по всему, ошибка в проверке авторизации в закрытом файле:
1
2
3
4
5
6
7
8
9
<?php if (!empty($_SESSION['user'])) // проверяем сессию
{ } // просто показываем содержимое страницы, так как юзер получил правильный ключ
else
{
echo "Пройдите авторизацию: <a href=\"index.php\"> Авторизация </a>"; // Отправляем на авторизацию
exit();
}
?>?>
Если юзер авторизован, то $_SESSION['user'] принимает значение 1, при проверке мы делаем: Если $_SESSION['user'] не пустое, то пропустить. В ином случае echo с отправкой на авторизацию
Добавлено 2010.10.11 12-45
Если ставить так:
1
2
3
4
5
6
7
<?php if ($_SESSION['user']=1) // проверяем сессию (вот думаю, стоит ли приписывать isset?)
{ } // просто показываем содержимое страницы, так как юзер получил правильный ключ
else
{
echo "Пройдите авторизацию: <a href=\"index.php\"> Авторизация </a>"; // Отправляем на авторизацию
exit();
}?>
то даже если просто открывать страницу, прописывая в адресной строке, содержимое показывается
Отправлено: 11 Окт 2010#10
в самом начале закрытого файла проверь переменную которую проверяешь в ифе(продампи)
и еще ты вроде не стартуешь сессию в закрытом файле и пытаешься проверить ее содержание.
и еще ты вроде не стартуешь сессию в закрытом файле и пытаешься проверить ее содержание.
Я горжусь тем, что создал . И люблю нашу команду)
Зарегистрируйтесь или авторизуйтесь что бы писать
Сейчас online: 9. Зарегистрированных: 0. Гостей: 9.

