@Mosapi

Не срабатывает session при записи данных в mysql, при отправке с помощью fetch?

По клику на кнопку отправляю несколько переменных с помощью fetch таким образом:
var button2 = document.querySelector("#tybl");
button2.addEventListener("click", function() {
			//console.log("Кнопка нажата сохранить.");
			var finc ='save';
			var soloma = document.querySelector("#tl").innerHTML;
			var kit = lad_id;
			var par = [finc, soloma, kit];
			var formData = new FormData();
			for(var i=0;i<3;i++){
				formData.append("par_"+i, par[i]);
			}
			fetch('../system/gen.php', {
			      method: 'POST',
    		body: formData
			}).then(function(response){
				console.log("Watch in mysql db");
				//document.getElementById("boro").innerHTML = response.text();
			}).catch(function(error){
			   console.log("Error");
			});
		});


на обработчик php. В итоге не происходит запись в базу данных, потому что не инициализируется сессия.
Поискал в сети рекомендации, но толкового решения не нашел.
- session_start(); прописана в самом верху
- В куках id сессии меняется ,как и должно быть.
- Прописал var_dump($_SESSION)
итог:
array(0) {
}

в ошибках php ругается на неопределенный индекс 'user_id' из $_SESSION['user_id'] - что собственно логично, раз сессия не определяется.

структура обработчика php:
session_start();
var_dump($_SESSION);
require_once ('../func/tobase.php');//подключение к базе

if(isset($_POST)) 
{
$dt_j = $_POST['par_0']; //save
$da_is = $_POST['par_1']; //data
$da_ls = $_POST['par_2']; //id

if($dt_j == 'save'){
$nn_new = mysqli_query($link, "SELECT 1 FROM l_projects WHERE id='{$da_ls}'and author='{$_SESSION['user_id']}'");
$orage = mysqli_num_rows($nn_new);
if($orage != 0){
mysqli_query($link, "UPDATE `l_projects` SET `bl1` = '{$da_is}' WHERE `id`='{$da_ls}' and `author` = '{$_SESSION['user_id']}'");// 
}
}
}

Убираю author = '{$_SESSION['user_id']}' и запись в базу идет. Что вполне логично, раз ошибка никак этому не мешает.
Что самое странное, аналогичные действия отправленные на этот же обработчик, но из jquery обычным ajax, прекрасно работают и запись производят. Мб дело в fetch или что я делаю не так?
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
@Mosapi Автор вопроса
Вообщем решение найдено.
Как я понимаю, вместе с fetch необходимо передавать и сессию(если можно так выразиться). Т. Е. Необходимо в параметры запроса добавить - credentials. Написав типо вот так.
... 
fetch('../system/gen.php', {
            method: 'POST',
            Credentials: 'same-origin' , 
    	    body: formData
      })
...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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