관리자가 간단한 양식으로 링크를 추가하거나 제거 할 수있는 탐색 모음을 만들었습니다. 양식을 제출하여 링크를 추가하면 AJAX 호출이 만들어져 mySQL 데이터베이스에 새 정보가 추가됩니다.AJAX 요청시 PHP 세션이 인식되지 않음
이$('.nav ul').load('/getnav.php');
파일 getnav.php은 다음과 같다 :
는<?php
require('/connect.php');
$query = "SELECT id, title, url
FROM nav
ORDER BY position ASC";
$result = $mysqli->query($query);
while ($data = $result->fetch_assoc()) {
if (!empty($_SESSION['valid']))
echo ' <div class="container"><button type="button" name="'.$data['id'].'" class="delButton" alt="Delete"></button></div>
';
echo ' <a href="'.$data['url'].'" alt="'.$data['title'].'">'.$data['title'].'</a>
';
}
?>
문제는 콜백 함수의 일환으로, 탐색 바는 다음 코드 줄을 사용하여 새 링크를 포함하도록 업데이트됩니다 AJAX 호출에서 탐색 막대가 업데이트되면 링크 만 표시되고 삭제 버튼은 사라집니다. $_SESSION['valid']
이 설정되어 있으므로 if 바로 뒤에있는 코드가 실행되어야합니다. 그러나 AJAX 호출이 끝난 후 코드가 누락되면 if가 발생합니다. 내가 가지고있는 유일한 설명은 getnav.php가 .nav ul
에로드 될 때 세션에 액세스 할 수 없다는 것입니다. 왜 그 사람이 누군지 알아?
getnav.php의 어느 곳에서나 세션을 시작 했습니까? 세션 변수에 액세스하려고 시도하지만 세션이 시작될 때까지는 볼 수 없습니다. – clementine
아마 그럴 것입니다. html에서'require ('getnav.php')'를 사용하고 있었고 getnav.php에서이 페이지를 제거해야했습니다. 나는 그걸 어떻게 든 작동시켜야하고 그게 문제인지를 알아봐야 할 것입니다. – fvgs
그래서 html 페이지에'session_start()'가 있어야하고, 페이지에'require ('/ getnav.php')'가 있어야하고 getnav.php도'session_start()'가 있어야합니다. 세션을 파괴하지 않고이 작업을 수행하는 방법에 대한 아이디어. 분명히 같은 페이지에서 session_start()를 두 번 호출하지 않아도됩니까? – fvgs