Это работает через метод $ _GET (или $ _REQUEST) ...
Причина, по которой вы можете изменить некоторый идентификатор сайта (или любой другой параметр, который является частью URL), и это работает, потому что они запрограммировали его так вести себя. На самом деле это зависит от того, как этот параметр URL используется в фоновом режиме. Например, в product.php у вас будет что-то вроде этого:
if(isset($_GET['id']) {
$id = $_GET['id'];
$id = filterid(id)..... and so ...
// Maybe check for id and redirect if id is not ok
// Maybe check for id and some additional secrete parameter ...?
// What is the id? What kind of behavior you want?
}
Причина, по которой у вас разные варианты поведения на разных сайтах - в зависимости от параметров url (в данном случае «id») - кроется в том, что при разных обстоятельствах реализовано разное поведение ...
Некоторые из них осуществляют строгие проверки (особенно для идентификаторов) из-за безопасности !? Например, если у вас есть страница, и вы знаете, что ваш идентификатор должен быть числом, и вы знаете, что максимальный идентификатор в вашей базе данных составляет, например, 15000, вы можете написать что-то вроде этого ...
if(isset($_GET['id'] && strlen($_GET['id']) <= 5 && isNumeric($_GET['id']) {
//if everything is ok you can execute your code here
}
else {
$id = 1; //if someone try to put something else in id, you will simply redirect him on first id(firs product)
}
Это только один пример поведения. Теперь рассмотрим, что еще можно сделать? Что ты хочешь делать? Как вы хотите, чтобы он вел себя? Какое поведение вы будете реализовывать на своей стороне - в зависимости от параметров внутри URL, полностью зависит от вас. Пользователь может следить за вашей логикой в веб-приложении, нажимая на предварительно определенные ссылки, или он может манипулировать URL-адресом в любое время. У вас нет возможности проверить это. Все, что вы можете сделать, это правильно проверить все входные данные (независимо от того, поступают ли они с URL-адреса или какого-либо почтового запроса)