Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 3
Регистрация: 01.06.2012
Сообщений: 141

Подбор ID (mysql запрос)

07.04.2014, 21:57. Показов 1539. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте имеется скрипт. Часть кода взята отсюда http://intop24.ru/article_15_lesson_5.php
по сути имею типа личный кабинет для каждого пользователя, каждый пользователь добавляет какую нибудь стоимость и название своего товара, при этом он может удалить свою запись нажимия кнопку.
Самое худшее, есть и не глупцы... Подставлять свои значения ид товара другого участника, при этом товар удаляется. Как то можно этому припятствовать ?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 
 <?php
//Удаляем, если что
if (isset($_GET['del'])) {
    $sql = mysql_query('DELETE FROM `products` WHERE `ID` = "'.$_GET['del'].'"');
    if ($sql) {
        echo "<p>Товар удален.</p>";
    } else {
        echo "<p>Произошла ошибка.</p>";
    }
}
 
while ($result = mysql_fetch_array($sql)) {
    echo $result['ID'].") ".$result['Name']." - <a href='?del=".$result['ID']."'>Удалить</a><br>";
}
?>
В итоге в браузере отображается так...
http://site.ru/pages/tovar.php?del=62331365
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.04.2014, 21:57
Ответы с готовыми решениями:

MySQL подбор пароля
Вот такой скрипт, перебирает пароль к одному пользователю MySQL по словарю. POST запрос - host=127.0.0.1 login=root dic=pass.txt ...

Запрос к MySQL. Через WorkBench запрос выполняется, а через клиента - нет
Добрый день! Помогите с запросом! string CommandText = &quot;SELECT * FROM sensors WHERE sensors.VehID=1001317&quot;; ...

Запрос к бд MySQL
Есть некий запрос на добавление в бд $query = &quot;INSERT INTO device SET name='&quot;.$name.&quot;', ip_addr='&quot;.$ip_addr.&quot;',...

9
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
07.04.2014, 23:04
Shur1k_ua, Во-первых, передавать данные такого плана лучше POST-запросом. Во-вторых, даже свой ID не обязательно знать юзеру и хранить его можно в сессии. Соответственно и при удалении товара, составлять запрос надо в таком плане:
PHP
1
$query = 'DELETE FROM `products` WHERE `ID` = "'.$_POST['del'].'" AND `user_id` = "'.$_SESSION['user_id'].'"';
0
0 / 0 / 3
Регистрация: 01.06.2012
Сообщений: 141
07.04.2014, 23:57  [ТС]
я наверное неправильно сформулировал вопрос. дам свой код, а то не могу понять...
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Подключаем список серверов
$host="localhost";
$user="shur1k";
$pass="111"; //установленный вами пароль
$db_name="top_servera";
$link=mysql_connect($host,$user,$pass);
mysql_select_db($db_name,$link);
/////////////////////////////////////////////
 
 
/////////Подключаем базу пользователей сайта
$queryuser = DB :: $dbh -> query("SELECT * FROM `users` WHERE `users_login`=? LIMIT 1;", array($uz));
  $data = $queryuser -> fetch();
///////////////////////////////////////////////////////////
 
 
 
$sql = mysql_query('SELECT `id`, `address` FROM `servers` WHERE id='.$data['users_login'].'');
//Удаляем, если что
if (isset($_GET['del'])) {
    $sql = mysql_query('DELETE FROM `servers` WHERE `id` = "'.$_GET['del'].'"');
    //$sql = mysql_query('DELETE FROM `servers` WHERE `id` = "'.$_GET['del'].'" AND `id` = "'.$_SESSION['id'].'"');
    //$query = 'DELETE FROM `servers` WHERE `id` = "'.$_POST['del'].'" AND `user_id` = "'.$_SESSION['user_id'].'"';
    
    
    if ($sql) {
        echo "<p>Сервер успешно удалён из мастерсервера, вместе из статистикой скачивания, удаления и установок</p>";
    header('Refresh: 3; URL=http://top.cswar.net/pages/server.php'); //redirect с задержкой 
    } else {
      
    }
}
 
 
//Получаем данные
$sql = mysql_query('SELECT `id`, `address` FROM `servers` WHERE id='.$data['users_login'].'');
while ($result = mysql_fetch_array($sql)) {
    echo " - <a href='?del=".$result['id']."'><b>Удалить</b></a><br>";
echo '<b><span style="color:#ff0000">Внимание, после удаления сервера, ваша статистика по игровому клиенту, удаляется!</span></b><br />';   
    
}
задействованы 2 базы данных
1 - пользователи с анкетами и настройками пользователей и сайта
2 - сервера и запись их адресов, и всяких данных
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
08.04.2014, 00:32
Цитата Сообщение от Shur1k_ua Посмотреть сообщение
дам свой код
Не принципиально важно. Вам нужно разрешить удалять пользователю только его записи. Правильно? Тогда в таблице должна быть привязка к его id. А id в свою очередь, можно помещать в сессии, куки, localStorage после того, как пользователь залогинился и при удалении делать условие:
"УДАЛИТЬ ИЗ `таблицы` ГДЕ `id_записи` = 'переменная' И `id_юзера` = 'взятая_из_сессии_или_т.п.'"
0
0 / 0 / 3
Регистрация: 01.06.2012
Сообщений: 141
08.04.2014, 00:47  [ТС]
жаль мне не совсем понятно
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
08.04.2014, 00:49
Цитата Сообщение от Shur1k_ua Посмотреть сообщение
жаль мне не совсем понятно
Что именно не понятно? У вас вообще есть система авторизации? Ну, типа "Введите логин и пароль", "Зарегистрируйтесь". Как вы пользователей различаете?
0
0 / 0 / 3
Регистрация: 01.06.2012
Сообщений: 141
08.04.2014, 02:38  [ТС]
да авторизация есть... Но она сделана таким макаром, что регистрация и авторизация происходит через ВК. При первом заходе на сайт, ему присваивается ИД вк

