@Ksbdgrev

Setcookie не работает, в чём проблема?

И так для начала это не задание, а вопрос!
Я делаю регистрацию всё работает (я всё исправил), хочу, чтобы пользователя запомнило с помощью куки в регистрацие, но она почему то не робит!
Кто знает в чём проблема напишите пожалуйста)
Вот ошибка:
Warning: Cannot modify header information - headers already sent by (output started at /home/e/examam123/test/public_html/reg/reg.php:2) in /home/e/examam123/test/public_html/reg/reg.php on line 56 Warning: Cannot modify header information - headers already sent by (output started at /home/e/examam123/test/public_html/reg/reg.php:2) in /home/e/examam123/test/public_html/reg/reg.php on line 57 Warning: Cannot modify header information - headers already sent by (output started at /home/e/examam123/test/public_html/reg/reg.php:2) in /home/e/examam123/test/public_html/reg/reg.php on line 58 Warning: Cannot modify header information - headers already sent by (output started at /home/e/examam123/test/public_html/reg/reg.php:2) in /home/e/examam123/test/public_html/reg/reg.php on line 59

Вот код регистрации:
<meta charset="utf-8">
<?php
require_once ("../db.php");

if (isset($_POST['submit'])) {
  $err = [];

  if (!isset($_POST['name'], $_POST['uname'], $_POST['email'], $_POST['tel'], $_POST['pass'])) {
    $err[] = "Введены не все данные!";
  }

  if (isset($_POST['name']) && trim($_POST['name']) == "") {
    $err[] = "Не заполнено поле name!";
  }

  if (isset($_POST['uname']) && trim($_POST['uname']) == "") {
    $err[] = "Не заполнено поле uname!";
  }

  if (isset($_POST['email']) && trim($_POST['email']) == "") {
    $err[] = "Не заполнено поле email!";
  }

  if (isset($_POST['tel']) && trim($_POST['tel']) == "") {
    $err[] = "Не заполнено поле tel!";
  }

  if (isset($_POST['pass']) && trim($_POST['pass']) == "") {
    $err[] = "Не заполнено поле pass!";
  }

  if (!count($err)) {
    $name = $_POST['name'];
    $uname = $_POST['uname'];
    $email = $_POST['email'];
    $tel = $_POST['tel'];
    
    $name = mysqli_real_escape_string($db, $name);
    $uname = mysqli_real_escape_string($db, $uname);
    $email = mysqli_real_escape_string($db, $email);
    $tel = mysqli_real_escape_string($db, $tel) ;
    $pass = md5(md5($_POST['pass']));

    $query = mysqli_query($db, "SELECT * FROM `users` WHERE `email`='{$email}'");
    if (mysqli_num_rows($query) > 0) {
      $err[] = "Пользователь с таким email уже существует!";
    }

    $query = mysqli_query($db, "SELECT * FROM `users` WHERE `tel`='{$tel}'");
    if (mysqli_num_rows($query) > 0) {
      $err[] = "Пользователь с таким номером уже существует!";
    }

    if (!count($err)) {
      mysqli_query($db, "INSERT INTO 'users' ('name', 'uname', 'tel', 'email', 'pass') VALUES ('{$name}', '{$uname}', '{$tel}', '{$email}', '{$pass}')");
      setcookie("name", $name, time()+60*60*24*30);
      setcookie("uname", $uname, time()+60*60*24*30);
      setcookie("tel", $tel, time()+60*60*24*30);
      header("Location: ../login/");
      exit;
    }
  }

  if (count($err)) {
    print ("<b>При регистрации произошли следующие ошибки:</b><br>");
    foreach($err AS $error) {
      print ($error."<br>");
    }
  }
}
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 2
Для начала уменьшить количество запросов SELECT `id`,`email`,`tel` FROM `users` WHERE email=... OR tel=...
if ($id>0) kokoko

пользуйтесь стандартным session_start();

и записывайте в $_SESSION все данные по текущему юзеру, в т.ч и is_auth is_admin итд...
Ответ написан
anton_reut
@anton_reut
Начинающий веб-разработчик
Потому что надо убрать
<meta charset="utf-8">
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы