Задать вопрос
@Obivankinobi

Как отправить в POST значений submit value?

Добрый день!
Столкнулся с проблемой, в форме есть 2 кнопки, и при нажатии на одну срабатывает аякс и отправляет запрос к файлу. НО в файле нет проверки на post запрос.. т.е. любой человек знающий адрес файла зайдет и скрипт выполнится а это плохо))
<form action="" method="post" id="changeform">
	<p><input name="test3" id="back" type="submit" value="вернуть" /> </p>
</form>


$("#back").on("click", function(e){
		e.preventDefault();
		var formData = new FormData($('#changeform')[0]);
			$.ajax({
                type: "POST",
                url: "/test.php",							
                data: formData,
                cache: false,
                contentType: false,
                processData: false,
                success: function(data) {
                     console.log(data);
                   },
                   error: function(data){
                   	alert("no");
                   }
            });


Собственно как реализовать проверку? ведь ajax не передает значение нажатой кнопки..
  • Вопрос задан
  • 672 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
AppFA
@AppFA
Frontend developer at Yandex
Добавьте в PHP проверку на AJAX:
function isAjax() {
    return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}

Так же можете создавать csrf token и проверять его на сервере.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Silm
А почему не добавить проверку на post?
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
if($_SERVER['REQUEST_METHOD'] == 'POST'){
   //do the magic, baby!
}

или лень? или нельзя? А нафига? Я все равно могу получить файл, методом пост например )
Если нужно чтобы файл не каждый мог получить - логично ограничить доступ по определенным параметрам, логину и паролю, токену или отпечатку попы... кароче - какой собсно был смысл ограничения?

link
Ответ написан
Ваш ответ на вопрос

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

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