Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема c session_start() 
:(
    Опции темы
redwhite90
Дата 20.10.2012, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



вот такой протейший пример использования сессий
index.php
Код

<html>
    <head>
    <title>Login</title>

    </head>
    <body>
    <form method="post" action="login.php">

    <p>Username: <input type="text" name="username" /></p>
    <p>Password: <input type="text" name="password" /></p>

    <p><input type="submit" value="Let me in" /></p>

    </form>
    </body>
    </html>


login.php
<html>

    
Код

<html>

    <head>
    <title>Login</title>

    </head>
    <body>
    
    <?php

    // Проверить корректность username и password
    if ($_POST["username"] == "php" && $_POST["password"] == "php") {
     
    // Если корректны, устанавливаем значение сессии в YES
      session_start();
      $_SESSION["Login"] = "YES";
      echo "<h1>Вы зашли некорректно</h1>";
      echo "<p><a href='document.php'>Ссылка на защищённый файл</a><p/>";
     
    }
    else {
     
    // Если некорректны, устанавливаем сессию в NO
      session_start();
      $_SESSION["Login"] = "NO";
      echo "<h1>Вы зашли НЕкорректно </h1>";
      echo "<p><a href='document.php'>Ссылка на защищённый файл</a><p/>";
     
    }

    ?>

    </body>
    </html>


при нажатии на кнопку вижу следующее:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\home\site.ru\www\login.php:9) in Z:\home\site.ru\www\login.php on line 15

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\site.ru\www\login.php:9) in Z:\home\site.ru\www\login.php on line 15


PM MAIL   Вверх
Чучмек
Дата 20.10.2012, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



session_start должна вызываться до вывода данных.

Добавлено через 5 минут и 23 секунды
Решений несколько
Код

<?php
      session_start();
?>
<html>
    <head>
    <title>Login</title>
    </head>
    <body>
    
    <?php
    // Проверить корректность username и password
    if ($_POST["username"] == "php" && $_POST["password"] == "php") {
     
    // Если корректны, устанавливаем значение сессии в YES

      $_SESSION["Login"] = "YES";
      echo "<h1>Вы зашли некорректно</h1>";
      echo "<p><a href='document.php'>Ссылка на защищённый файл</a><p/>";
     
    }
    else {
     
    // Если некорректны, устанавливаем сессию в NO
    
      $_SESSION["Login"] = "NO";
      echo "<h1>Вы зашли НЕкорректно </h1>";
      echo "<p><a href='document.php'>Ссылка на защищённый файл</a><p/>";
     
    }
    ?>
    </body>
    </html>



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
redwhite90
Дата 20.10.2012, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



а ведь тут весь смысл открывать сессию только в том случае, если юзер залогинился.

Добавлено через 59 секунд
Чучмек,  а что имеется ввиду под выводом данных?
PM MAIL   Вверх
Чучмек
Дата 20.10.2012, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



Код

<?php
  ob_start();
?>
/* Весь твой код без изменения*/  
<?php  
 ob_end_flush();
?>


Добавлено через 3 минуты и 19 секунд
Цитата(redwhite90 @  20.10.2012,  20:00 Найти цитируемый пост)
а ведь тут весь смысл открывать сессию только в том случае, если юзер залогинился.

Цитата

 if (...) {
   ...  
      session_start();
   ...
     
    }
    else {
   ...
      session_start();
   ...
    }

Я вижу это

Добавлено через 8 минут и 26 секунд
Код

<?php
if ($is_session_start=(Услвие при котором необходимо стартовать сессию))
 {
 session_start();
 }
?>
<html>
...
...
<?php
if ($is_session_start)
 {
 echo "Текст который нужно вывести при session_start";
 }else
 {
 echo "Текст который нужно вывести без session_start";
 }
?>
...
...



Добавлено через 11 минут и 4 секунды
Цитата(redwhite90 @  20.10.2012,  20:00 Найти цитируемый пост)
Чучмек,  а что имеется ввиду под выводом данных? 

