@smoky-jo

Как изменить php код?

здравствуйте, подскажите пожалуйста как подправить код,

у меня есть вот такой js

function d_KDK_djw(c, b) {
		url_str = b + "/include/get_info.php";
		$.ajax({
			method: "GET",
			cache		: false,
			url: url_str,
			data: { 'type': "mess_dsjkfsde", 'id': c },

		})
	}


шаблон

onclick="d_KDK_djw({if $get_id_usr}{$get_id_usr}{/if},'{$live_site}'); "

{if $get_id_usr}{$get_id_usr}{/if} - вместо этого подставляется id пользователя


и такой php

case 'mess_dsjkfsde':
				require_once $config_abs_path."/classes/users.php";
				$id = get_numeric_only("id");
				$delete_all_mess=new users();
				$delete_all_mess->delete_all_messages_to($id);
			break;


function delete_all_messages_to($id='') {

		global $db;
		$delete_all_messages_to=$db->query("delete from `class_messages` where `to`='$id'");
		if(!$delete_all_messages_to)return 0;
		return $delete_all_messages_to;

	}


этот код удаляет сообщения пользователя, используя Ajax, но если подставлять другие id пользователя прямо в браузере и нажимать на кнопку, естественно удаляются сообщения того id на чей был подменен, я сделал столбец c длинным уникальным значением

и вывожу его так

function getRandomUser($id='') {

		global $db;
		$get_rand_k=$db->fetchRow("select `rand` from `class_users` where `id`='$id'");
		if(!$get_rand_k)return 0;
		return $get_rand_k;

	}


onclick="d_KDK_djw({if $get_rand_k}{$get_rand_k}{/if};{$live_site}'); "


так вот, как мне удалять в этом коде не по id а по другому значению , не могу сориентироваться что-то, может есть какие-то другие варианты как спрятать id из onclick
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
IceRD
@IceRD
У авторизированных пользователей должна быть сессия, в сессии храните hash.
При выполнении кода сделать провеку $_SESSION['hash'] == '';

Что можно поправить еще:
onclick="d_KDK_djw({if $get_id_usr}{$get_id_usr}{/if},'{$live_site}'); "

Вот это очень плохо, делать проверки php в вызове функции js;
А что,если вдруг $get_id_usr не оказалось?


case 'mess_dsjkfsde':
require_once $config_abs_path."/classes/users.php";
$id = get_numeric_only("id");
$delete_all_mess=new users();
$delete_all_mess->delete_all_messages_to($id);
break;

get_numeric_only("id"); заменить на (int) и при диструктивном методе можно добавить проверку.
$delete_all_mess=new users(); - порождать класс для одного метода и дропнуть, сделайте лучше static function
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@McBernar
Если предполагается удаление сообщений другими юзерами, то нужна проверка на принадлежность этого id этому юзеру.

Если же это для вас функционал (для админа), тогда не парьтесь.
Ответ написан
Комментировать
irishmann
@irishmann
Научись пользоваться дебаггером
Лучше сделать проверку, есть ли у пользователя, нажавшего кнопку, право удалять сообщения по этому id.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
27 апр. 2024, в 17:31
150000 руб./за проект
27 апр. 2024, в 16:39
1000 руб./в час
27 апр. 2024, в 16:38
30000 руб./за проект