Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите найти ошибку в коде.

! гер Знаток (331), на голосовании 2 недели назад
есть серверный файл в который скидываются значения через форму он проверяет что это за значения и отправляет их в sql базу данных, а после отправляет пользователя обратно на его страницу. мой код почему то не хочет этого делать и в таблицу результаты не вставляет. уточнение: в базе данных поля для пользователей создаются при регистрации, но в них только id

 <?php 
if (!isset($_COOKIE['user'])) { //если пользователь не вошел в аккаунт выкидывает его на страницу регистрации
header("Location: registration.php");
exit();}

$host = 'localhost'; //подключение к sql базе данных
$user = 'root';
$pass = '';
$name = 'forum';
$link = mysqli_connect($host, $user, $pass, $name);

$timevar = $_COOKIE['user'];
$id = mysqli_fetch_assoc(mysqli_query($link,"SELECT id FROM `users` WHERE `name` = '$timevar'"))['id']; //узнаем id пользователя для sql запроса

if (!empty($_POST['description'])) {
$description = $_POST['description'];

$query = "UPDATE profiles SET description='$description' WHERE id = $id";
mysqli_query($link, $query);

header("Location: myprofile.php");
exit();
}
if (!empty($_POST['newdescription'])) {
$newdescription = $_POST['newdescription'];

$query = "UPDATE profiles SET description='$newdescription' WHERE id = $id";
mysqli_query($link, $query);

header("Location: myprofile.php");
exit();
}

if (!empty($_POST['website']) and !empty($_POST['name_site'])) {
$website = $_POST['website'];
$site_name = $_POST['site_name'];

$query = "UPDATE profiles SET `website`='$website', `site_name`='$site_name' WHERE id = $id";
mysqli_query($link, $query);

header("Location: myprofile.php");
exit();
}
if (!empty($_POST['newwebsite']) and !empty($_POST['newname_site'])) {
$newwebsite = $_POST['newwebsite'];
$newsite_name = $_POST['newsite_name'];

$query = "UPDATE profiles SET `website`='$newwebsite', `site_name`='$newsite_name' WHERE id = $id";
mysqli_query($link, $query);

header("Location: myprofile.php");
exit();
}
var_dump($_POST);
?>
вывод: array(2) { ["site_name"]=> string(18) "телеграмм" ["website"]=> string(15) "t.me/xxxxxx" }
если что не пишите что данные пользователя нужно хранить не в куки а в сессиях и подобное, проект не рассчитан на общее пользование создаю только что бы научиться
Дополнен 1 месяц назад
к каждой переменной я дополнил экранирование, вместо $description = $_POST['description']; я сделал $description = mysqli_real_escape_string($link, $_POST['description']); , но это все еще не работает
Голосование за лучший ответ
Александр Волков Мудрец (11209) 1 месяц назад
 <?php  
if (!isset($_COOKIE['user'])) {
header("Location: registration.php");
exit();
}

$host = 'localhost';
$user = 'root';
$pass = '';
$name = 'forum';
$link = mysqli_connect($host, $user, $pass, $name);

if (!$link) {
die("Ошибка подключения к базе данных: " . mysqli_connect_error());
}

$timevar = mysqli_real_escape_string($link, $_COOKIE['user']);
$result = mysqli_query($link, "SELECT id FROM `users` WHERE `name` = '$timevar'");

if (!$result || mysqli_num_rows($result) == 0) {
die("Ошибка: пользователь не найден.");
}

$id = mysqli_fetch_assoc($result)['id'];

if (!empty($_POST['description'])) {
$description = mysqli_real_escape_string($link, $_POST['description']);
$query = "UPDATE profiles SET description='$description' WHERE id=$id";

if (!mysqli_query($link, $query)) {
die("Ошибка выполнения запроса: " . mysqli_error($link));
}
header("Location: myprofile.php");
exit();
}

if (!empty($_POST['newdescription'])) {
$newdescription = mysqli_real_escape_string($link, $_POST['newdescription']);
$query = "UPDATE profiles SET description='$newdescription' WHERE id=$id";

if (!mysqli_query($link, $query)) {
die("Ошибка выполнения запроса: " . mysqli_error($link));
}
header("Location: myprofile.php");
exit();
}

if (!empty($_POST['website']) && !empty($_POST['site_name'])) {
$website = mysqli_real_escape_string($link, $_POST['website']);
$site_name = mysqli_real_escape_string($link, $_POST['site_name']);
$query = "UPDATE profiles SET `website`='$website', `site_name`='$site_name' WHERE id=$id";

if (!mysqli_query($link, $query)) {
die("Ошибка выполнения запроса: " . mysqli_error($link));
}
header("Location: myprofile.php");
exit();
}

if (!empty($_POST['newwebsite']) && !empty($_POST['newsite_name'])) {
$newwebsite = mysqli_real_escape_string($link, $_POST['newwebsite']);
$newsite_name = mysqli_real_escape_string($link, $_POST['newsite_name']);
$query = "UPDATE profiles SET `website`='$newwebsite', `site_name`='$newsite_name' WHERE id=$id";

if (!mysqli_query($link, $query)) {
die("Ошибка выполнения запроса: " . mysqli_error($link));
}
header("Location: myprofile.php");
exit();
}

var_dump($_POST);
?>
step Мастер (1475) 1 месяц назад
у тебя: вывод: array(2) { ["site_name"]=> string(18) "телеграмм" ["website"]=> string(15) " t.me/xxxxxx " }

т.е. ни одно условие не выполняется. а что ты ждал от своего кода?
Похожие вопросы