Добавлено через 30 секунд
а потом ИД вк считается как логин пользователя

Добавлено через 1 час 42 минуты
отлично давайте по другому, можно ли так....
Чтобы удалить строку, нужно, что бы совпадало 2 значение в таблице. допустим ид клиента и его год рождения.
Если параметры не совпадут, то не удалять а переадресовать на главную сайта
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
08.04.2014, 02:50
Цитата Сообщение от Shur1k_ua Посмотреть сообщение
давайте по другому, можно ли так
Почему ж нельзя? Если оба условия не будут соблюдены, то будет удалено ноль строк, о чём можно узнать после запроса (т.к. вы используете устаревшее расширение, то вам сюда). Вот тогда и можете бортануть на главную.
0
0 / 0 / 3
Регистрация: 01.06.2012
Сообщений: 141
08.04.2014, 12:11  [ТС]
мне там ничего не ясно, чесно. Я немного далёк от мускула.
$sql = mysql_query('DELETE FROM `servers` WHERE `id` = "'.$_GET['del'].'" AND "'.$array['year'].'"');

это же не сверка ведь ?
а то один фиг удаляет

Добавлено через 9 часов 10 минут
есть ещё у кого то какие подсказки? ))
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
09.04.2014, 11:03

Не по теме:

Цитата Сообщение от Shur1k_ua Посмотреть сообщение
Самое худшее, есть и не глупцы...
Остальные посетители сайта глупцы, верно? :D Я бы не стал так огульно охаивать.


Цитата Сообщение от Shur1k_ua Посмотреть сообщение
есть ещё у кого то какие подсказки?
Попробуйте так:
- В таблице servers заменить поле id на owner_id.
- В таблице servers создать поле id с AUTO_INCREMENT.
Затем Ваш код замените на этот:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
// Подключаем список серверов
$host="localhost";
$user="shur1k";
$pass="111"; //установленный вами пароль
$db_name="top_servera";
$link=mysql_connect($host,$user,$pass);
mysql_select_db($db_name,$link);
/////////////////////////////////////////////
 
 
/////////Подключаем базу пользователей сайта
$queryuser = DB :: $dbh -> query("SELECT * FROM `users` WHERE `users_login`=? LIMIT 1;", array($uz));
  $data = $queryuser -> fetch();
///////////////////////////////////////////////////////////
 
 
//Удаляем, если что
if (isset($_GET['del'])) {
    $result = mysql_query("DELETE FROM `servers` WHERE `id`=". (int) $_GET['del']." AND `owner_id`='".$data['users_login']."'");
    //$sql = mysql_query('DELETE FROM `servers` WHERE `id` = "'.$_GET['del'].'" AND `id` = "'.$_SESSION['id'].'"');
    //$query = 'DELETE FROM `servers` WHERE `id` = "'.$_POST['del'].'" AND `user_id` = "'.$_SESSION['user_id'].'"';
    
    
    if (result) {
        echo "<p>Сервер успешно удалён из мастерсервера, вместе из статистикой скачивания, удаления и установок</p>";
        header('Refresh: 3; URL=http://top.cswar.net/pages/server.php'); //redirect с задержкой 
    } else {
      
    }
}
 
$sql = mysql_query('SELECT `id`, `address` FROM `servers` WHERE `owner_id`="'.$data['users_login'].'"');
 
while ($result = mysql_fetch_array($sql)) {
    echo " - <a href='?del=".$result['id']."'><b>Удалить</b></a><br>";
echo '<b><span style="color:#ff0000">Внимание, после удаления сервера, ваша статистика по игровому клиенту, удаляется!</span></b><br />';   
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.04.2014, 11:03
Помогаю со студенческими работами здесь

Запрос MySQL
Помогите составить правильно запрос SQL if ($_SERVER == &quot;PUT&quot;){ $putdata = file_get_contents(&quot;php://input&quot;, &quot;r&quot;); ...

Запрос в MySQL
Здравствуйте. У меня никак не получается выполнить последнее задание для одной лабораторной работы. Задание: Требуется выводить...

Запрос в бд mysql
Доброго времени суток. Подскажите где ошибка в запросе? Вылетает ошибка SQL синтаксиса $q2=&quot;INSERT INTO (`login`,`password`,...

MySQL запрос
Всем доброго вечера (хотя уже ночь) :) Помогите, пожалуйста, составить mysql запрос. Есть таблицы pharms(`id`), field_values(`id`,...

mySql запрос
Как создать для одной заметки несколько категорий? тоесть у заметки есть колонка category и у заметки в ней прописано две ктегории,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru