[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удаление определенной записи в БД с помощью php
Страницы: 1, 2
zXus
Здравствуйте! Есть таблица в БД. С помощью PHP я вывожу ее на страницу таблицей. Но мне нужно сделать так, чтобы в каждой строке была кнопка удалить.

Вот код удаления. Но не могу понять как привязать это к ссылке или кнопке...
public function delpublic () {
if (isset ($_POST['del']))
{
$id = intval($_POST['del']);
$result_delete = mysql_query ("DELETE FROM publications WHERE id_public='$id'",$db);
}
}
inpost
с $_GET было бы проще, ты бы простую ссылку оформил бы. А так тебе нужно создавать форму (<form>) и отправлять методом POST данные.
Ах да, ещё в скрипте тебе надо прописать, что если эти данные существуют, то вызывать этот метод класса.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
zXus
Подскажите, пожалуйста, как оформить ссылку? Что писать в href?
123456
zXus

код удаления:
function delpublic ($id_pub) {

$result_delete = mysql_query ("DELETE FROM publications WHERE id_public='". intval($id_pub) ."'",$db);

}

if (isset($_GET['del']))
delpublic($_GET['del']);


Ссылку оформить так:
http://site.ru/public.php?del="id_public_из_таблицы_publications" 
depp
отличная дыра! user posted image
inpost
depp
О какой дыре идёт речь? XSRF?

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
casper - gg
Цитата (depp @ 14.03.2016 - 21:07)
отличная дыра! 


отличный код, чур я буду нечетные удалять biggrin.gif
123456
depp
casper - gg

Какая дыра???

Если удаление доступно только админу, то это дырой трудно назвать
casper - gg
Цитата (123456 @ 14.03.2016 - 21:43)
Если удаление доступно только админу, то это дырой трудно назвать


по показному коду это просто доступно. Если есть защита в другом месте, разговор другой. Но нельзя не обратить на это внимание, мало ли... мож в пылу размышлений такая мелочь упущена.
depp
Цитата (123456 @ 14.03.2016 - 21:43)
depp
casper - gg

Какая дыра???

Если удаление доступно только админу, то это дырой трудно назвать

csrf-атака
Миша
Цитата (depp @ 14.03.2016 - 22:37)
csrf-атака

Если данные доступны только Админу, то как Крекер узнает что передавать?

+ Админа нужно вынудить перейти на другой сайт, или ползать по своему (для этого флешка есть с nix, кто в теме)

$_POST['del'] - del измени на что-то рандомное и не будет проблемы с CSRF

_____________
Принимаю заказы, писать в ЛС
Invis1ble
Цитата (Медведь @ 14.03.2016 - 22:43)
del измени на что-то рандомное
inpost
zXus
Ну так а сам как пробовал сделать? Показывай ты первым. Потому что код ни твой не рабочий, ни предложенный пользователями выше так же не будет работать wink.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Миша
Цитата (Invis1ble @ 15.03.2016 - 00:06)
Цитата (Медведь @ 14.03.2016 - 22:43)
del измени на что-то рандомное

Re: Админа нужно вынудить перейти на другой сайт, или ползать по своему. (Когда в Админке никогда этого не делаю и вообще сижу через другую ОС)

Прикрутить защиту от CSRF дело пары часов + разобраться что к чему и печеньки покушать, ещё пару часов.

_____________
Принимаю заказы, писать в ЛС
zXus
Не работает. :(
Вот что получилось. В ссылке я написал точное значение id_public для проверки.


/**
* Удаление публикаций
* */

public function delpublic ($id_pub) {

$result_delete = mysql_query ("DELETE FROM publications WHERE id_public='". intval($id_pub) ."'",$db);

}

/**
* Вывод списка публикаций
**/

public function showPublications(){
$query = $this->db->query("SELECT * FROM `publications`");
$return = "";
while($result = $query->fetch()){
$return .= "<tr><td>{$result->id_public}</td><td>{$result->name}</td><td>{$result->author}</td>
<td>{
$result->year}</td><td>{$result->type}</td><td><a href=\"?del=4\" >Delete</a></td></tr>";
}

return $return;
if (isset($_GET['del']))
delpublic($_GET['del']);
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.