За последние 24 часа нас посетили 17499 программистов и 1722 робота. Сейчас ищут 1576 программистов ...

Превозмогания тред

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

  1. Рихард

    Рихард Новичок

    С нами с:
    13 янв 2018
    Сообщения:
    89
    Симпатии:
    6
    у меня правило если более 3 часов не нахожу ответа не в книжках не в поисковике захожу сюда на форум
     
  2. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    наверное и мне нужно подумать над временем
     
    Рихард нравится это.
  3. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @ubunta2 прислушайся к @romach когда я изучал циклы и мне было очень сложно их понимать, тогда я начал расписывать, всё что я делаю и наконец-то полностью разобрался https://habrahabr.ru/sandbox/96493/
     
  4. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    @Dimon2x если не ошибаюсь, циклы проходят в 9 классе по школьной программе, а в 11 классе есть даже ЕГЭ задания с рекурсиями и т.д. ) не знаю в чем сложность их понимания.
     
  5. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    в школе у меня не было программирования.
     
  6. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    ох, сурово было...
     
  7. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    PHP:
    1. <?php
    2.   error_reporting(E_ALL & ~E_NOTICE);
    3.   // Если константа DEBUG определена, работает отладочный
    4.   // вариант, в частности выводится подробные сообщения об
    5.   // исключительных ситуациях, связанных с MySQL и ООП
    6.   define("DEBUG", 1);
    7.   // сейчас выставлен сервер локальной машины
    8.   $dblocation = "localhost";
    9.   // Имя базы данных, на хостинге или локальной машине
    10.   $dbname = "oop_site";
    11.   // Имя пользователя базы данных
    12.   $dbuser = "root";
    13.   // и его пароль
    14.   $dbpasswd = "";
    15.  
    16.   // Устанавливаем соединение с базой данных
    17.   $dbcnx = mysql_connect($dblocation,$dbuser,$dbpasswd);
    18.   if(!$dbcnx)
    19.   exit("<P>В настоящий момент сервер базы данных не
    20.  доступен, поэтому корректное отображение
    21.  страницы невозможно.</P>" );
    22.   // Выбираем базу данных
    23.   if(! @mysql_select_db($dbname,$dbcnx))
    24.   exit("<P>В настоящий момент база данных не доступна,
    25.  поэтому корректное отображение страницы
    26.  невозможно.</P>" );
    27.  
    28.   @mysql_query("SET NAMES 'cp1251'");
    29.  
    30.   if(!function_exists('get_magic_quotes_gpc'))
    31.   {
    32.   function get_magic_quotes_gpc()
    33.   {
    34.   return false;
    35.   }
    36.   }
    37. ?>
    Fatal error: Uncaught Error: Call to undefined function mysql_connect() in E:\OpenServer\domains\php\03\3.1.4\config.php:18 Stack trace: #0 E:\OpenServer\domains\php\03\3.1.4\security_mod.php(6): require_once() #1 {main} thrown in E:\OpenServer\domains\php\03\3.1.4\config.php on line 18
     
  8. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    книжку обнови - этого расширения уже лет пять как нет
     
  9. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    какое расширение?
    --- Добавлено ---
    книга 2009 года
    --- Добавлено ---
    уже никак не получится сделать как в книге сейчас?
    Можно пропускать этот момент?
    --- Добавлено ---
    Код (Text):
    1. <?php
    2.  
    3. error_reporting(E_ALL & ~E_NOTICE);
    4. // Если константа DEBUG определена, работает отладочный
    5. // вариант, в частности выводится подробные сообщения об
    6. // исключительных ситуациях, связанных с MySQL и ООП
    7. define("DEBUG", 1);
    8. // сейчас выставлен сервер локальной машины
    9. $dblocation = "localhost";
    10. // Имя базы данных, на хостинге или локальной машине
    11. $dbname = "oop_site";
    12. // Имя пользователя базы данных
    13. $dbuser = "root";
    14. // и его пароль
    15. $dbpasswd = "";
    16.  
    17. // Устанавливаем соединение с базой данных
    18. $dbcnx = mysqli__connect($dblocation,$dbuser,$dbpasswd);
    19. if(!$dbcnx)
    20. exit("<P>В настоящий момент сервер базы данных не
    21. доступен, поэтому корректное отображение
    22. страницы невозможно.</P>" );
    23. // Выбираем базу данных
    24. if(! @mysqli__select_db($dbname,$dbcnx))
    25. exit("<P>В настоящий момент база данных не доступна,
    26. поэтому корректное отображение страницы
    27. невозможно.</P>" );
    28.  
    29. @mysqli__query("SET NAMES 'cp1251'");
    30.  
    31. if(!function_exists('get_magic_quotes_gpc'))
    32. {
    33. function get_magic_quotes_gpc()
    34. {
    35. return false;
    36. }
    37. }
    38. ?>
    Fatal error: Uncaught Error: Call to undefined function mysqli__connect() in E:\OpenServer\domains\php\03\3.1.4\config.php:18 Stack trace: #0 {main} thrown in E:\OpenServer\domains\php\03\3.1.4\config.php on line 18
     
  10. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    У тебя какая версия PHP?
    --- Добавлено ---
    А, а как это вообще? mysqli__connect, должна быть одна )
    mysqli_connect
     
  11. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    у меня версия 7
     
  12. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @ubunta2 получится, если транслируешь из старого расширения в новое. Там всё просто - добавить подключение первым аргументом или на ООП перейти.
     
  13. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
  14. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    как это сделать пока не знаю
    поменял и не получилось.
    Позже когда научусь смогу.
    --- Добавлено ---
    спасибо
    его тоже позже посмотрю
     
  15. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @ubunta2 тебе надо сейчас
     
  16. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    понял
     
  17. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    PHP:
    1. <?php
    2.  
    3.   error_reporting(E_ALL & ~E_NOTICE);
    4.  
    5.   // Инициируем сессию
    6.   // Выводим содержимое суперглобального массива $_SESSION
    7.   echo "<pre>";
    8.   print_r($_SESSION);
    9.   echo "</pre>";
    10. ?>
    откуда это взялось в коде нет такого
    Array
    (
    [name] => value
    [arr] => Array
    (
    [0] => first
    [1] => second
    [2] => third
    )

    )
     
  18. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    PHP:
    1. <?php
    2.  
    3.   error_reporting(E_ALL & ~E_NOTICE);
    4.  
    5.   // Устанавливаем соединение с базой данных
    6.   require_once("config.php");
    7.   // Если пользователь не авторизовался - авторизуемся
    8.   if(!isset($_SERVER['PHP_AUTH_USER']))
    9.   {
    10.   Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    11.   Header("HTTP/1.0 401 Unauthorized");
    12.   exit();
    13.   }
    14.   else
    15.   {
    16.   // Проверяем переменные $_SERVER['PHP_AUTH_USER']
    17.   // и $_SERVER['PHP_AUTH_PW'], чтобы предотвратить
    18.   // SQL-инъекцию
    19.   {
    20.   $_SERVER['PHP_AUTH_USER'] =
    21.   mysql_escape_string($_SERVER['PHP_AUTH_USER']);
    22.   $_SERVER['PHP_AUTH_PW'] =
    23.   mysql_escape_string($_SERVER['PHP_AUTH_PW']);
    24.   }
    25.    
    26.   $query = "SELECT pass FROM userlist
    27.  WHERE name='{$_SERVER[PHP_AUTH_USER]}'";
    28.   $lst = @mysql_query($query);
    29.   // Если найдена ошибка в SQL-запросе -
    30.   // открываем диалоговое окно ввода пароля
    31.   if(!$lst)
    32.   {
    33.   Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    34.   Header("HTTP/1.0 401 Unauthorized");
    35.   exit();
    36.   }
    37.   // Если такого пользователя нет -
    38.   // открываем диалоговое окно ввода пароля
    39.   if(mysql_num_rows($lst) == 0)
    40.   {
    41.   Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    42.   Header("HTTP/1.0 401 Unauthorized");
    43.   exit();
    44.   }
    45.   // Если все проверки пройдены, сравниваем хэши паролей
    46.   $pass = @mysql_fetch_array($lst);
    47.   if(md5($_SERVER['PHP_AUTH_PW']) != $pass['pass'])
    48.   {
    49.   Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    50.   Header("HTTP/1.0 401 Unauthorized");
    51.   exit();
    52.   }
    53.   }
    54. ?>

    Fatal error: Uncaught Error: Call to undefined function mysql_escape_string() in E:\OpenServer\domains\php\03\3.1.4\security_mod.php:22 Stack trace: #0 {main} thrown in E:\OpenServer\domains\php\03\3.1.4\security_mod.php on line 22
     
  19. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    @ubunta2, книжка у тебя старая, а php новый. Из него убрали функции mysql_*, их больше нету.
     
  20. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    я понял уже вчера
     
  21. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Ну так раз понял, замени на mysqli
     
  22. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    Код (Text):
    1. <?php
    2.  
    3.   error_reporting(E_ALL & ~E_NOTICE);
    4.  
    5.   // Устанавливаем соединение с базой данных
    6.   require_once("config.php");
    7.   // Если пользователь не авторизовался - авторизуемся
    8.   if(!isset($_SERVER['PHP_AUTH_USER']))
    9.   {
    10.     Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    11.     Header("HTTP/1.0 401 Unauthorized");
    12.     exit();
    13.   }
    14.   else
    15.   {
    16.     // Проверяем переменные $_SERVER['PHP_AUTH_USER']
    17.     // и $_SERVER['PHP_AUTH_PW'], чтобы предотвратить
    18.     // SQL-инъекцию
    19.     if (!get_magic_quotes_gpc())
    20.     {
    21.       $_SERVER['PHP_AUTH_USER'] =
    22.                           mysqli_escape_string($_SERVER['PHP_AUTH_USER']);
    23.       $_SERVER['PHP_AUTH_PW'] =
    24.                           mysqli_escape_string($_SERVER['PHP_AUTH_PW']);
    25.     }
    26.    
    27.     $query = "SELECT pass FROM userlist
    28.               WHERE name='{$_SERVER[PHP_AUTH_USER]}'";
    29.     $lst = @mysqli_query($query);
    30.     // Если найдена ошибка в SQL-запросе -
    31.     // открываем диалоговое окно ввода пароля
    32.     if(!$lst)
    33.     {
    34.       Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    35.       Header("HTTP/1.0 401 Unauthorized");
    36.       exit();
    37.     }
    38.     // Если такого пользователя нет -
    39.     // открываем диалоговое окно ввода пароля
    40.     if(mysqli_num_rows($lst) == 0)
    41.     {
    42.       Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    43.       Header("HTTP/1.0 401 Unauthorized");
    44.       exit();
    45.     }
    46.     // Если все проверки пройдены, сравниваем хэши паролей
    47.     $pass = @mysqli_fetch_array($lst);
    48.     if(md5($_SERVER['PHP_AUTH_PW']) != $pass['pass'])
    49.     {
    50.       Header("WWW-Authenticate: Basic realm=\"Admin Page\"");
    51.       Header("HTTP/1.0 401 Unauthorized");
    52.       exit();
    53.     }
    54.   }
    55. ?>
    Warning: mysqli_escape_string() expects exactly 2 parameters, 1 given in E:\OpenServer\domains\php\03\3.1.4\security_mod.php on line 22

    Warning: mysqli_escape_string() expects exactly 2 parameters, 1 given in E:\OpenServer\domains\php\03\3.1.4\security_mod.php on line 24

    Warning: Cannot modify header information - headers already sent by (output started at E:\OpenServer\domains\php\03\3.1.4\security_mod.php:22) in E:\OpenServer\domains\php\03\3.1.4\security_mod.php on line 34

    Warning: Cannot modify header information - headers already sent by (output started at E:\OpenServer\domains\php\03\3.1.4\security_mod.php:22) in E:\OpenServer\domains\php\03\3.1.4\security_mod.php on line 35
     
  23. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    @ubunta2, тебя же на php.net не банили? Посмотри доку по mysqli_* функциям, они слегка отличаются.
     
  24. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Эта ошибка указывает на то, что ты использовать header(); после echo или другие функции которые выводят данные.
    https://php.ru/manual/mysqli.real-escape-string.html
     
  25. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    я заменил , а что еще нужно было что-то?