Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция удаления комментария, если зашёл под админом 
:(
    Опции темы
zluka
Дата 4.3.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 27.7.2006

Репутация: нет
Всего: 2



Есть вывод комментариев к статье. Если зайти под админом, то напротив каждого комментария появляеться небольшая картинка в ввиде ссылки:
Код

if( isset( $_COOKIE['time'] ) && isset( $_COOKIE['name']=='admin' ) && check() == TRUE )  //проверка является ли вошедший админом
{
    echo "<span class='admin'><a href='articles.php?id={$id}&del={$f_comments['cid']}'><img src='images/remove file.png'></a></span>";
    //{$id} - это id статьи; {$f_comments['cid']} - это id комментария этой статьи
}

и вот сама реализация удаления комментария из БД:
Код

if(!empty($_GET['del']))
{
    $del = $_GET['del'];
    $query_delete = mysql_query("DELETE FROM comments_article WHERE cid={$del}");

    header("Location: articles.php?id={$id}#comments");
}

На сколько это все безопасно, я имею виду слышал, что "если шальной робот или прога типа Google Desctop Index'а, по случайному недосмотру, пройдется по таким ссылкам - будет очень грустно"?


--------------------
user posted image
PM MAIL   Вверх
enof
Дата 4.3.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



zluka, Ну лучше всего админ часть вынести в отдельный раздел.
Или при удалении проверять, является ли удаляющий админом.

И ваш код к тому же допускает sql-инъекцию.

Это сообщение отредактировал(а) enof - 4.3.2009, 14:12
PM MAIL ICQ Skype   Вверх
bars80080
Дата 4.3.2009, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



ну и можно добавить для таких кардинальных вещей запрос на подтверждение, хотя бы confirm
PM MAIL WWW   Вверх
zluka
Дата 4.3.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 27.7.2006

Репутация: нет
Всего: 2



Цитата(enof @  4.3.2009,  14:11 Найти цитируемый пост)
И ваш код к тому же допускает sql-инъекцию.

А так:
Код

$query_delete = mysql_query("DELETE FROM comments_article WHERE cid=" . mysql_escape_string({$del}));



--------------------
user posted image
PM MAIL   Вверх
MoLeX
Дата 4.3.2009, 14:28 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Хе.
Как помнится существуют плагины гуляющие по ссылкам и сохраняющие результат в кэш для последующего быстрого обращения к страницы. Так вот допустим у Васи стоит такой плагин, как думаешь что останется от твоих рисунков и вообще данных?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
enof
Дата 4.3.2009, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



zluka, тут лучше привести значение к целому числу.
Чтобы случайно не накосячить,лучше написать свою функцию для запросов с бд (что-то типа printf()) либо использовать существующие.

PM MAIL ICQ Skype   Вверх
MoLeX
Дата 4.3.2009, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



так что в этом случае лучший друг для изменения данных - метод POST, а не GET (т.е. используем кнопочки)


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
enof
Дата 4.3.2009, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



MoLeX, разве?
Разница только в том, что ссылку легче спалить, чем адрес обработчика формы и требуемые поля.

Лучше засунуть админ часть в отдельный каталог и повесить базовую http-авторизацию.
PM MAIL ICQ Skype   Вверх
zluka
Дата 4.3.2009, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 278
Регистрация: 27.7.2006

Репутация: нет
Всего: 2



Пожайлуста приведите пример, как это все грамотно реализовать, а то я чето запутался..
Спасибо.


--------------------
user posted image
PM MAIL   Вверх
bars80080
Дата 4.3.2009, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(zluka @  4.3.2009,  13:21 Найти цитируемый пост)
mysql_escape_string

тогда уж лучше mysql_real_escape_string


Цитата(enof @  4.3.2009,  13:29 Найти цитируемый пост)
zluka, тут лучше привести значение к целому числу.

имеется ввиду $del = intval($_GET['del']); и никаких escape_string уже не надо
PM MAIL WWW   Вверх
MoLeX
Дата 4.3.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(enof @  4.3.2009,  14:39 Найти цитируемый пост)
Разница только в том, что ссылку легче спалить, чем адрес обработчика формы и требуемые поля.

Гыы... если грамотно сделана авторизация и проверка прав то хоть пусть все ее видят, толку от нее ноль будет неавторизированным

Добавлено @ 14:50
Цитата(enof @  4.3.2009,  14:39 Найти цитируемый пост)
Лучше засунуть админ часть в отдельный каталог и повесить базовую http-авторизацию. 


даже если и так, то что мешает плагину прогулятся по ссылкам? авторизация то уже выполнена...

Добавлено @ 14:51
enof, просто я как то раз нагрелся. у заказчика стоял неизвестный мне плагин гуляющий по ссылкам. 
и в этом случае тока два выхода
1. метод пост
2. каждое действие подтверждать вводом пароля например

Это сообщение отредактировал(а) MoLeX - 4.3.2009, 14:53


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
enof
Дата 4.3.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 837
Регистрация: 23.1.2009
Где: Санкт-Петербург

Репутация: 30
Всего: 35



MoLeX, спс за инфу.
zluka, Насчет скул-инъекций понаписано очень много всего, сам разберешься.
Код

<?php
if( is_admin() )  //проверка является ли вошедший админом
{
  echo "<form method=post>
    <input type=hidden name='id' value='$id'>
    <input type=hidden name='del' value='{$f_comments['cid']}'>
    <input type='submit' name='go_del' value='Удалить'></form>";
}
?>

<?php
if(isset($_POST['go_del']))
{
  if(is_admin())
  {
    $del = intval($_GET['del']);
    $query_delete = mysql_query("DELETE FROM comments_article WHERE cid={$del}");
  }
}
?>

Ну вот примерно схема, как делать.

Это сообщение отредактировал(а) enof - 4.3.2009, 15:18
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.