За последние 24 часа нас посетили 81488 программистов и 3023 робота. Сейчас ищут 1505 программистов ...

Ошибка session_start() и из-за этого не работает кодировка utf-8

Тема в разделе "PHP для новичков", создана пользователем Terminator004, 23 янв 2017.

  1. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Здравствуйте, у меня пролбемы :(. Начну с того, что на всех моих страницах высвечивается ошибка -
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\localhost\www\Tests\Projektas2\index.php:1) in Z:\home\localhost\www\Tests\Projektas2\db.php on line 8. И я знаю что это. Даю вам примеры: Если во всех моих страницах поставить кодировку на UTF-8 без BOM или на ANSI, так это ошибка пропадает !! И сайт работает нормально! НО! Эти кодировки не поддерживают русский шрифт, и в итоге на странице вместо русских символов, получаются иероглифы. И значит мне остаётся сайт делать ан английском языке! Но я не хочу так ! И если я поставлю на utf-8, так ошибка появляется! Из-за чего так происходит? Я кажись всё делал правильно, но ошибка есть! И еще, на моём сайте есть регистрация и авторизация. И если я с это ошибкой авторизуюсь на сайте, так почему-то не смогу выйти из аккаунта. Если нажму кнопку " Выйти " так появляются еще ошибки! Вот что пишут - (

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\localhost\www\Tests\Projektas2\logout.php:1) in Z:\home\localhost\www\Tests\Projektas2\db.php on line 8

    Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\Tests\Projektas2\logout.php:1) in Z:\home\localhost\www\Tests\Projektas2\logout.php on line 4

    Так вот. Но с другими кодировками, таких ошибок нет! И выход из аккаунта проходит успешно, но как я говорил, не поддерживается русский шрифт. Так если можете, помогите мне, пожалуйста, я везде искал, но мне ничего не помогло. Могу скинуть своего сайта коды. Может, там что-то и надо поправить.
    --- Добавлено ---
    index.php (эта главная моя страница, в неё ходит скрипт авторизации)
    PHP:
    1. <?php
    2. require "db.php";
    3. $data = $_POST;
    4. if( isset($data['do_login']))
    5. {
    6.     $errors = array();
    7.     $user = R::findOne('users', 'login = ?', array($data['login']));
    8.     if( $user )
    9.     {
    10.         // логин существует
    11.         if ( md5($data['password']) == $user->password) {
    12.             // всё хорошо, логиним пользователя
    13.             $_SESSION['logged_user'] = $user;
    14.  
    15.         } else
    16.         {
    17.             $errors[] = 'Неверный пароль!';
    18.         }
    19.     } else
    20.     {
    21.         $errors[] = 'Пользователь с таким логином не найден!';
    22.     }
    23.  
    24.     if( ! empty($errors))
    25.     {
    26.         echo '<div style="color: red;">'.array_shift($errors).'</div><hr>';
    27.     }
    28. }
    29. ?>
    30. <?php if( isset($_SESSION['logged_user'])) : ?>
    31.     Подключён!<br>
    32.     Здравствуйте, <?php echo $_SESSION['logged_user']->login; ?>!
    33.     <hr>
    34.     <a href="logout.php">Отключиться</a>
    35.     <?php else : ?>
    36. <a href="index.php"></a><br>
    37. <?php endif; ?>
    38. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//En"
    39.     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    40. <html>
    41. <head>
    42.     <meta http-equiv="content-type" content="text/html; charset=utf-8/>
    43.     <meta name="author" content="Sang Nguyen" />
    44.     <meta name="description" content="[insert description here]" />
    45.     <meta name="robots" content="all" />
    46.     <title>Мой мир</title>
    47.     <script type="text/javascript"></script>
    48.      <link rel="stylesheet" type="text/css" href="pav/style.css">
    49.  
    50.  
    51. </head>
    52. <body  onload="lous.l.focus()">
    53. <div id="container">
    54.     <div id="header">
    55.         <div id="pageHeader">
    56.    
    57.    
    58.    
    59.         <img src="pav/logo.png" id="logo">
    60.  
    61.             <h1 id="nams" style="color:#fff">Мировые события</h1>
    62.        
    63.             <h2>&nbsp;</h2>
    64.        
    65.             <div id="tabs11">
    66.                 <ul>
    67.                     <li><a href="#" title="Pagrindinis" class="currentTab"><span>Главная</span></a></li>
    68.                     <li><a href="#" title="Galerija"><span>Галерия</span></a></li>
    69.                     <li><a href="#" title="Kontaktai"><span>Контакты</span></a></li>
    70.                     <li><a href="#" title="Onlie Chat"><span>Online Chat</span></a></li>
    71.                     <li><a href="mailto:193robi.new@gmail.com"><span>Напишите нам</span></li></a>
    72.             <div id="Online">   Активные пользователи: ~COLUS~<br><div id="probel"></div>
    73. Зарегистрированные пользователи: ~REGUS~</div>
    74.                 </ul>
    75.             </div>
    76.         </div>
    77.     </div> <!-- ends intro div -->
    78.     <div id="content">
    79.         <div class="contentbox">
    80.             <h3>Семья?</h3>
    81.             <p>текст 1 </p>
    82.         </div>
    83.         <div class="contentbox">
    84.             <h3>Жизнь</h3>
    85.             <p>текст 2 </p>
    86. </p>
    87.         </div>
    88.         <div class="contentbox">
    89.             <h3>Lorem ipsum</h3>
    90.             <p>текст 3 </p>
    91.         </div>
    92.         <div class="contentbox">
    93.             <h3>Lorem ipsum</h3>
    94.             <p>текс 4 </p>
    95.         </div>
    96.         <div class="contentbox">
    97.             <h3>текст</hr>
    98.             <p>Текст 5</p>
    99.         </div>
    100.  
    101.         <div id="footer">
    102.          
    103.      Programmed by <a href="#">&nbsp;****&nbsp; ****</a> &nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp; Designed by <a href="#">&nbsp;*****&nbsp; *****</a>
    104.         </div>
    105.     </div> <!-- ends supportingtext div -->
    106.  
    107.     <div id="linkList">
    108.     <!--    <div id="linkList2">
    109.             <div class="thelinks"> -->
    110.                 <form action="" id="login" method="post">          
    111.     <fieldset id="inputs">
    112.  
    113.     <div id="In">Log In</div><img id="swirl" src="pav/swirl.gif" alt=""></img><img id="swirl2" src="pav/swirl2.gif" alt=""></img>
    114.     <div id="div2"></div>
    115.         <strong>Логин</strong>:
    116.     <input type="text" name="login" value="<?php echo @$data['login']; ?>">
    117.    
    118.    
    119.    
    120.             <div id="tarpas">
    121.         <strong>Пароль</strong>:
    122.     <input type="password" name="password" value="<?php echo @$data['password']; ?>">
    123.     <div id="tarpas2">
    124.         <button type="submit" name="do_login" class="but">Войти</button>
    125.         <input name="save" type="checkbox" value='1'> Запомнить меня
    126.     </fieldset>
    127.     <fieldset id="actions">
    128.    
    129.         <a href="server/reminder.php">Забыли пароль?</a><br><br><a href="signup.php">Регистрация</a>
    130.     </fieldset>
    131. </form>
    132.             </div>
    133.        
    134.     </div>
    135. </div>
    136. </body></html>
    db.php ( тут подключение к базе данных и дурная команда Session_Start)
    PHP:
    1. <?php
    2. require "libs/rb.php";
    3. R::setup( 'mysql:host=localhost;dbname=pr2',
    4.         'root', '' );
    5.    
    6.  
    7.  
    8.         session_start();
    9.  
    10.         ?>
    logout.php ( тут происходит выход пользователя из его аккаунта )
    PHP:
    1. <?php
    2.     require "db.php";
    3.     unset($_SESSION['logged_user']);
    4.     header('Location: index.php');
    5. ?>
    signup.php ( тут регистрация (с регистрацией всё нормально, ошибок нет) )
    PHP:
    1. <?php
    2. require "db.php";
    3.  
    4. $data = $_POST;
    5. if( isset($data['do_signup']))
    6. {
    7.     // здесь регистрируем
    8.  
    9.     $errors = array();
    10.     if( trim($data['login']) == '' )
    11.     {
    12.         $errors[] = 'Введите логин!';
    13.     }
    14.  
    15.     if( trim($data['email']) == '' )
    16.     {
    17.         $errors[] = 'Введите почту!';
    18.     }
    19.  
    20.     if( ($data['password']) == '' )
    21.     {
    22.         $errors[] = 'Введите пароль!';
    23.     }
    24.  
    25.     if( $data['password_2'] != $data['password'] )
    26.     {
    27.         $errors[] = 'Повторный пароль, введён не верно!';
    28.     }
    29.  
    30.     if(R::count('users', "Login = ?", array($data['login'])) > 0 )
    31.     {
    32.         $errors[] = 'Пользователь с таким логином уже зарегестрированый';
    33.     }
    34.  
    35.     if(R::count('users', "email = ?", array($data['email'])) > 0 )
    36.     {
    37.         $errors[] = 'Пользователь с такой почтой уже зарегестрированый';
    38.     }
    39.     if( empty($errors) )
    40.     {
    41.         // всё хорошо, регистрируем
    42.         $user = R::dispense('users');
    43.         $user->login = $data['login'];
    44.         $user->email = $data['email'];
    45.         $user->password = md5($data['password']);
    46.         R::store($user);
    47.         echo '<div style="color: green;"> Вы успешно зарегестрировались!</div>';
    48.         echo '<div style="color: green;">Можете перейти на <a href="index.php">Главную</a> Страницу';
    49.    
    50.     }else
    51.     {
    52.         echo '<div style="color: red;">'.array_shift($errors).'</div><hr>';
    53.     }
    54.  
    55. }
    56.  
    57. ?>
    58.  
    59. <form action="signup.php" method="POST">
    60.  
    61. <p>
    62.     <p><strong>Логин</strong>:</p>
    63.     <input type="text" name="login" value="<?php echo @$data['login']; ?>">
    64. </p>
    65.  
    66. <p>
    67.     <p><strong>Почта</strong>:</p>
    68.     <input type="email" name="email" value="<?php echo @$data['email']; ?>">
    69. </p>
    70.  
    71. <p>
    72.     <p><strong>Пароль</strong>:</p>
    73.     <input type="password" name="password" value="<?php echo @$data['password']; ?>">
    74. </p>
    75.  
    76. <p>
    77.     <p><strong>Повторите пароль</strong>:</p>
    78.     <input type="password" name="password_2" value="<?php echo @$data['password_2']; ?>">
    79. </p>
    80.  
    81. <p>
    82.     <button type="submit" name="do_signup">Зарегистрироваться</button>
    83. </p>
    84.  
    85. </form>
     
    #1 Terminator004, 23 янв 2017
    Последнее редактирование: 23 янв 2017
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    в начале каждой страницы, на которой ты используешь $_SESSION должна быть строка session_start();
    В твоем коде этого не увидел.
    А еще я бы закрыл кавычки вот в этой строке:
    И как связанны сессии с кодировкой?
    на сколько я знаю - ни как.

    Для корректного отображения русских символов следи за тем, чтобы кодировка файла, страницы, соединения с сервером, соединения сервера с базой данных и полей в базе данных была одна и та же.
    --- Добавлено ---
    сорян. увидел)
     
  3. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Ну я добавил в index.php и в других php страницах команду session_start(); Но как вижу это не поможет, потому что теперь ругается на 2 строку, а там у меня сессия эта.
    Может тебе скинуть весь мой проект, ты посмотри что там не так, может так легче будет.
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\localhost\www\Tests\Projektas2\index.php:1) in Z:\home\localhost\www\Tests\Projektas2\index.php on line 2
     
  4. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Можно и так сделать...

    А что по деньгам?
     
  5. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Ну, во первый я не русский и не имею таких вещей как qiwi, web money. Во-вторых, я несовершеннолетний и не имею всяких кредитных карточек и т. п. Третье, я никогда ни кому не слал денег и даже не знаю как это делать. Четвертое, я не смогу передать тебе деньги, так как в моей стране нет киви кошелька, может быть и web money, а в моём городе даже таких терминалов нет. В моей стране только есть терминалы на наши деньги. Пятое. А что, за то чтоб исправить какую-то маленькую ошибку с сессией, нужно еще и деньги плотить?? Мне кажется, что это чересчур уже, потому что есть бесплатные видео уроки по созданию регистрации, авторизации, где скриптов очень много! А тут, просто ошибка!
     
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    @Terminator004 Я рассчитывал именно на такую реакцию. :)
    Мне не нужен этот гемор. Подсказать - пожалуйста. Ставить твой проект с базой данных себе и копаться в этом, извините, мне лень.
     
  7. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    TeslaFeo нравится это.
  8. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Зачем копаться, там только 4 файла с кодами. Базу данных ничего сложного нет сделать, только создать базу данных, назвать как у меня написано и всё, таблицы автоматом сделает. Ну если тебе так трудно, так спасибо, можешь не разбираться.
     
  9. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Ты вот научись всему, приходи на форум и ставь себе на локалку каждый проект каждого чувака который сюда приходит. А мне лень...

    P. S. Кажется фокус сместился с задачи.
    --- Добавлено ---
    Так и быть давай свой проект... че это со мной сегодня...
     
    SamyRed и denis01 нравится это.
  10. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Настоящий программист:)
     
  11. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Спасибо, что решился всё-таки посмотреть :). Вот, скачивай тут http://rgho.st/6jXbx4tvP
    Только хочу напомнить, когда создашь базу данных (я назвал " pr2 ") так таблицу не создавай, сама создаться.
     
  12. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Вот.

    Закоментировал второй session_start();
    убрал пробел перед <?php
    Преобразовал в кодировку UTF-8 без BOM

    3 мин делов...
     
    mahmuzar и Terminator004 нравится это.
  13. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну... Значит лайк заслужил :)
     
  14. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Ух, спасибо тебе большое ! Хотя бы с сессиями разобрались, нет больше ошибок :) Но с кодировкой у меня что-то не так, открыл я твой переделанный проект и иероглифы всё ровно остались. Что теперь делать ? Вот картинка, можешь посмотреть -http://i1.imageban.ru/out/2017/01/23/b95bc2eee641ccabe0cfa032958ecdbf.png
     
    #14 Terminator004, 23 янв 2017
    Последнее редактирование: 23 янв 2017
  15. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    В базе какая кодировка? В подключении?
     
  16. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    .
    Чтоб тебе было понятней, я скину картинку http://i4.imageban.ru/out/2017/01/24/ab431a08c57aa18dfcce50326efa18e9.png
    Вверху, там база данных моего проекта. Внизу, там кажется общие настройки кодировки MySQL.
     
  17. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
  18. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    А как правильно код составить, под мой скрипт. У меня немного по-другому написан код, мне кажется ошибки какие-то выдаёт.
     
  19. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Тебе кажется что код ошибки выдаёт? Что ж, парень, это, походу, симптомы шизофрении... Может стоит провериться? К врачу сходить там :D
     
  20. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Я тебе говорю, что когда вставляю код из той статьи, так мне ошибку на сайте выдаёт. Так я спрашиваю, как написать ту кодировку подключения?
     
  21. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    @Terminator004 у меня всё ок было
    кодировку соединения по умолчанию поставь utf-8
    или сервер настрой или htaccess
    сделай сам хоть что нибудь. самому приятно будет.
    я твою проблему за 30 сек нагуглил.
    Ты мог сам это сделать.

    Если пользоваться гуглом не будешь то и программистом не станешь.
    И вообще гугл в любой сфере оч полезная штука :cool:
     
    Terminator004 и SamyRed нравится это.
  22. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Спасибо большое, погуглил и нашел как исправить кодировку в utf-8 без bom. Теперь и кодировка есть, и ошибок нет :)
     
  23. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А еще можно просто в начале кода написать ob_start() и все проблемы канут в лету. Почитай про буферизацию вывода.
     
  24. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    @Terminator004 Извини, не хотел тебя обидеть. Я про это:
    Но ведь надо предложения правильно строить)
     
  25. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Психиатры говорят, что шизу можно найти в каждом, если покопаться. А если её нет, значит этого человека надо лечить в психушке :)

    Лично от знакомого психиатра такое слышал, а он это слышал от своих учителей :)