Top.Mail.Ru
Ответы

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

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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
 <?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" }
если что не пишите что данные пользователя нужно хранить не в куки а в сессиях и подобное, проект не рассчитан на общее пользование создаю только что бы научиться

Дополнен

к каждой переменной я дополнил экранирование, вместо $description = $_POST['description']; я сделал $description = mysqli_real_escape_string($link, $_POST['description']); , но это все еще не работает

По дате
По Рейтингу
Аватар пользователя
Мастер
4мес

у тебя: вывод: array(2) { ["site_name"]=> string(18) "телеграмм" ["website"]=> string(15) " t.me/xxxxxx " }

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

Аватар пользователя
Мудрец
4мес
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
 <?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); 
?>