2016-05-18 5 views
1

По соображениям безопасности я хочу, чтобы все файлы подключались к БД и файлам входа в папку из корневого каталога. Пример:Доступ к файлам за пределами общедоступной папки

Project: 
     includes: 
      conncect.php 
      process_login.php 
     general_files: 
      index.php 

В моем index.php у меня есть следующее.

<form action="../includes/process_login.php" method="post" name="login_form"> 
     [...] 
</form> 

Проблема заключается в том, что, когда я пытаюсь представить эту форму я получаю сообщение об ошибке, которое говорит, что:

The requested URL /includes/process_login.php was not found on this server. 

Кто-нибудь знает способ сделать то, что я хочу сделать?

+0

Вы не можете пройти за пределами корня документа с помощью HTTP-запроса. Вы можете использовать 'include()' и другие операции с файлами. –

+0

FYI Ваш файл 'conncect.php' имеет опечатку. – reformed

ответ

1

Как видно, here: «Чтобы быть безопасным, вы должны переместить включенные файлы за пределы корня документа, что делает невозможным для веб-сервера прямое обслуживание». Однако, чтобы получить доступ к ним, вы можете использовать полный путь, например, так:

include('/home/xx/xx/domains/mydomain/webroot/file-to-include.php'); 

Как видно here.

1

Похоже, что ваш корень документа равен <Project>/general_files, и если это так, то ваш файл process_login.php находится за пределами общедоступной веб-папки.

У вас есть два варианта:

1) Переместить process_login.php в каталог general_files/ и обновить атрибут action соответственно:

Project: 
    includes: 
     conncect.php 
    general_files: 
     index.php 
     process_login.php 

2) или добавить новый PHP файл (например, new_login.php) в general_files/ который включает process_login.php и устанавливает атрибут формы action в этот файл:

Project: 
    includes: 
     conncect.php 
     process_login.php 
    general_files: 
     index.php 
     new_login.php 
Смежные вопросы