Ответить
    
  
  
  
      
  
  
  
  
    
       
       
          
  
  
  
       
    
    
       
       
          
  
  
  
              
  
       
       
    
    
       
       
          
  
  
  
              
       
    
    
       
       
          
задавать в обработчике
а в закрытом:
Но даже при верном логине и пароле пишет отправление на авторизацию
  
  
  
  
  
              
  
       
       
    
    
       
       
          
  
  
  
              
  
       
       
    
    
       
       
          
  
  
  
       
    
    
       
       
          
Дамп результата.
Поидее if неверно работает? Если выносит всю таблицу
  
  
  
  
  
              
  
       
       
    
    
       
       
          
  
  
  
              
       
    
    
       
       
          
Судя по всему, ошибка в проверке авторизации в закрытом файле:
Если юзер авторизован, то $_SESSION['user'] принимает значение 1, при проверке мы делаем: Если $_SESSION['user'] не пустое, то пропустить. В ином случае echo с отправкой на авторизацию
Добавлено 2010.10.11 12-45
Если ставить так:
то даже если просто открывать страницу, прописывая в адресной строке, содержимое показывается
  
  
  
  
  
              
  
       
       
    
    
       
       
          
  
  
  
              
       
    
           
    
Работа с сессиями
Отправлено: 18 Jun 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(). Вот самый простой пример, думаю дальше Вы сами придумаете как воспользоваться этим приколом. Сессии в основном юзаються для авторизации на сайтах

Edit by author 18 Jun 2010
  
  
              Я горжусь тем, что создал . И люблю нашу команду)
  
       Отправлено: 10 Oct 2010#2
          Если есть авторизация, то как можно проверить задана ли сессия?
Добавлено 2010.10.10 22-00
Вот есть страничка, на которую по идее можно попасть только посредством авторизации.
Как проверить, авторизовался ли человек, если он тупо вбил адрес страницы в браузере
  
  Добавлено 2010.10.10 22-00
Вот есть страничка, на которую по идее можно попасть только посредством авторизации.
Как проверить, авторизовался ли человек, если он тупо вбил адрес страницы в браузере
Отправлено: 10 Oct 2010#3
          ну если он авторизовался то у него должна быть какаято переменная в сессии. в зависимости от этой переменной можно делать что-то вроде
if (empty($_SESSION['переменнвя'])) {
header('Location: /'); die();
}
  
  if (empty($_SESSION['переменнвя'])) {
header('Location: /'); die();
}
Я горжусь тем, что создал . И люблю нашу команду)
  
       Отправлено: 10 Oct 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 Oct 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 Oct 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 это почти одно и тоже, просто вардамп еще типы показывает а это почти всегда пох)))
Edit by author 11 Oct 2010
  
  
              Я горжусь тем, что создал . И люблю нашу команду)
  
       Отправлено: 11 Oct 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 Oct 2010#8
          Смотря где дампишь. в каком месте и какую переменную дампишь? приведи пример своего кода как выше только с дампом(в смысле где ты там его пишешь)
Добавлено 2010.10.11 12-31
В принципе там у тебя ресальт только в одном месте есть так что я понял де ты дампишь его. значит иф проходит. надо искать проблему дальше.
  
  Добавлено 2010.10.11 12-31
В принципе там у тебя ресальт только в одном месте есть так что я понял де ты дампишь его. значит иф проходит. надо искать проблему дальше.
Я горжусь тем, что создал . И люблю нашу команду)
  
       Отправлено: 11 Oct 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 Oct 2010#10
          в самом начале закрытого файла проверь переменную которую проверяешь в ифе(продампи)
и еще ты вроде не стартуешь сессию в закрытом файле и пытаешься проверить ее содержание.
  
  и еще ты вроде не стартуешь сессию в закрытом файле и пытаешься проверить ее содержание.
Я горжусь тем, что создал . И люблю нашу команду)
  
       Сейчас online: 4. Зарегистрированных: 0. Гостей: 4. 
       
    