Что либо
Любой текст,пробел,перевод строки вне тегов <?php ?>, echo,print итд. итп.


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
redwhite90
Дата 20.10.2012, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



Цитата(Чучмек @  20.10.2012,  20:01 Найти цитируемый пост)
<?php
  ob_start();
?>
/* Весь твой код без изменения*/  
<?php  
 ob_end_flush();
?>

это получается весь вывод скопируется в буфер и в конце это все выведется?
PM MAIL   Вверх
Чучмек
Дата 20.10.2012, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



Цитата(redwhite90 @  20.10.2012,  20:30 Найти цитируемый пост)
это получается весь вывод скопируется в буфер и в конце это все выведется? 

Да


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
ksnk
Дата 20.10.2012, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(redwhite90 @  20.10.2012,  20:00 Найти цитируемый пост)
а ведь тут весь смысл открывать сессию только в том случае, если юзер залогинился.

Важно определить, что первично, курица или яйцо.

Сессию можно стартовать, если есть $_REQUEST[session_name()]. В других случаях, если, конечно, не идет POST запрос, стартовать сессию не обязательно.

Сам факт того, что юзер залогинился, как правило, отображается в сессии. 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Чучмек
Дата 21.10.2012, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 4
Всего: 41



Вот такой вот примитив 
index.php
Код

<?php
  session_start();
  header('Content-Type: text/html; charset=UTF-8');
  $_SESSION['ref']=$_SERVER['REQUEST_URI'];
?>
<html>
<head>
<title>Главная страница</title>
</head>
<body>
<?php
if (isset($_SESSION['user_name']))
 {
 echo "Здравствуте ".$_SESSION['user_name']." <a href=\"login.php\">Выйти</a><br>\r\n";
 }else
 {
 echo "Здравствуйте гость. <a href=\"login.php\">Войдите пожалуйста под своим именем</a><br>\r\n";
 }
?>
<a href="page2.php">Вторая страница нашего сайта</a><br>
</body>
</html>

page2.php
Код

<?php
  session_start();
  header('Content-Type: text/html; charset=UTF-8');
  $_SESSION['ref']=$_SERVER['REQUEST_URI'];
?>
<html>
<head>
<title>Вторая страница</title>
</head>
<body>
<?php
if (isset($_SESSION['user_name']))
 {
 echo "Здравствуте ".$_SESSION['user_name']." <a href=\"login.php\">Выйти</a><br>\r\n";
 }else
 {
 echo "Здравствуйте гость. <a href=\"login.php\">Войдите пожалуйста под своим именем</a><br>\r\n";
 }
?>
<a href="index.php">Главная страница</a><br>
</body>
</html>

login.php
Код

<?php
session_start();
header('Content-Type: text/html; charset=UTF-8');
$ref=isset($_SESSION['ref'])?$_SESSION['ref']:'/index.php';
if (isset($_SESSION['user_name']))
  {
  session_destroy();
  header("Location: $ref");
  exit;
  }
if (isset($_POST['user_name']))
  {
  if ((strlen($_POST['user_name'])>0) && (strlen($_POST['user_name'])<12))
    {
    $_SESSION['user_name']=$_POST['user_name'];
    header("Location: $ref");
    exit;
    }else $strerror="<font color=\"#FF0000\"><b>Вы ввели некоректное имя</b></font><br>\r\n";
  }

?>
<html>
<head>
<title>Вход</title>
</head>
<body>
<?php echo isset($strerror)?$strerror:'';?>
<form action="" method="post">
<input type="text" name="user_name" value="<?php echo isset($_POST['user_name'])?$_POST['user_name']:''; ?>">
<input type="submit" value="Войти">
</form>

</body>
</html>





--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
redwhite90
Дата 21.10.2012, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 332
Регистрация: 14.7.2011

Репутация: нет
Всего: нет



спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0524 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.