Задать вопрос
@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
  • Вопрос задан
  • 96 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы