2016-08-25 4 views
-1

Я видел много разных подходов для передачи данных javaScript и PHP, но я сомневаюсь в эффективности и точности. Я имею в виду, например, что у вас есть платформер javaScript (игра), который имеет 10 уровней. У вас много пользователей, у каждого из которых есть/владеют другой учетной записью. Вы хотите сделать эту игру, чтобы пользователь закрыл вкладку браузера или сохранил и хочет воспроизвести ее позже; он/она не должен перезапускаться с уровня 1. Вместо этого вы хотите, чтобы при сохранении пользователя вы сохранили текущий номер уровня, который был сохранен пользователем, в базе данных mySQL в его или ее учетной записи . Теперь единственной проблемой является то, что количество уровней, которые пользователь выполнил, хранится в переменной javaScript, но вам нужно каким-то образом передать/получить эту переменную в PHP, чтобы сделать это, как бы вы это сделали? Я видел document.write (< set php variable здесь >), но я не думаю, что это самый эффективный способ приблизиться к этому. Теперь я задаю вопрос об эффективности только после того, как выясню другой способ сделать это просто по той причине, что в текущем методе, который я использую, больше не задействовано обратное вычисление. Так, вообще говоря, есть ли еще более эффективные решения, которые являются более гибкими?Каков наиболее эффективный способ передачи данных на PHP и JavaScript?

+0

Добро пожаловать в SO. Пожалуйста, посетите [help], чтобы узнать, почему этот вопрос, вероятно, будет закрыт как не относящийся к теме – mplungjan

ответ

1

Мой подход заключается в том, чтобы сохранить готовый уровень через вызов AJAX после того, как пользователь успешно завершил уровень. Таким образом, вам не нужно беспокоиться о том, что пользователь закрывает браузер, т. Е. Если он это делает, и он не закончил уровень, то он должен повторить последний уровень, который он не закончил.

EDIT:

JS скрипт:

$.ajax({ 
    method: "POST", 
    url: "update_finished_level.php", 
    data: { user_id: "1", level_finished: "4", some_other_parameter: "some value" } 
}) 
.done(function(msg) { 
    if(msg == 1) { 
     // OK 
    } else { 
     // SOMETHING WENT WRONG 
    } 
}); 

PHP скрипт (предположим, что вы используете MySQLi для подключения к БД):

$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db"); 

if ($link->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

if($mysqli->query("UPDATE user SET level_finished = " . $_POST['level_finished'] . " WHERE user_id = " . $_POST['user_id']) === TRUE) { 
    echo 1; 
} else { 
    echo 0; 
} 

BEWARE: Вы должны избежать любой выход что вы получаете от пользователя, так что, по крайней мере, используйте функцию mysql_real_escape_string, которая BTW больше не защищена.

Я предлагаю вам использовать что-то вроде библиотеки PHP PDO: http://php.net/manual/en/book.pdo.php. Есть много учебников, где можно использовать его с подготовленными операторами.

+0

Хорошая точка, но проблема в том, что, как я уже сказал, мне нужно использовать mySQL, потому что у каждого пользователя есть другая учетная запись. –

+0

mysql не имеет никакого отношения к вызову ajax. Вы можете сделать ajax-вызов с помощью javascript, а затем обработать его в php и mysql. – Unex

+0

Это то, что я допрашиваю, как можно подключить (в данном случае) AJAX с php; поскольку наиболее вероятным подходом к AJAX является функция jQuery '$ .ajax'. –

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