Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

TopCraft [БАГ]

Ну зачем некропостишь?
Ну зачем апать и переапывать старую и уже неактуальную тему?
Рас уж вспомнили о топкрафт. Вот вам pdo версия скрипта голосований.

Код:
<?php
$db_host            = 'localhost'; // Ip-адрес MySQL
$db_port            = '3306';      // Порт базы данных
$db_user            = 'root';      // Пользователь базы данных
$db_pass            = 'root';      // Пароль базы данных
$db_database        = 'w';        //База данных
$db_table            = 'iConomy';  //Таблица Fe economy
$secretkey          = 'zenit';    //Ваш секретный ключ на TopCraft.Ru (Настраивается в Настройках проектов --> Поощрения)
$iconomy            = 1000;        //Количество денег, которое получит игрок за голосование.
@$timestamp          = $_POST['timestamp']; //Передает время, когда человек проголосовал за проект
@$username          = $_POST['username']; //Передает Имя проголосовавшего за проект
if (!preg_match("/^[a-zA-Z0-9_]+$/", $username)) die("Bad login");
if (@$_POST['signature'] != sha1($username.$timestamp.$secretkey)) die("hash mismatch");
try {
    $db = new PDO("mysql:host=$db_host;port=$db_port;dbname=$db_database", $db_user, $db_pass);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->exec("set names utf8");

    $stmt = $db->prepare("SELECT username FROM $db_table WHERE username = :username");
    $stmt->bindValue(':username', $username);
    $stmt->execute();
    if($stmt->rowCount()) {
            $stmt = $db->prepare("UPDATE $db_table SET balance = balance + $iconomy WHERE username = :username");
            $stmt->bindValue(':username', $username);
            $stmt->execute();
            echo "ok";
    } else { echo "no";}
} catch(PDOException $pe) {
    die("error");
}
?>
 
Ну зачем апать и переапывать старую и уже неактуальную тему?
Рас уж вспомнили о топкрафт. Вот вам pdo версия скрипта голосований.

Код:
<?php
$db_host            = 'localhost'; // Ip-адрес MySQL
$db_port            = '3306';      // Порт базы данных
$db_user            = 'root';      // Пользователь базы данных
$db_pass            = 'root';      // Пароль базы данных
$db_database        = 'w';        //База данных
$db_table            = 'iConomy';  //Таблица Fe economy
$secretkey          = 'zenit';    //Ваш секретный ключ на TopCraft.Ru (Настраивается в Настройках проектов --> Поощрения)
$iconomy            = 1000;        //Количество денег, которое получит игрок за голосование.
@$timestamp          = $_POST['timestamp']; //Передает время, когда человек проголосовал за проект
@$username          = $_POST['username']; //Передает Имя проголосовавшего за проект
if (!preg_match("/^[a-zA-Z0-9_]+$/", $username)) die("Bad login");
if (@$_POST['signature'] != sha1($username.$timestamp.$secretkey)) die("hash mismatch");
try {
    $db = new PDO("mysql:host=$db_host;port=$db_port;dbname=$db_database", $db_user, $db_pass);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->exec("set names utf8");

    $stmt = $db->prepare("SELECT username FROM $db_table WHERE username = :username");
    $stmt->bindValue(':username', $username);
    $stmt->execute();
    if($stmt->rowCount()) {
            $stmt = $db->prepare("UPDATE $db_table SET balance = balance + $iconomy WHERE username = :username");
            $stmt->bindValue(':username', $username);
            $stmt->execute();
            echo "ok";
    } else { echo "no";}
} catch(PDOException $pe) {
    die("error");
}
?>
Можешь дать подробную инструцию юзанья
 
Да ну не разъясняйте эти дыры. Ибо просто испортите хороший top.
 
Объясни принцип работы. Не бага, а вообще системы.
Баг я сам нашел ;)
Он скинул скрипт голосований, который добавляет на счет игрока деньги за голосование в топе, просто в нем используется PDO, а не стандартный mysql.
Для использования нужно заполнить поля для подключения к базе с таблицами пользователей и iConomy и секретный ключ топа, который можно поменять/посмотреть в профиле topcraft.
 
Он скинул скрипт голосований, который добавляет на счет игрока деньги за голосование в топе, просто в нем используется PDO, а не стандартный mysql.
Для использования нужно заполнить поля для подключения к базе с таблицами пользователей и iConomy и секретный ключ топа, который можно поменять/посмотреть в профиле topcraft.
омг. Вас ждать, я сам разобрался.
Я думал пользователя будет перенаправлять на Result URL, а там походу curl'ом запрос идёт.
Давай мне, по объясняй, что такое mysql и pdo
 
омг. Вас ждать, я сам разобрался.
Я думал пользователя будет перенаправлять на Result URL, а там походу curl'ом запрос идёт.
Давай мне, по объясняй, что такое mysql и pdo
Просто сказанное мной было очевидно, вот я и решил что объясняю нубам.
 
принцип работы это схема
Topcraft отправляет POST запрос на скрипт, который сверяет полученный секретный ключ с тем который вписан в настройках, при совпадении проверяет логин пользователя на наличие в таблице пользователей, при наличии пополняет ему iConomy счет на указанную сумму.
P.S.
Это для тех кто решит ещё раз спросить.
 
Я же вам скинул. А оригинал на mysql старом в настройке бонусов. Только там непонятно зачем перенадув с одних переменных на другие идет и другая куча кода ниочем. И нет проверки если ника в бд нету, будет sqlerror при отсутствие ника.
ты дал топкрафт, а мне нужен want2vote
 

Поделиться этой страницей

Назад
Верх