Я использую эту функцию с getJSON для заполнения меню выбора.
$.getJSON('get_province.php', {id:$('#customer_city').val()}, function(data) {
var select = document.getElementById("customer_province");
$('option', select).remove();
$.each(data, function(index, array) {
select.add(new Option(array['province_name']));
});
$("#customer_province").select2("val", "");
});
и это get_province.php
$db = new PDO("mysql:host=$hostname;dbname=$database", $username, $password_conn);
$rows = array();
if (isset($_GET['id'])) {
$stmt = $db->prepare("SELECT province_name FROM db WHERE city_code= ? ORDER BY province_name");
$stmt->execute(array($_GET['id']));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); }
echo json_encode($rows);
Работает.
Но пользователи могут запускать get_province.php в одиночку. .ttp: //blabla.net/get_province.php? id = 1 и можете увидеть результаты. Как я могу запретить доступ к файлу php в одиночку?
Благодарю.
Способ 1:
Легко подделывается, но очень прост в настройке. Это будет работать лучше всего, если у вас есть только страница, вызывающая ее, но если у вас есть несколько, вы можете просто изменить ее, чтобы проверить массив допустимых рефереров. Также в некоторых пользовательских агентах, которые не будут отправлены, поэтому это не очень хорошо по этой причине. Просто добавьте что-то подобное в начало вашей провинции.php:
<?php
if ($_SERVER['HTTP_REFERER'] !== '%good referer address%') {
echo "</p>some sort of warning if you want</p>";
header("HTTP/1.1 403 Unauthorized");
exit;
}
Способ 2:
Используйте обработку сеансов и проверенных пользователей. Это довольно значительный проект, но он будет очень надежным и подделать так же, как и безопасность вашей пользовательской системы.
Способ 3:
создать уникальный одно использование код на странице запроса и отправьте его с запросом ajax. Хороший и очень трудно подделать — вы также можете использовать это в сочетании со способом 2, чтобы убедиться, что проверенные пользователи также не могут получить доступ через URL-адрес браузера.
Других решений пока нет …