Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Грешка при стартиране на сесия и header('Location: ... ')

Featured Replies

Проблема е следния:

В PHP файла обработващ една форма първо се стартира сесията с SESSION_START() на първия ред, а накрая има пренасочване към друга страница с HEADER('Location: main.php')

 

Съобщението за грешка е следното:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at C:docs2login.php:1) in C:docs2login.php on line 1Warning: Cannot modify header information - headers already sent by (output started at C:docs2login.php:1) in C:docs2login.php on line 26

PHP файла е следния:

<?php session_start(); ?><?php$user = substr(trim($_POST["user"]),0,15);$pass = substr(trim($_POST["pass"]),0,15);if (empty($user) or empty($pass)) exit('Не сте се регистрирали!');else{   $db = mysql_connect('localhost') or exit('Грешка при свързване с базаданните!');   $sel = mysql_select_db('tu-sofia',$db) or exit('Липсва таблица!');   $passSHA1 = sha1($pass) . 'f2';   $sql = sprintf("SELECT user,pass FROM students WHERE user='%s' AND pass='%s' LIMIT 1", @mysql_real_escape_string($user), @mysql_real_escape_string($passSHA1));   $res = mysql_query($sql,$db) or exit();   if (mysql_num_rows($res) < 1) exit('Грешен потребител или парола!');   mysql_free_result($res);   mysql_close($db);   $_SESSION['user'] = $user;   $_SESSION['pass'] = $passSHA1;  header('Location: /main.php');}?>

Пробвай дали сега ще тръгне:

<?php session_start();$user = substr(trim($_POST["user"]),0,15);$pass = substr(trim($_POST["pass"]),0,15);if (empty($user) or empty($pass)) exit('Не сте се регистрирали!');else{   $db = mysql_connect('localhost') or exit('Грешка при свързване с базаданните!');   $sel = mysql_select_db('tu-sofia',$db) or exit('Липсва таблица!');   $passSHA1 = sha1($pass) . 'f2';   $sql = sprintf("SELECT user,pass FROM students WHERE user='%s' AND pass='%s' LIMIT 1", @mysql_real_escape_string($user), @mysql_real_escape_string($passSHA1));   $res = mysql_query($sql,$db) or exit();   if (mysql_num_rows($res) < 1) exit('Грешен потребител или парола!');   mysql_free_result($res);   mysql_close($db);   $_SESSION['user'] = $user;   $_SESSION['pass'] = $passSHA1;  header('Location: /main.php');}?>

Редактирано от gothicrock (преглед на промените)

Няма разлика. Все още излизат двете грешки.

 

Значи имаш нещо преди този скрипт, от което гърмят нещата, или някаква настройка на php.ini прави проблема, защото при мен върви.

PS: С коя версия на PHP си?

Кода ви да не е в html тяло преди PHP тага?

Явно е, че нещо праща хедъри преди PHP да отвори сесия, въпроса е какво.

 

Обикновено отделянето на session_start инициализатора в отделен таг (макар, че не е толкова хубава практика) решава безусловно проблема, тъй като се извършва една операция, сесията става активна за даденият скрипт, прекратява се изпълнението на PHP, и по-надолу съответно пак се отваря.

При вас обаче няма ефект, за това най-вероятно проблема е някъде другаде.

Редактирано от programings (преглед на промените)

Няма разлика. Все още излизат двете грешки.

Имаш включен BOM или пробел преди отварящия таг на php. Те се смятат за html - съдържание и затова пищи.

 

Това не е издържано.

if (empty($user) or empty($pass)) exit('Не сте се регистрирали!');

научете разликата между II и or.

 

Трето, ред 26 също ще гърми. Препращате в root на системата, а не в рамките на сайта.

 

Location: /main.php => Location: ./main.php или Location: main.php

  • Автор

Имаш включен BOM или пробел преди отварящия таг на php. Те се смятат за html - съдържание и затова пищи.

 

Това не е издържано.

if (empty($user) or empty($pass)) exit('Не сте се регистрирали!');

научете разликата между II и or.

 

Трето, ред 26 също ще гърми. Препращате в root на системата, а не в рамките на сайта.

 

Location: /main.php => Location: ./main.php или Location: main.php

 

Няма нищо преди PHP сктипта и той почва от първи ред, първа колона.

Версията на PHP е 5.4.17.

 

Какво е BOM?

Реших проблема, като записах PHP файла в ASCII формат. Беше в UTF-8.

Интересно ми е дали има начин да си остане в UTF-8?

Няма нищо преди PHP сктипта и той почва от първи ред, първа колона.

Версията на PHP е 5.4.17.

 

Какво е BOM?

Реших проблема, като записах PHP файла в ASCII формат. Беше в UTF-8.

Интересно ми е дали има начин да си остане в UTF-8?

 

Нищо не си решил. И точно тези галимации са ти заподзряния проблем. Изключи си BOM, като записваш в UTF-8.

 

Публикувано изображение

  • Автор

Нищо не си решил. И точно тези галимации са ти заподзряния проблем. Изключи си BOM, като записваш в UTF-8.

 

Публикувано изображение

 

Горната картинка от кой редактор е?

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.