За последние 24 часа нас посетили 23452 программиста и 1605 роботов. Сейчас ищут 862 программиста ...

Откуда-то берётся 2 переноса строки в обработчике при возврате (die)

Тема в разделе "PHP для новичков", создана пользователем SamyRed, 10 май 2016.

  1. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Здравствуйте. Помогите найти что добавляет 2 переноса строки в этом скрипте:
    Код (PHP):
    1. <?php
    2. if (isset ($_POST["do"])){
    3.     if ($_POST["do"] == "main"){
    4.         $db_host = $_POST["db_host"];
    5.         $db_user = $_POST["db_user"];
    6.         $db_pass = $_POST["db_pass"];
    7.         $db_name = $_POST["db_name"];
    8.         $db_charset = $_POST["db_charset"];
    9.         $db_prefix = $_POST["db_prefix"];
    10.         $adm_login = $_POST["adm_login"];
    11.         $adm_pass = $_POST["adm_pass"];
    12.         $adm_mail = $_POST["adm_mail"];
    13.         $servers = $_POST["servers"];
    14.         $pattern_rus = array ("а", "б", "в", "г", "д", "э", "е", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "ё", "ю", "я", " ");
    15.         $pattern_eng = array ("a", "b", "v", "g", "d", "a", "e", "j", "z", "i", "i", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "c", "ch", "sh", "sch", "", "i", "", "jo", "y", "ja", "");
    16.         $servers = str_replace ($pattern_rus, $pattern_eng, $servers);
    17.         $servers = preg_replace ("/[^a-zA-Z0-9\,\[\]-\_\s]/","",$servers);
    18.         $servers_arr = @split (",", $servers);
    19.         if (count ($servers_arr) == 1){
    20.             $serverlist = "\"".$servers_arr[0]."\"";
    21.         } else {
    22.             for ($i = 0; $i < count($servers_arr); $i++){
    23.                 if ($i == count ($servers_arr)-1){
    24.                     $serverlist .= "\"".$servers_arr[$i]."\"";
    25.                 } else {
    26.                     $serverlist .= "\"".$servers_arr[$i]."\",";
    27.                 }
    28.             }
    29.         }
    30.  
    31. //=======================Создание файла config.php===========================//
    32.  
    33. $content = '
    34. <?php
    35. Какой-то текст
    36. ';
    37.         $file = fopen ("config.php", "w");
    38.         fputs ($file, $content);
    39.         fclose ($file);
    40.  
    41. //=========================Подключение к БД==================================//
    42.  
    43. $sql = mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
    44. mysql_select_db($db_name, $sql) or die(mysql_error());
    45. mysql_query("SET NAMES '{$db_charset}'");
    46.  
    47. //===================Создание основных таблиц===============================//
    48.  
    49.         mysql_query("
    50.               **************
    51.        ");
    52.         mysql_query("
    53.               **************
    54.        ");
    55.         mysql_query("
    56.               **************
    57.        ");
    58.         mysql_query("
    59.               **************
    60.        ");
    61.         mysql_query("
    62.               **************
    63.        ");
    64.  
    65. //=======================Запись основных данных в базу=========================//
    66.  
    67.         mysql_query ("*******************************");
    68.         mysql_query ("*******************************");
    69.         die ("ok");
    70.      
    71. //====================Установка таблиц серверов===============================//
    72.  
    73.      
    74.     } else if ($_POST["do"] == "servers"){
    75.         require ("config.php");
    76.         $db_charset = $confdb["charset"];
    77.         $serverlist = $confmodules["serverlist"];
    78.         foreach ($serverlist as $server){
    79.             mysql_query("
    80.               **************
    81.            ") or die(mysql_error());
    82.             mysql_query("
    83.               **************
    84.            ") or die("mysql_error");
    85.             mysql_query("
    86.               **************
    87.            ") or die("mysql_error");
    88.             mysql_query("
    89.               **************
    90.            ") or die("mysql_error");
    91.         }
    92.         die ("ok");
    93.     }
    94. } else die ("data_fail");
    95. ?>
    В самом конце функция die ("ok") должна возвращать текст "оk". Но вместо этого она возвращает:
    "

    ok" именно с двумя переносами: http://joxi.ru/VrwVlGkhKGdw9A () - скриншот.
     
    #1 SamyRed, 10 май 2016
    Последнее редактирование: 10 май 2016
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну как минимум одна строчка тупо до скрипта уже нарисовалась :D
     
  3. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Не, это я её тут уже случайно дорисовал)) На самом деле там её нет. Кодировка - utf8 без BOM
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    может в буфере что-то сидит, когда ты дохнешь? Не дохни, делай функцию и ретурн. Дохнуть вообще плохо.
     
  5. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Очистка буфера не помогла. Так что там ничего не было.
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а ты можешь отказаться от дай? как я советовал выше. Попробуй.
     
  7. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Сейчас попробую. Много переписывать))
    --- Добавлено ---
    Погоди ка, а как через ajax запрос можно функцию вызвать в обработчике?
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    точно так же как и всё остальное
     
  9. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Я сделал так:
    Код (PHP):
    1. } else if ($_POST["do"] == "servers"){
    2.         servers();
    3.         echo "ok";
    4.     }
    а в функции сделал ретурн "ok", но пробелы остались.
    --- Добавлено ---
    Может быть эти запросы выводят переносы?
    Код (PHP):
    1.     function servers(){
    2.         require ("config.php");
    3.         $db_charset = $confdb["charset"];
    4.         $serverlist = $confmodules["serverlist"];
    5.         foreach ($serverlist as $server){
    6.             mysql_query("
    7.                CREATE TABLE IF NOT EXISTS `".$server."_permissions` (
    8.                 `id` int(11) NOT NULL AUTO_INCREMENT,
    9.                 `name` varchar(255) NOT NULL,
    10.                 `type` tinyint(1) NOT NULL,
    11.                 `permission` text NOT NULL,
    12.                 `world` varchar(50) NOT NULL,
    13.                 `value` text NOT NULL,
    14.                 PRIMARY KEY (`id`)
    15.                ) ENGINE=InnoDB DEFAULT CHARSET=".$db_charset." AUTO_INCREMENT=1;
    16.            ") or die(mysql_error());
    17.             mysql_query("
    18.                CREATE TABLE IF NOT EXISTS `".$server."_permissions_entity` (
    19.                 `id` int(11) NOT NULL AUTO_INCREMENT,
    20.                 `name` varchar(255) NOT NULL,
    21.                 `type` tinyint(1) NOT NULL,
    22.                 `default` tinyint(1) NOT NULL DEFAULT '0',
    23.                 PRIMARY KEY (`id`)
    24.                ) ENGINE=InnoDB DEFAULT CHARSET=".$db_charset." AUTO_INCREMENT=1;
    25.            ") or die("mysql_error");
    26.             mysql_query("
    27.                CREATE TABLE IF NOT EXISTS `".$server."_permissions_inheritance` (
    28.                 `id` int(11) NOT NULL AUTO_INCREMENT,
    29.                 `child` varchar(255) NOT NULL,
    30.                 `parent` varchar(255) NOT NULL,
    31.                 `type` tinyint(1) NOT NULL,
    32.                 `world` varchar(50) DEFAULT NULL,
    33.                 PRIMARY KEY (`id`)
    34.                ) ENGINE=InnoDB DEFAULT CHARSET=".$db_charset." AUTO_INCREMENT=1;
    35.            ") or die("mysql_error");
    36.             mysql_query("
    37.                CREATE TABLE IF NOT EXISTS `".$server."_cart` (
    38.                 `id` int(11) NOT NULL AUTO_INCREMENT,
    39.                 `nickname` varchar(255) NOT NULL,
    40.                 `item_id` varchar(255) NOT NULL,
    41.                 `item_amount` varchar(11) NOT NULL,
    42.                 `name` varchar(255) NOT NULL,
    43.                 `extra` text NOT NULL,
    44.                 `type` varchar(15) NOT NULL,
    45.                 `server` varchar(1) NOT NULL,
    46.                 PRIMARY KEY (`id`)
    47.                ) ENGINE=InnoDB DEFAULT CHARSET=".$db_charset." AUTO_INCREMENT=1;
    48.            ") or die("mysql_error");
    49.         }
    50.         return ("ok");
    51.     }
    По скольку я удалил весь код с обработчика кроме самой функции (той что выше) иэтого:
    Код (PHP):
    1. if ($_POST["do"] == "servers"){
    2.         servers();
    3.     }
     
    #9 SamyRed, 10 май 2016
    Последнее редактирование: 10 май 2016
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    require("config.php");

    а тут?

    die убери вообще отовсюду
     
  11. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    В конфиге вообще ничего не віводится. Там только хранятся данные БД, подключение к БД, и т.п.
    --- Добавлено ---
    Убрал даже die которые возвращали бы ошибку mysql. Но переносы откуда-то всё равно берутся. Уже всё что можно было отключил. Оставил только нужную мне функцию.
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    этого не может быть тогда =)
     
  13. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    В общем разобрался. Всё из за моей невнимательности. В файле "config.php" тупо перед тегом <?php был 1 перенос и после тега ?> ещё 2. Так что спасибо за помощ.
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    круто. победа значит.
     
  15. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Да. Ещё раз спасибо.
     
  16. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    перемога.
     
  17. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Фигасе!!!!!!!11 Нейтройнная звезда у них там прячется.
     
  18. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Закрывающий тег "?>" желательно не ставить, если после php-кода ничего в файле больше нет.
     
  19. yuri

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

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
    +1

    https://php.ru/manual/language.basic-syntax.phptags.html

    Если файл содержит только код PHP, предпочтительно опустить закрывающий тег в конце файла. Это помогает избежать добавлени случайных символов пробела или перевода строки после закрывающего тега PHP, которые могут послужить причиной нежелательных эффектов, так как PHP начинает выводить данные в буфер при отсутствии намерения у программиста выводить какие-либо данные в этой точке скрипта.
     
  20. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Спасибо, учту.
     
  21. machetero

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

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    А мне говорили что переносы строки в html превращаются в пробелы
     
  22. NoMonster

    NoMonster Новичок

    С нами с:
    7 май 2016
    Сообщения:
    38
    Симпатии:
    1
    php не переносит но если вы ставите html строка то появит. учитивая если закрыли php дальше уже html