2014-11-17 2 views
0

Я использую AJAX для удаления строк в моем db, ajax отлично передает идентификатор, но я хочу, чтобы иметь возможность использовать сеанс, который уже присутствует как добавленное поле, чтобы убедиться, что пользователи не могут . удалить без входа вAjax передается переменная сеанса PHP

Вот мой PHP-файл:

if(!isset($_SESSION['username'])) 
{ 
    echo "<p>You must be logged in to view this page.</p>"; 
} 
else 
    session_start(); 

error_reporting(E_ALL); 
ini_set('display_errors', 1); 
require_once './db/conn.php'; 

if(isset($_GET['delete'])) { 
    $user = $_SESSION['username']; 
    $sqldel = 'DELETE FROM _bookmarks WHERE bookmark_id = :ID AND username = :USER'; 
    $preparedStatement = $conn->prepare($sqldel); 
    $preparedStatement->execute(array(':ID' => $_GET['delete'],':USER' => $user)); 
} 

Это не похоже, чтобы найти сеанс, чтобы удалить его и я не получаю никаких ошибок из консоли. Он работал, после чего я вышел, чтобы повторить попытку, после чего он перестал работать. Я добавил session_start(), чтобы убедиться, но это тоже не работает.

если я иду прямо на страницу, тогда он говорит, что мне нужно войти в систему, в котором я есть.

+2

@dave Неприемлемый. OP использует подготовленные заявления. Проверяйте факты. – Terry

ответ

1

Начало сеанса связи должно быть в верхней части страницы. Вы проверяете, существует ли $_SESSION['username'] до начала сеанса:

// Move session_start() here 
session_start(); 

// This should now check for this session variable 
if(!isset($_SESSION['username'])) { 
    echo "<p>You must be logged in to view this page.</p>"; 
} 
else { 
    error_reporting(E_ALL); 
    ini_set('display_errors', 1); 
    require_once './db/conn.php'; 
    if(isset($_GET['delete'])) { 
     $user = $_SESSION['username']; 
     $sqldel = 'DELETE FROM _bookmarks WHERE bookmark_id = :ID AND username = :USER'; 
     $preparedStatement = $conn->prepare($sqldel); 
     $preparedStatement->execute(array(':ID' => $_GET['delete'],':USER' => $user)); 
    } 
} 
+0

Спасибо Раслатт! (злобное имя кстати) –

+0

Спасибо! Я выбрал свою ручку с предельной осторожностью .....: D – Rasclatt

Смежные вопросы