Ваш AJAX-запрос, хотя и поступает из JavaScript, все же может получить доступ к состоянию сеанса вашего браузера. Вы также можете вернуться к переменной POSTed:
request.php
<?php
session_start();
// Set $dbuser and $dbpass in a secure configuration file
$dbh = new PDO('mysql:host=localhost;dbname=GotA', $dbuser, $dbpass);
if (isset($_SESSION['username']))
$player_name = $_SESSION['username'];
else
$player_name = $_POST['name'];
$stmt = $dbh->prepare('SELECT * from players where id = :playername');
$stmt->execute(array(':playername' => $player_name));
$result = $stmt->fetchAll();
Еще одна вещь, наличие асинхронных запросов, учитывающих сеанс, может привести к гонке, если вы выполняете несколько асинхронных запросов. См. эту статью для информации. Пока вы только читаете переменные сеанса, а не записываете их (или явно заканчиваете сеанс), тогда все будет в порядке. (Если у кого-то есть определенный ответ на предыдущее утверждение, пожалуйста, поделитесь в комментариях)