За последние 24 часа нас посетили 17662 программиста и 1649 роботов. Сейчас ищет 931 программист ...

Ошибка с Куки

Тема в разделе "Прочие вопросы по PHP", создана пользователем stimfal, 22 окт 2014.

  1. stimfal

    stimfal Активный пользователь

    С нами с:
    22 окт 2014
    Сообщения:
    25
    Симпатии:
    0
    <?
    define('PROTECTOR', 1);

    session_start();
    if(!empty($_POST['log'])){
    $log = htmlspecialchars(stripslashes(addslashes($_POST['log'])));
    $pass = htmlspecialchars(stripslashes(addslashes($_POST['pas'])));}
    if(!empty($_GET['login'])){
    $log = htmlspecialchars(stripslashes(addslashes($_GET['login'])));
    $pass = htmlspecialchars(stripslashes(addslashes($_GET['pas'])));}
    /////////////////////////////////////////////////////
    require_once ('files/db.php');//подключаем бд
    /////////////////////
    $pas=md5($pass);
    $req = mysql_query("SELECT * FROM `users` WHERE `usr` = '$log' and `pass`='$pas' LIMIT 1");
    ////////////////////////////
    $udata = mysql_fetch_array($req);
    $avto=mysql_num_rows($req);
    $set = mysql_query("SELECT * FROM `set` WHERE `usr` = '$log'LIMIT 1");
    $set=mysql_num_rows($set);
    ////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////

    if ($avto==1 and $log==$udata[usr]){
    if ($_POST['mem'] == 1) {
    // Установка данных COOKIE
    $clog = base64_encode($log);
    $cpas = $pas;
    setcookie("log", $clog, time() + 3600 * 24 * 365);
    setcookie("pas", $cpas, time() + 3600 * 24 * 365);

    }else{
    $clog = base64_encode($log);
    $cpas = $pas;
    setcookie("log", $clog, time() + 3600 * 24 );
    setcookie("pas", $cpas, time() + 3600 * 24 );
    }
    $_SESSION['log'] = $log;
    $_SESSION['pas'] = $pas;
    $_SESSION['pass'] = $pass;
    if(isset($_SESSION['log'])){
    header ("Location: index.php?cookie");
    }

    }else {
    header ("Location: index.php?error");
    exit; }
    ?>
    это код,ошибки:
    setcookie("log", $clog, time() + 3600 * 24 * 365);
    setcookie("pas", $cpas, time() + 3600 * 24 * 365);
    и здесь
    header ("Location: index.php?cookie");
    использую Open Server c php 5.3 Apache 2.2
    Я так понял что что-то не так с куки,
    потому что на веб хостинге от hostinger.ru все работает без ошибок
    ПОМОГИТЕ новичок
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Научись думать до того как писать код. Научись знать что делает функция, а не использовать на авось. Читай доки.

    Ошибка какая?
     
  3. stimfal

    stimfal Активный пользователь

    С нами с:
    22 окт 2014
    Сообщения:
    25
    Симпатии:
    0
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    все черным по оранжевому написано. заголовки отправились в дб-1 а вы пытаетесь их изменить в энтер-36. одна из популярных ошибок новичков. сами нагуглите информацию?
     
  5. stimfal

    stimfal Активный пользователь

    С нами с:
    22 окт 2014
    Сообщения:
    25
    Симпатии:
    0
    Где что изменить в db.php или enter.php?Просто это происходит при нажатии вход,ну когда входишь в игру

    Добавлено спустя 2 минуты 26 секунд:
    Файл db.php
    Код:
    <?php
    defined('PROTECTOR') or die('Error: restricted access');

    session_start();
    $db_host = "localhost";
    $db_user = "root";
    $db_table = "game";
    $db_pass = "**********";
    $connect = @ mysql_pconnect($db_host, $db_user, $db_pass) or die('cannot connect to server');
    @ mysql_select_db($db_table) or die('cannot connect to db');
    @ mysql_query("SET NAMES 'utf8'", $connect);

    ##################### SQL ################
    @include('files/sql.php');
    $stop_injection = new InitVars();
    $stop_injection->checkVars();
    ##################### SQL ################

    ?>
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    то есть вы даже не удосужились погуглить одну из самых популярных ошибок новичков? понятно. рассказываю. у вас наверное мне так кажется судя по всему файлики в мультибайтной кодировочке ю-ти-эф-восемь. семейство кодировок ю-ти-эф очень гибкое и для нестандартных поведений оповещает текстовый процессор о порядке следования байтов. вот для этого оповещения используется так называемый байт-ордер-марк - это такие 2-4 байта которые идут в самом начале файла. когда вы открываете файл своим текстовым редактором он пользуясь случаем и знанием проглатывает эти байты и все остальное содержимое выдает вам в неком текстовом представлении. пхп-машине про этот бом тоже известно, в связи с чем поток символов у клиента получается корректным. но для того чтоб уведомить клиента о порядке байт нужно ему этот бом передать. что и делается у вас. в файле дб первые байты на самом деле бом, их пхп машина отправляет клиенту в потоке. а когда начинается поток данных заканчивается поток заголовков. именно на это и наталкивается файл энтер в линии 36 - он пытается доотправить заголовки, но уже поздно.

    очевидным решением вашей проблемы является сохранение всех исходных кодов в кодировки без метки порядка байтов. умеет ли это делать ваш текстовый редактор или нет я к сожалению не могу за вас сказать. я только знаю что вам лениво было погуглить.

    есть еще умельцы которые используют буфер вывода для предотвращения преждевременного спуска. но это очень ленивое решение. впрочем тем кто ленится гуглить оно может подойти. проблема только в том что бом может отправиться до того как стартует буфер вывода... но это уже совсем другая история...
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  8. stimfal

    stimfal Активный пользователь

    С нами с:
    22 окт 2014
    Сообщения:
    25
    Симпатии:
    0
    Re: Аутентификация на странице

    <?
    define('PROTECTOR', 1);

    ob_start();
    if(!empty($_POST['log'])){
    $log = htmlspecialchars(stripslashes(addslashes($_POST['log'])));
    $pass = htmlspecialchars(stripslashes(addslashes($_POST['pas'])));}
    if(!empty($_GET['login'])){
    $log = htmlspecialchars(stripslashes(addslashes($_GET['login'])));
    $pass = htmlspecialchars(stripslashes(addslashes($_GET['pas'])));}
    /////////////////////////////////////////////////////
    require_once ('files/db.php');//подключаем бд
    /////////////////////
    $pas=md5($pass);
    $req = mysql_query("SELECT * FROM `users` WHERE `usr` = '$log' and `pass`='$pas' LIMIT 1");
    ////////////////////////////
    $udata = mysql_fetch_array($req);
    $avto=mysql_num_rows($req);
    $set = mysql_query("SELECT * FROM `set` WHERE `usr` = '$log'LIMIT 1");
    $set=mysql_num_rows($set);
    ////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////

    if ($avto==1 and $log==$udata[usr]){
    if ($_POST['mem'] == 1) {
    // Установка данных COOKIE
    $clog = base64_encode($log);
    $cpas = $pas;
    setcookie("log", $clog, time() + 3600 * 24 * 365);
    setcookie("pas", $cpas, time() + 3600 * 24 * 365);

    }else{
    $clog = base64_encode($log);
    $cpas = $pas;
    setcookie("log", $clog, time() + 3600 * 24 );
    setcookie("pas", $cpas, time() + 3600 * 24 );
    }
    $_SESSION['log'] = $log;
    $_SESSION['pas'] = $pas;
    $_SESSION['pass'] = $pass;
    if(isset($_SESSION['log'])){
    header ("Location: index.php?cookie");
    }

    }else {
    header ("Location: index.php?error");
    ob_end_flush();
    exit;



    ?>
    сделал так,но теперь не может выйти с персонажа
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    exit убери
    обфлаш засунь в конец, сейчас он у тебя в блоке else. И эта... начинай задумываться над предназначением функций.
     
  10. stimfal

    stimfal Активный пользователь

    С нами с:
    22 окт 2014
    Сообщения:
    25
    Симпатии:
    0
    $_SESSION['log'] = $log;
    $_SESSION['pas'] = $pas;
    $_SESSION['pass'] = $pass;
    if(isset($_SESSION['log'])){
    header ("Location: index.php?cookie");
    }

    }else {
    header ("Location: index.php?error");exit;
    ob_end_flush();
    ?>
    ТАК?
    ( ! ) Parse error: syntax error, unexpected $end in C:\OpenServer\domains\test.ru\enter.php on line 50
    теперь еще такая ошибка,а линия 50 это ?>
    я обязательно все выучу,просто только книгу прочитал

    Добавлено спустя 2 минуты 54 секунды:
    Ой все сделал,скобку фигурную забыл=)
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нафига ты флаш в элс пихаешь-то? смысл какой? наобум?
     
  12. stimfal

    stimfal Активный пользователь

    С нами с:
    22 окт 2014
    Сообщения:
    25
    Симпатии:
    0
    Так что спасибо большое=)
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да хоть сожги там всё.