Есть скрипт обработки данных которые пришли от игры.
<?php
//просто надо
header ('Access-Control-Allow-Origin: *');
// принимающая часть
if(!empty($_POST['username'])) // если не узернейм не пустой
$Username = $_POST['username']; //заливаем в переменную
else
echo "username emrty !"; // а если пустое то понятно
if (!empty($_POST['scores']))// тоже самое и с очками
{
$Scores = $_POST['scores'];
}
else {
echo'Scores empty !';
}
// ВОТ ТА САМАЯ ЧАСТЬ
//название файла
$FileName = "test.txt";
//Получаем содержимое файла в виде массива
$content = file('test.txt');
// ищем юсернайм
$Found = array_search($Username, $content); // ищем в масиве имя игрока
echo $Found;
if ($Found !== false) { // если нашли
echo "I found it !";
$FoundText = $content[$Found];
unset($content[$Found]);
$FoundRazdel = explode(":", $FoundText);
$FoundRazdel[1] = $FoundRazdel[1] + $Scores;
$content[] = $FoundRazdel[0] . ":" . $FoundRazdel[1];
}
else
{
echo "I don`t found it !";
$content[] = $Username . ":" . $Scores;
}
echo $Found;
echo $FoundText;
echo $FoundRazdel;
file_put_contents($FileName, '');
foreach ($content as $key) {
file_put_contents($FileName, $key);
}
fclose($FileName);
?>
В этом скрипте неправильно работает добавление к предыдущим очкам игрока те что он набрал. Почему-то всегда (вне зависимости от того есть-ли статистика игрока в файле или нет) записывает заново его статистику. Так-же он вызывает ошибку 500 хотя я его прогнал через чекер php кода.
P.S. Я новичок в PHP и да я знаю что лучше перевести всё на базу данных но мне просто лень P.P.S Да костылей много но не огромную CRM делаем :)
test.txt
Должен быть пустой, У вас в файле // ВОТ ТА САМАЯ ЧАСТЬ
- вот вставляйте ниже это:
if (!empty($Username) && !empty($Scores))
{
$FileName = 'test.txt';
$File = file_get_contents($FileName);
$File = json_decode($File, TRUE);
if (isset($File[$Username])) {
$File[$Username]['Score'] += $Scores;
} else {
$File[$Username]['Score'] = $Scores;
}
file_put_contents($FileName, json_encode($File));
var_dump($Username);
var_dump($File[$Username]['Score']);
}
Как вариант для хранение будет использоваться json
, и данные будут храниться в формате:
Array
(
[Oleg] => 100
)
Где, Oleg
- ник игрока, а 100
очки, то бишь scores.
if (!empty($_POST['username']) && !empty($_POST['scores']))
{
$user = json_decode(file_get_contents('test.json'), true);
$nick = $_POST['username'];
if (!isset($user[$nick]))
{
$user[$nick] = $_POST['scores'];
file_put_contents('test.json', json_encode($user));
}
elseif(isset($user[$nick]))
{
$user[$nick] += $_POST['scores'];
file_put_contents('test.json', json_encode($user));
}
print_r($user);
}
else
{
echo 'Данные не поступили';
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Появилась проблема, вовремя обучения Laravel у меня появилась проблема которую не могу разобрать, прошу посмотреть: `
Есть модели Рецепт и Пост - commentable, и модель Комментарии с полиморфной связьюПодскажите, как в случае полиморфных связей создать фабрику для...
Всем доброго дняПытаюсь сделать клавиатуру с помощью API VK, по их методчике, но что-то не получается