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

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

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
    script.zip
    Размер файла
    1 КБ
    Просмотров
    40
Последнее редактирование:
Очень простой скрипт, перепиши под mysqli или pdo
 
Знакомься, это - Tab. Он помогает другим людям понять твой код с помощью выравнивания строк.
Также хочу тебя познакомить с HTML - язык разметки веб-страниц. Каждая страница требует "скелета" из тегов <html>, <head> и <body>.
PHP:
$quary
Кхм, query вроде.
И да, как писали выше - mysql устарел. Советую переходить на mysqli, он будет проще PDO.
//Зачем создавать отдельный файл конфига? Это неудобно, учитывая, что весь код занимает от силы 30 строк.
 
в конфиг добавим
$connect2 = new mysqli($host, $user, $pass, $base);
в скрипт $mysqli->query("INSERT INTO $table (`id`, `name`, `type`, `permission`, `world`, `value`) VALUES (0, '$group', 0, '$permissions', '', '')"); так?
 
в конфиг добавим
$connect2 = new mysqli($host, $user, $pass, $base);
в скрипт $mysqli->query("INSERT INTO $table (`id`, `name`, `type`, `permission`, `world`, `value`) VALUES (0, '$group', 0, '$permissions', '', '')"); так?
Собсна, в конфиге все остается также (но я писал, что лучше его снести), а инициализация объекта происходит в скрипте.
 
Собсна, в конфиге все остается также (но я писал, что лучше его снести), а инициализация объекта происходит в скрипте.
<?
//Мой 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>
 
<?
//Мой 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>
И что? Дальнейшая работа будет?
 
Кому и нахрена может понадобиться этот скрипт? Выложил, чтобы похвататься, что смог несколько строк на пыхе написать (явно подглядывая в обвязку сашка..)?
Зачем было защищать конфиг от прямого запуска, если этот запуск ничего не изменит? Внутри никакой управляющей логики и никаких входных параметров от пользователя.
Зачем было совать соединение с базой в конфиг?
И зачем создавать подключение к базе, даже если оно не будет использоваться как минимум в половине случаев?
Зачем вообще этому скрипту конфиг в отдельном файле?
Почему нет никакой защиты от постороннего запуска? Чтобы любой мог поиграться с пермами?
Гордо написал "защита от sql-иньекций", а про XSS забыл.
Про устаревший mysql_* и кривую разметку уже написали, не буду повторяться.

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

Итого - ~30 строчек кода и столько замечаний. Хочешь изучать php - изучай, но выкладывать свои "поделки" не стоит, в этом разделе и без того не так много толковых работ.
Толковых работ в сфере PHP я тут видел только 2 - Ameden и WebMCR, так что не преувеличивай.
Насчёт ТС, я уже говорил, учись PHP, но только для СЕБЯ, нам тут такое ущербное дерьмо не нужно.
 
Толковых работ в сфере PHP я тут видел только 2 - Ameden и WebMCR, так что не преувеличивай.
Насчёт ТС, я уже говорил, учись PHP, но только для СЕБЯ, нам тут такое ущербное дерьмо не нужно.
Собсна, ощущение, что вы ему приказываете, что делать.
Ameden - очередная никому не нужная цмс, каких полно на просторах. До сих пор не понимаю, почему она была на РБ, а не на форумах PHP.
 
Собсна, ощущение, что вы ему приказываете, что делать.
Ameden - очередная никому не нужная цмс, каких полно на просторах. До сих пор не понимаю, почему она была на РБ, а не на форумах PHP.
Он написал её от нечего делать. Но в ней хоть какой-то прок, там глаза не лезут на лоб от говнокода и 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 есть тоже самое даже лутше";
А сделать что-то стоящее - единицы.
 
Брр, mysql? Автор, не позорься, в 5.6 его уже не будет, перепиши на Mysqli или PDO.
 
Все ваши замечание я выслушал, а вот под 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>
 
Ухахахаха.... Это бл*дь гениально.
Код:
$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, как подготовленный запрос.
 
Вообще, ненавижу такую хрень, где надо всё время сувать по праву, легче построчно всё это добовлять, таким типом.
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 и не создавай тонну не нужных переменных. Код можно упростить до минимума.
И да, ты от xss не защитился. Делай так,
PHP:
$mysqli->real_escape_string(htmlspecialchars($_POST['group'], ENT_QUOTES));
Или что бы удалять теги
PHP:
$mysqli->real_escape_string(strip_tags($_POST['group']));
 
Вообще, ненавижу такую хрень, где надо всё время сувать по праву, легче построчно всё это добовлять, таким типом.
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 и не создавай тонну не нужных переменных. Код можно упростить до минимума.
И да, ты от xss не защитился. Делай так,
PHP:
$mysqli->real_escape_string(htmlspecialchars($_POST['group'], ENT_QUOTES));
Или что бы удалять теги
PHP:
$mysqli->real_escape_string(strip_tags($_POST['group']));
Быдлорешение, подготовленные запросы для кого придумали?
 

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

Назад
Верх