Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление
  2. Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Веб [Php] Добавление прав в пермишинс

Тема в разделе "Веб-обвязки и лаунчеры", создана пользователем bat9s, 31 июл 2014.

  1. Автор темы
    bat9s

    bat9s Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    bat9s
    Мой 1 скрипт.
    Есть защита от sql инъекций и xss
    <?
    define('INCLUDE_CHECK',true);
    ////////////////////////
    $config = array (
    'host' => 'localhost',
    'user' => 'bat9s',
    'pass' => '123456',
    'base' => '3game',
    'table' => 'permissions', );
    ////////////////////////
    $mysqli = new mysqli($config['host'], $config['user'], $config['pass'], $config['base']) or die(mysqli_connect_error());
    $mysqli->query('SET names UTF8') or die($mysqli->error);
    ////////////////////////
    if (isset($_POST['submit'])) {
    $group = $mysqli->real_escape_string($_POST['group']);
    $permissions = $mysqli->real_escape_string($_POST['permissions']);
    $xss = strip_tags($_POST["group"]);
    $xss2 = strip_tags($_POST["permissions"]);
    $mysqli->query("INSERT INTO {$config['table']} (`name`, `type`, `permission`) VALUES ('$group', '0', '$permissions')");
    echo"Permission $permissions был добавлен в группу $group";
    }
    ?>
    <center><form method="post" action="script.php">
    <br><br><br><br>
    <input type="Text" name="group" placeholder="Группа" required />
    <input type="Text" name="permissions" placeholder="Право" required />
    <input type="submit" name="submit" value="Добавить" /><br>
    </form></center>
    <center><h3>Автор bat9s<br>Мой 1 скрипт<br>спс за помощь ilucha</h></center>
     

    Вложения:

    • script.zip
      Размер файла:
      1 КБ
      Просмотров:
      39
    Последнее редактирование: 2 авг 2014
  2. Хостинг MineCraft
    <
  3. MySt1k

    MySt1k Старожил Пользователь

    Баллы:
    173
    Очень простой скрипт, перепиши под mysqli или pdo
     
  4. Автор темы
    bat9s

    bat9s Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    bat9s
    ну я только начал изучать php, попробую под mysqli, но мне нужен будет тестер )
     
  5. MySt1k

    MySt1k Старожил Пользователь

    Баллы:
    173
    Хах, что там тестировать то? Там одна форма и 1 запрос.
     
  6. Zard0nic

    Zard0nic Старожил Пользователь

    Баллы:
    153
    Знакомься, это - Tab. Он помогает другим людям понять твой код с помощью выравнивания строк.
    Также хочу тебя познакомить с HTML - язык разметки веб-страниц. Каждая страница требует "скелета" из тегов <html>, <head> и <body>.
    PHP:
    $quary
    Кхм, query вроде.
    И да, как писали выше - mysql устарел. Советую переходить на mysqli, он будет проще PDO.
    //Зачем создавать отдельный файл конфига? Это неудобно, учитывая, что весь код занимает от силы 30 строк.
     
  7. Автор темы
    bat9s

    bat9s Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    bat9s
    в конфиг добавим
    $connect2 = new mysqli($host, $user, $pass, $base);
    в скрипт $mysqli->query("INSERT INTO $table (`id`, `name`, `type`, `permission`, `world`, `value`) VALUES (0, '$group', 0, '$permissions', '', '')"); так?
     
  8. Zard0nic

    Zard0nic Старожил Пользователь

    Баллы:
    153
    Собсна, в конфиге все остается также (но я писал, что лучше его снести), а инициализация объекта происходит в скрипте.
     
  9. Автор темы
    bat9s

    bat9s Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    bat9s
    <?
    //Мой 1 скрипт//
    define('INCLUDE_CHECK',true);
    $host = 'localhost';
    $port = '3306';
    $user = 'bat9s';
    $pass = '123456';
    $base = '3game';
    $table = 'permissions';
    $connect = mysql_connect($host.':'.$port, $user, $pass) or die('Не удалось соединиться: ' . mysql_error());//не трогать!
    mysql_select_db($base);//не трогать!
    //$connect2 = new mysqli($host, $user, $pass, $base);

    if (isset($_POST['submit'])) {
    $group = mysql_real_escape_string($_POST['group']);
    $permissions = mysql_real_escape_string($_POST['permissions']);
    $query = mysql_query("INSERT INTO $table (`id`, `name`, `type`, `permission`, `world`, `value`) VALUES (0, '$group', 0, '$permissions', '', '')");
    $mysqli = mysqli_query("INSERT INTO $table (`id`, `name`, `type`, `permission`, `world`, `value`) VALUES (0, '$group', 0, '$permissions', '', '')");
    echo"Permission $permissions был добавлен в группу $group";
    }
    ?>
    <center><form method="post" action="script.php">
    <br><br><br><br>
    <input type="Text" name="group" placeholder="Группа" required />
    <input type="Text" name="permissions" placeholder="Право" required />
    <input type="submit" name="submit" value="Добавить" /><br>
    </form></center>
    <center><h3>Автор bat9s<br>Мой 1 скрипт</h></center>
     
  10. Zard0nic

    Zard0nic Старожил Пользователь

    Баллы:
    153
    И что? Дальнейшая работа будет?
     
  11. Автор темы
    bat9s

    bat9s Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    bat9s
    нет
     
  12. blogger2

    blogger2 Старожил Пользователь

    Баллы:
    123
    Skype:
    ilja0176
    Имя в Minecraft:
    XuPoH
    Так удали тему,твои первые работы твой первый говнокод никому не нужен. И последующий. Сначала научись, потом делай, и только то, что пригодится.
     
  13. BlackSun

    BlackSun Активный участник Пользователь

    Баллы:
    78
    Кому и нахрена может понадобиться этот скрипт? Выложил, чтобы похвататься, что смог несколько строк на пыхе написать (явно подглядывая в обвязку сашка..)?
    Зачем было защищать конфиг от прямого запуска, если этот запуск ничего не изменит? Внутри никакой управляющей логики и никаких входных параметров от пользователя.
    Зачем было совать соединение с базой в конфиг?
    И зачем создавать подключение к базе, даже если оно не будет использоваться как минимум в половине случаев?
    Зачем вообще этому скрипту конфиг в отдельном файле?
    Почему нет никакой защиты от постороннего запуска? Чтобы любой мог поиграться с пермами?
    Гордо написал "защита от sql-иньекций", а про XSS забыл.
    Про устаревший mysql_* и кривую разметку уже написали, не буду повторяться.

    Итого - ~30 строчек кода и столько замечаний. Хочешь изучать php - изучай, но выкладывать свои "поделки" не стоит, в этом разделе и без того не так много толковых работ.
     
  14. blogger2

    blogger2 Старожил Пользователь

    Баллы:
    123
    Skype:
    ilja0176
    Имя в Minecraft:
    XuPoH
    Толковых работ в сфере PHP я тут видел только 2 - Ameden и WebMCR, так что не преувеличивай.
    Насчёт ТС, я уже говорил, учись PHP, но только для СЕБЯ, нам тут такое ущербное дерьмо не нужно.
     
  15. Zard0nic

    Zard0nic Старожил Пользователь

    Баллы:
    153
    Собсна, ощущение, что вы ему приказываете, что делать.
    Ameden - очередная никому не нужная цмс, каких полно на просторах. До сих пор не понимаю, почему она была на РБ, а не на форумах PHP.
     
  16. blogger2

    blogger2 Старожил Пользователь

    Баллы:
    123
    Skype:
    ilja0176
    Имя в Minecraft:
    XuPoH
    Он написал её от нечего делать. Но в ней хоть какой-то прок, там глаза не лезут на лоб от говнокода и raw-запросов в БД прямо из GET. Автозагрузка классов, деструкции. У него там полно полезных и удобных плюх.
    Кому я приказываю? Топикстартеру? Я ему даю "дружеский" совет. Чтобы он не публиковал ересь, от которой голова болит. Вот и всё тут. Мне кажется, каждый третий на этом форуме может написать
    PHP:
    mysql_connect("localhost","user","pass");
    mysql_select_db("db");
    $q mysql_query("insert into `permissions` (id,name,type,permission) values(null,'user','essentials.afk')") || die("ERROR1!!1");
    echo 
    "Ета мой первий скрипт нисудити строга я навичог и не знаю про то што в phpmyadmin есть тоже самое даже лутше";
    А сделать что-то стоящее - единицы.
     
  17. oleg599

    oleg599 Активный участник Пользователь

    Баллы:
    88
    Брр, mysql? Автор, не позорься, в 5.6 его уже не будет, перепиши на Mysqli или PDO.
     
  18. Автор темы
    bat9s

    bat9s Активный участник Пользователь

    Баллы:
    68
    Имя в Minecraft:
    bat9s
    Все ваши замечание я выслушал, а вот под mysqli код... да и + xss защита
    <?
    define('INCLUDE_CHECK',true);
    ////////////////////////
    $config = array (
    'host' => 'localhost',
    'user' => 'bat9s',
    'pass' => '123456',
    'base' => '3game',
    'table' => 'permissions', );
    ////////////////////////
    $mysqli = new mysqli($config['host'], $config['user'], $config['pass'], $config['base']) or die(mysqli_connect_error());
    $mysqli->query('SET names UTF8') or die($mysqli->error);
    ////////////////////////
    if (isset($_POST['submit'])) {
    $group = $mysqli->real_escape_string($_POST['group']);
    $permissions = $mysqli->real_escape_string($_POST['permissions']);
    $xss = strip_tags($_POST["group"]);
    $xss2 = strip_tags($_POST["permissions"]);
    $mysqli->query("INSERT INTO {$config['table']} (`name`, `type`, `permission`) VALUES ('$group', '0', '$permissions')");
    echo"Permission $permissions был добавлен в группу $group";
    }
    ?>
    <center><form method="post" action="script.php">
    <br><br><br><br>
    <input type="Text" name="group" placeholder="Группа" required />
    <input type="Text" name="permissions" placeholder="Право" required />
    <input type="submit" name="submit" value="Добавить" /><br>
    </form></center>
    <center><h3>Автор bat9s<br>Мой 1 скрипт<br>спс за помощь ilucha</h></center>
     
  19. fles

    fles Старожил Пользователь

    Баллы:
    153
    Skype:
    VadimVgb
    Имя в Minecraft:
    fles
    Ухахахаха.... Это бл*дь гениально.
    Код:
    $group = $mysqli->real_escape_string($_POST['group']);
    $permissions = $mysqli->real_escape_string($_POST['permissions']);
    $xss = strip_tags($_POST["group"]);
    $xss2 = strip_tags($_POST["permissions"]);

    Есть такая хорошая вещь у PDO и MySQLi, как подготовленный запрос.
     
  20. Evan

    Evan Старожил Пользователь

    Баллы:
    123
    Вообще, ненавижу такую хрень, где надо всё время сувать по праву, легче построчно всё это добовлять, таким типом.
    PHP:
    $group $mysqli->real_escape_string($_POST['group']);
    $explode explode("\n"$_POST['permissions']);
    foreach ( 
    $explode as $key => $value ) {
    $explode[$key] = $mysqli->real_escape_string($explode[$key]); //вот таким вот образом
    $mysqli->query("INSERT INTO `permissions` ( `name`, `type`, `permission` ) VALUES ( '{$group}', '0', '{$explode[$key]}' )");
    }
    А добавлять в поля так :
    alalaa.ssdasd
    aslsadasdas.sadasd
    И ещё, не используй mysql и не создавай тонну не нужных переменных. Код можно упростить до минимума.[DOUBLEPOST=1406994101,1406993969][/DOUBLEPOST]И да, ты от xss не защитился. Делай так,
    PHP:
    $mysqli->real_escape_string(htmlspecialchars($_POST['group'], ENT_QUOTES));
    Или что бы удалять теги
    PHP:
    $mysqli->real_escape_string(strip_tags($_POST['group']));
     
  21. oleg599

    oleg599 Активный участник Пользователь

    Баллы:
    88
    Быдлорешение, подготовленные запросы для кого придумали?
     

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