За последние 24 часа нас посетили 18997 программистов и 1618 роботов. Сейчас ищет 961 программист ...

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

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

  1. Maputo

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

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @ubunta2, работа с ошибками - это первый навык, который стоит развивать. Мозг так устроен, что запоминает короткие пути к успеху лучше чем длинные. Поэтому лечение ошибок через форум имеет низкую эффективность в плане обучения.
     
    denis01 нравится это.
  2. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    ок
     
    Maputo нравится это.
  3. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    почему выводит 2 раза регистрацию и авторизацию?

    logout.php

    PHP:
    1. <?php
    2. unset ($_SESSION["login"]);
    3. unset ($_SESSION["password"]);
    4. header ("Location: ".$_SERVER["HTTP_REFERER"]);
    5. ?>


    index.php

    PHP:
    1. <?php
    2. print_r  ($auth);
    3. require_once "lib/user_class.php";
    4. $user = User::getObject();
    5. $auth = $user->isAuth();
    6. if (isset ($_POST["reg"])){
    7. $login = $_POST["login"];
    8. $password = $_POST["password"];
    9. $reg_success = $user->regUser($login, $password);
    10. }
    11. elseif (isset ($_POST["auth"])){
    12. $login = $_POST["login"];
    13. $password = $_POST["password"];
    14. $auth_success = $user->login($login, $password);
    15. if ($auth_success){
    16.   header ("Location: index.php");
    17.   exit;
    18. }
    19. }
    20. ?>
    21. <html>
    22. <head>
    23. <title>Регистрация и авторизация пользователей</title>
    24. </head>
    25. <body>
    26. <?php
    27. if ($auth){
    28. echo "Здравствуйте, ".$_SESSION ["login"]."(<a href='logout.php'>Выход</a>)";
    29. }
    30. else {
    31. echo '<h1>Регистрация</h1>
    32. <form name="red" action="index.php" method="post">
    33. <table>
    34. <tr>
    35. <td>Логин</td>
    36. <td>
    37. <input type="text" name="login">
    38. </td>
    39. <tr>
    40. <tr>
    41. <td>Пароль</td>
    42. <td>
    43. <input type="password" name="password">
    44. </td>
    45. <tr>
    46. <tr>
    47. <td clospan="2">
    48. <input type="submit" name="reg" value="Зарегистрироваться">
    49. </td>
    50. <tr>
    51. </table>
    52. </form>
    53.  <h1>Авторизация</h1>
    54. <form name="auth" action="index.php" method="post">
    55. <table>
    56. <tr>
    57. <td>Логин</td>
    58. <td>
    59. <input type="text" name="login">
    60. </td>
    61. <tr>
    62. <tr>
    63. <td>Пароль</td>
    64. <td>
    65. <input type="password" name="password">
    66. </td>
    67. <tr>
    68. <tr>
    69. <td clospan="2">
    70. <input type="submit" name="auth" value="Войти">
    71. </td>
    72. <tr>
    73. </table>
    74. </form>';
    75. }
    76. ?>
    77. <h1>Регистрация</h1>
    78. <form name="red" action="index.php" method="post">
    79. <table>
    80. <tr>
    81. <td>Логин</td>
    82. <td>
    83. <input type="text" name="login">
    84. </td>
    85. <tr>
    86. <tr>
    87. <td>Пароль</td>
    88. <td>
    89. <input type="password" name="password">
    90. </td>
    91. <tr>
    92. <tr>
    93. <td clospan="2">
    94. <input type="submit" name="reg" value="Зарегистрироваться">
    95. </td>
    96. <tr>
    97. </table>
    98. </form>
    99.   <h1>Авторизация</h1>
    100. <form name="auth" action="index.php" method="post">
    101. <table>
    102. <tr>
    103. <td>Логин</td>
    104. <td>
    105. <input type="text" name="login">
    106. </td>
    107. <tr>
    108. <tr>
    109. <td>Пароль</td>
    110. <td>
    111. <input type="password" name="password">
    112. </td>
    113. <tr>
    114. <tr>
    115. <td clospan="2">
    116. <input type="submit" name="auth" value="Войти">
    117. </td>
    118. <tr>
    119. </table>
    120. </form>
    121. </body>
    122. </html>



    user_class.php

    PHP:
    1. <?php
    2.   class User{
    3.   private $db;
    4.   private static $user = null;
    5.   private function __construct(){
    6.   $this->db = new mysqli("localhost", "root", "", "mybase");
    7.   $this->db->query("SET NAMES 'utf8'");
    8.   }
    9.   public static function getObject(){
    10.   if(self::$user === null) self::$user = new User();
    11.   return self::$user;
    12.   }
    13.   public function regUser($login, $password){
    14.   if ($login == "") return false;
    15.   if ($password == "") return false;
    16.   $password = md5($password);
    17.   return $this->db->query("INSERT INTO `users` (`login`, `password`, `regdate`) VALUES ('$login', '$password', '".time()."')");
    18.   }
    19.   private function chekUser($login, $password){
    20.   $result_set = $this->db->query("SELECT `password` FROM `users` WHERE `login` = '$login' ");
    21.   $user = $result_set->fetch_assoc();
    22.   $result_set->close();
    23.   if(!$user) return false;
    24.   return $user["password"] === $password;
    25.   }
    26.   public function isAuth(){
    27.   $login = $_SESSION["login"];
    28.   $password = $_SESSION["password"];
    29.   return $this->chekUser($login, $password);
    30.   }
    31.   public function login($login, $password){
    32.   $password = md5($password);
    33.   if($this->chekUser($login, $password)){
    34.   $SESSION["login"] = $login;
    35.   $SESSION["password"] = $password;
    36.   }
    37.   }
    38.   public function __destruct(){
    39.   if($this->db) $this->db->close();
    40.   }
    41.   }
    42. ?>
    --- Добавлено ---
    index.php

    PHP:
    1. <?php
    2. var_dump ($auth);
    3. require_once "lib/user_class.php";
    4. $user = User::getObject();
    5. $auth = $user->isAuth();
    6. if (isset ($_POST["reg"])){
    7. $login = $_POST["login"];
    8. $password = $_POST["password"];
    9. $reg_success = $user->regUser($login, $password);
    10. }
    11. elseif (isset ($_POST["auth"])){
    12. $login = $_POST["login"];
    13. $password = $_POST["password"];
    14. $auth_success = $user->login($login, $password);
    15. if ($auth_success){
    16.   header ("Location: index.php");
    17.   exit;
    18. }
    19. }
    20. ?>
    21. <html>
    22. <head>
    23. <title>Регистрация и авторизация пользователей</title>
    24. </head>
    25. <body>
    26. <?php
    27. if ($auth){
    28. echo "Здравствуйте, ".$_SESSION ["login"]."(<a href='logout.php'>Выход</a>)";
    29. }
    30. else {
    31. echo '<h1>Регистрация</h1>
    32. <form name="red" action="index.php" method="post">
    33. <table>
    34. <tr>
    35. <td>Логин</td>
    36. <td>
    37. <input type="text" name="login">
    38. </td>
    39. <tr>
    40. <tr>
    41. <td>Пароль</td>
    42. <td>
    43. <input type="password" name="password">
    44. </td>
    45. <tr>
    46. <tr>
    47. <td clospan="2">
    48. <input type="submit" name="reg" value="Зарегистрироваться">
    49. </td>
    50. <tr>
    51. </table>
    52. </form>
    53.  <h1>Авторизация</h1>
    54. <form name="auth" action="index.php" method="post">
    55. <table>
    56. <tr>
    57. <td>Логин</td>
    58. <td>
    59. <input type="text" name="login">
    60. </td>
    61. <tr>
    62. <tr>
    63. <td>Пароль</td>
    64. <td>
    65. <input type="password" name="password">
    66. </td>
    67. <tr>
    68. <tr>
    69. <td clospan="2">
    70. <input type="submit" name="auth" value="Войти">
    71. </td>
    72. <tr>
    73. </table>
    74. </form>';
    75. }
    76. ?>
    77. <h1>Регистрация</h1>
    78. <form name="red" action="index.php" method="post">
    79. <table>
    80. <tr>
    81. <td>Логин</td>
    82. <td>
    83. <input type="text" name="login">
    84. </td>
    85. <tr>
    86. <tr>
    87. <td>Пароль</td>
    88. <td>
    89. <input type="password" name="password">
    90. </td>
    91. <tr>
    92. <tr>
    93. <td clospan="2">
    94. <input type="submit" name="reg" value="Зарегистрироваться">
    95. </td>
    96. <tr>
    97. </table>
    98. </form>
    99.   <h1>Авторизация</h1>
    100. <form name="auth" action="index.php" method="post">
    101. <table>
    102. <tr>
    103. <td>Логин</td>
    104. <td>
    105. <input type="text" name="login">
    106. </td>
    107. <tr>
    108. <tr>
    109. <td>Пароль</td>
    110. <td>
    111. <input type="password" name="password">
    112. </td>
    113. <tr>
    114. <tr>
    115. <td clospan="2">
    116. <input type="submit" name="auth" value="Войти">
    117. </td>
    118. <tr>
    119. </table>
    120. </form>
    121. </body>
    122. </html>
    index.php

    PHP:
    1. <?php
    2.  
    3. require_once "lib/user_class.php";
    4. $user = User::getObject();
    5. $auth = $user->isAuth();
    6. if (isset ($_POST["reg"])){
    7. $login = $_POST["login"];
    8. $password = $_POST["password"];
    9. $reg_success = $user->regUser($login, $password);
    10. }
    11. elseif (isset ($_POST["auth"])){
    12. $login = $_POST["login"];
    13. $password = $_POST["password"];
    14. $auth_success = $user->login($login, $password);
    15. if ($auth_success){
    16.   header ("Location: index.php");
    17.   exit;
    18. }
    19. }
    20. ?>
    21. <html>
    22. <head>
    23. <title>Регистрация и авторизация пользователей</title>
    24. </head>
    25. <body>
    26. <?php
    27. if ($auth){
    28. echo "Здравствуйте, ".$_SESSION ["login"]."(<a href='logout.php'>Выход</a>)";
    29. }
    30. else {
    31. echo '<h1>Регистрация</h1>
    32. <form name="red" action="index.php" method="post">
    33. <table>
    34. <tr>
    35. <td>Логин</td>
    36. <td>
    37. <input type="text" name="login">
    38. </td>
    39. <tr>
    40. <tr>
    41. <td>Пароль</td>
    42. <td>
    43. <input type="password" name="password">
    44. </td>
    45. <tr>
    46. <tr>
    47. <td clospan="2">
    48. <input type="submit" name="reg" value="Зарегистрироваться">
    49. </td>
    50. <tr>
    51. </table>
    52. </form>
    53.  <h1>Авторизация</h1>
    54. <form name="auth" action="index.php" method="post">
    55. <table>
    56. <tr>
    57. <td>Логин</td>
    58. <td>
    59. <input type="text" name="login">
    60. </td>
    61. <tr>
    62. <tr>
    63. <td>Пароль</td>
    64. <td>
    65. <input type="password" name="password">
    66. </td>
    67. <tr>
    68. <tr>
    69. <td clospan="2">
    70. <input type="submit" name="auth" value="Войти">
    71. </td>
    72. <tr>
    73. </table>
    74. </form>';
    75. }
    76. ?>
    77. <h1>Регистрация</h1>
    78. <form name="red" action="index.php" method="post">
    79. <table>
    80. <tr>
    81. <td>Логин</td>
    82. <td>
    83. <input type="text" name="login">
    84. </td>
    85. <tr>
    86. <tr>
    87. <td>Пароль</td>
    88. <td>
    89. <input type="password" name="password">
    90. </td>
    91. <tr>
    92. <tr>
    93. <td clospan="2">
    94. <input type="submit" name="reg" value="Зарегистрироваться">
    95. </td>
    96. <tr>
    97. </table>
    98. </form>
    99.   <h1>Авторизация</h1>
    100. <form name="auth" action="index.php" method="post">
    101. <table>
    102. <tr>
    103. <td>Логин</td>
    104. <td>
    105. <input type="text" name="login">
    106. </td>
    107. <tr>
    108. <tr>
    109. <td>Пароль</td>
    110. <td>
    111. <input type="password" name="password">
    112. </td>
    113. <tr>
    114. <tr>
    115. <td clospan="2">
    116. <input type="submit" name="auth" value="Войти">
    117. </td>
    118. <tr>
    119. </table>
    120. </form>
    121. </body>
    122. </html>
    --- Добавлено ---
    var_dump ($auth); и
    print_r
    нетбинксом проверял
    не пойму где ошибка
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    выводит что?
    форму
    слово
    кнопку
    ?
    выложены скрипты не причем
     
  5. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    выводит 2 раза авторизацию и регистрацию, а должно один раз
    при авторизации если неправильный пароль , то перенаправлять на эту страницу.
     
  6. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    Чтоб при вводе неправильно пароля выводилась та же страница.
     
  7. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @ubunta2 что отладка показала?
     
  8. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    NULL
    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at E:\OpenServer\domains\test\3\index.php:2) in E:\OpenServer\domains\test\3\lib\user_class.php on line 27
    но не пойму что сделать нужно
     
  9. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    Предупреждение: session_start (): не удается отправить ограничитель кеша сеанса - уже отправленные заголовки (вывод запущен в E: \ OpenServer \ domains \ test \ 3 \ index.php: 2) в E: \ OpenServer \ domains \ test \ 3 \ lib \ User_class.php в строке 27
     
  10. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ты переводил ошибку? Там же написано, что на строке №2 в файле index.php уже начался вывод информации, а ты на 27 строке файла user_class.php пытаешься работать с заголовками. В протоколе HTTP, сначала заголовки, потом остальное. До начало вывода нужно со всеми заголовками разобраться. Сессия использует cookie, а они в заголовках. Можешь через ob_start накапливать информацию, а выводить после окончания работы с заголовками http.
     
  11. ubunta2

    ubunta2 Зэк
    [ БАН ]

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

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    ошибка в 27 строке вроде
     
  13. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    В 27 строке не ошибка а предупреждение. Ошибка - в другом месте. Следи за логикой своего скрипта.
     
  14. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    https://habrahabr.ru/post/148272/
    программирование — это, в первую очередь, способ мыслить, оперировать в уме абстрактными сущностями, эдакая «игра в бисер».
    Точка. ТОЧКА бл**ь
     
    Васяня и xaker01 нравится это.
  15. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    есть протокол http, разные версии, можно взять например 1.1, так вот, он грубо говоря состоит из заголовков и данных, ты в PHP создаёшь ответ по правилам протокола http, например ты вывел html теги или даже пробел, потом хочешь установить cookie, ты получаешь ошибку и предупреждения, потому что сначала надо сформировать все заголовки, а потом уже данные. Но можно это обойти, данные не отправлять, а сохранять в переменную, и уже в конце скрипта, когда с заголовками перестал работать, просто отправить данные. Главное что сначала заголовки, потом данные. Посмотри функции ob_start(), ob_get_content()
    --- Добавлено ---
    @ubunta2 тебе нужно остановиться и поиграться с DNS, HTTP, fiddler, почитать про сети и IP, регистрацию доменов, администрирование linux, настройка web-server apache/nginx, чтобы понятно как живёт компьютер от ввода адреса в браузер до вывода результата.
     
  16. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    про регистрацию доменов знаю. Был опыт на вордпрессе.
     
  17. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ворд пресс тут не причём, надо знать про IANA, ICANN, root DNS, регистраторов доменов, потренироваться на бесплатных от freenom можно.
    Для практики зарегистрируй домен у freenom, направь его к DNS от cloudflare и подключи к бесплатному хостингу.
     
  18. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    подключение днс делал
    я завис на этом видеоуроке
     
  19. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ворд пресс тут не причём, надо знать про IANA, ICANN, root DNS, регистраторов доменов, потренироваться на бесплатных от freenom можно.
    Для практики зарегистрируй домен у freenom, направь его к DNS от cloudflare и подключи к бесплатному хостингу.
     
  20. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    а с этим уроком что делать
    ?
     
  21. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    я этот урок хочу добить
     
  22. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.819
    Симпатии:
    1.333
    Адрес:
    Лень
    это чейт такое ? :D
     
  23. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    MouseZver нравится это.
  24. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    я хочу с этим кодом разобраться
     
  25. ubunta2

    ubunta2 Зэк
    [ БАН ]

    С нами с:
    27 июн 2017
    Сообщения:
    947
    Симпатии:
    28
    в нетбинксе можно синтаксис найти.
    Если есть ошибка , то можно увидеть при загрузке странице в какой строке она.