Как написать веб-фреймворк как учебный процесс

Я хотел бы написать свой собственный (игрушечный?) Веб-фреймворк для обучения. Я хочу пройти весь процесс с нуля. Я бы хотел, чтобы он обслуживался через Apache в Linux. Я ищу лучший путь к пониманию каждого шага того, что происходит при использовании веб-фреймворка. Я хотел бы использовать любой язык, который облегчает этот процесс. Какой лучший способ для меня это сделать? Под «лучшим» я подразумеваю не один?

Я не думаю, что разрешения могут быть установлены для файла, поскольку клиент запрашивает страницу, но есть ли способ сделать это, передав дополнительный аргумент, который может служить своего рода контрольной цифрой.

8
задан alexcoco 26 August 2010 в 23:03
поделиться

5 ответов

Вы можете взглянуть на заголовки запросов и указать, что заголовок должен быть установлен для запросов AJAX (часто люди используют X-Requested-With со значением вроде XMLHttpRequest). Имейте в виду, что этот заголовок не будет установлен, если вы не установите его самостоятельно при выполнении запроса AJAX (или не используете библиотеку Javascript, которая делает это автоматически). Однако нет никакой гарантии, что кто-то не добавит этот заголовок самостоятельно, если захочет.

Значение заголовка X-Requested-With можно найти в $_SERVER['HTTP_X_REQUESTED_WITH'].

8
ответ дан 5 December 2019 в 11:21
поделиться

Поскольку невозможно быть на 100% уверенным, кто задает вопрос, вы можете ограничить сам вопрос.

Реализация этого, конечно, будет зависеть от страницы.

Например, предположим, что вы запускаете команду curl для URL-адреса, вы можете ограничить входящую переменную только определенным доменом.

<?php
if (substr($_GET["url"], 0, 19) !== "http://example.com/")
{
    die();
}
// otherwise carry on
?>
1
ответ дан 5 December 2019 в 11:21
поделиться

Вы можете проверить заголовок $_SERVER['HTTP_X_REQUESTED_WITH']. Он должен быть равен значению «XMLHttpRequest», если это запрос Ajax.

Редактировать. Как сказал Даниэль Вандерслуис, нет никакого способа обеспечить соблюдение этого правила в полной мере. Вы можете подделать пользовательский агент, реферер — все, что приходит с запросом.

3
ответ дан 5 December 2019 в 11:21
поделиться

что бы вы ни запрашивали на сервере, он сохраняет информацию в переменной $_SERVER

, чтобы проверить, какую информацию хранит эта переменная, попробуйте это

print_r($_SERVER);

//you will see the difference in http and ajax request 

используйте эту переменную для проверки, как показано ниже

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
    strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
   //ajajx request
}
else {
   //not an ajajx request
}
2
ответ дан 5 December 2019 в 11:21
поделиться

а это не должно работать?

if(preg_match("/getPost\.php/", $_SERVER['PHP_SELF'])){
     // Access to file directly, quit..
     die();
}
1
ответ дан 5 December 2019 в 11:21
поделиться
Другие вопросы по тегам:

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