session_start () проблема - PullRequest
       3

session_start () проблема

0 голосов
/ 16 ноября 2010

сегодня у одного из моих друзей была проблема с его гостевой книгой.Мы используем небольшую гостевую книгу, ориентированную на php, которая работала нормально, за исключением одной вещи: она достигла своего предела количества сообщений.

Так что я сделал, отредактировал файл блога и изменил следующую настройку: // Сохранено максимальное количество записейв файле данных $ max_record_in_data_file = 1800;

В тот момент, когда я сделал это, что-то пошло не так.Я загрузил файл обратно на сервер и получил следующее:

Предупреждение: session_start () [function.session-start]: невозможно отправить cookie сеанса - заголовки уже отправлены (вывод начался с E:\ inetpub \ vhosts \ trilogianocturnus.com \ httpdocs \ guestbook.php: 1) в E: \ inetpub \ vhosts \ trilogianocturnus.com \ httpdocs \ guestbook.php в строке 95

Не знаюзнаете, что это такое, я очень новичок в php, но из того, что я понимаю, это означает, что что-то уже вызывается браузером до session_start

Страница расположена по адресу: http://trilogianocturnus.com/guestbook.php

Код перед заголовком выглядит следующим образом:

<? 
/*-----------------------------------------------------
COPYRIGHT NOTICE
Copyright (c) 2001 - 2008, Ketut Aryadana
All Rights Reserved

Script name : ArdGuest
Version : 1.8
Website : http://www.promosi-web.com/script/guestbook/
Email : aryasmail@yahoo.com.au
Download URL : 
   - http://www.promosi-web.com/script/guestbook/download/
   - http://www.9sites.net/download/ardguest_1.8.zip

This code is provided As Is with no warranty expressed or implied. 
I am not liable for anything that results from your use of this code.
------------------------------------------------------*/

//--Change the following variables

//Title of your guestbook
  $title = "Guestbook Nocturnus";
//Change "admin" with your own password. It's required when you delete an entry
  $admin_password = "***";
//Enter your email here
  $admin_email = "***";
//Your website URL
  $home = "http://www.trilogianocturnus.com/main.html";
//Send you an email when someone add your guestbook, YES or NO
  $notify = "YES";
//Your Operating System
//For Windows/NT user : WIN
//For Linux/Unix user : UNIX
  $os = "WIN";
//Maximum entry per page when you view your guestbook
  $max_entry_per_page = 10;
//Name of file used to store your entry, change it if necessary
  $data_file = "ardgb18.dat";
//Maximum entry stored in data file
  $max_record_in_data_file = 1800;
//Maximum entries allowed per session, to prevent multiple entries made by one visitor
  $max_entry_per_session = 10;
//Enable Image verification code, set the value to NO if your web server doesn't support GD lib
  $imgcode = "YES";
//Color & font setting
  $background = "#000";
  $table_top = "#000";
  $table_content_1a = "#090909";
  $table_content_1b = "#000000";
  $table_content_2a = "#090909";
  $table_content_2b = "#000000";
  $table_bottom = "#000";
  $table_border = "#1f1f1f";
  $title_color = "#9f0000";
  $link = "#9f0000";
  $visited_link = "#9f0000";
  $active_link = "#9f0000";
  $font_face = "verdana";
  $message_font_face = "arial";
  $message_font_size = "2";

//-- Don't change bellow this line unless you know what you're doing

$do = isset($_REQUEST['do']) ? trim($_REQUEST['do']) : "";
$id = isset($_GET['id']) ? trim($_GET['id']) : "";
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$self = $_SERVER['PHP_SELF'];

if (!file_exists($data_file)) {
    echo "<b>Error !!</b> Can't find data file : $data_file.<br>";
 exit;
} else {
 if ($max_record_in_data_file != "0") {
  $f = file($data_file);
  rsort($f);
  $j = count($f);
  if ($j > $max_record_in_data_file) {
   $rf = fopen($data_file,"w");
            if (strtoupper($os) == "UNIX") {
            if (flock($rf,LOCK_EX)) {
                  for ($i=0; $i<$max_record_in_data_file; $i++) {
                      fwrite($rf,$f[$i]);      
         }
                  flock($rf,LOCK_UN);
            }
            } else {
               for ($i=0; $i<$max_record_in_data_file; $i++) {
                  fwrite($rf,$f[$i]);      
            }
         }
   fclose($rf);
  }
 }
}
session_start();
$newline = (strtoupper($os) == "WIN") ? "\r\n" : "\n";
switch ($do) {
case "":
   $record = file($data_file);
   rsort($record);
   $jmlrec = count($record);
?>

Я, конечно, удалил пароль и адрес электронной почты для безопасности, теперь вот забавная часть.

Эта ошибка начала происходитьв тот момент, когда я изменил эту настройку там, но если я попытался вернуть его обратно к 1800 (я изменил его на 11800, чтобы проверить его), он все равно выдаст мне эту ошибку.

Любое представление о том, что это?

URL гостевой книги: promosi-web.com/script/guestbook/

Ответы [ 4 ]

4 голосов
/ 16 ноября 2010

Наиболее распространенной причиной этой ошибки является то, что что-то добавляется в файл до <?

Скорее всего, пробел или UTF знак порядка байтов .

1 голос
/ 16 ноября 2010

Поместите session_start () после <?, и все должно быть в порядке.

Примечание:

Чтобы использовать сеансы на основе файлов cookie, необходимо вызвать session_start () перед выводом чего-либо в браузер..

http://php.net/manual/en/function.session-start.php

0 голосов
/ 16 ноября 2010

Проверьте, есть ли у вас пробел или метка порядка байтов, вы также можете сделать

ob_start (); в начале страницы и ob_end_flush (); в конце, чтобы решить эту проблему.

но ИМО проверяет место или B.O.M

0 голосов
/ 16 ноября 2010

В сообщении говорится, что «вывод начался с… \ guestbook.php: 1».Поэтому в этом файле должно быть что-то, что инициировало вывод.

Перед открытием <? убедитесь, что нет пробелов или других невидимых символов (например, BOM ).тег.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...