html форма отправки метода post и ограничение доступа к файлу post - PullRequest
1 голос
/ 11 марта 2011

У меня есть 2 файла, index.html и code.php.

На моей html-странице есть форма, которая отправляет code.php при отправке следующим образом:

<form method="post" action="code.php"> 

Я пытаюсь сделать только доступный code.phpдля публики, когда пользователь нажимает отправить в форме HTML.Причина, по которой я пытаюсь это сделать, заключается в том, что когда пользователь вводит данные на sites.com/code.php, он отображает страницу, которая не обрабатывается данными формы, и выглядит плохо, поэтому я хочу ограничить доступ code.php.

Итак, в основном я хочу, чтобы, когда пользователь переходит на sites.com/code.php, он перенаправлялся на index.html, но если он прошел через форму и нажал на submit, онбыть в состоянии добраться до обработанного code.php.

Я думал о разных способах сделать это, и одним из способов было изменить chmod в code.php с помощью некоторого php-скрипта.Таким образом, по умолчанию code.php не будет доступен для чтения, но если пользователь щелкнет по кнопке submit, chmod для wpuld code.php будет изменен на readable, что приведет к отображению страницы, но тогда нет способа перенаправить пользователей на index.php, когдаони просто посещают code.php.

Если есть какой-нибудь причудливый способ донг это, пожалуйста, дайте мне знать!Спасибо.

Ответы [ 3 ]

1 голос
/ 11 марта 2011

Что вы можете сделать, это перенаправить обратно на страницу index.html, когда форма не публикуется.

Вы можете сделать это, проверяя переменную REQUEST_METHOD.

if($_SERVER['REQUEST_METHOD'] !== 'POST')
{
  Header('Location: http://www.mysite.com/index.html');
  exit;
}
0 голосов
/ 11 марта 2011

Другой альтернативой будет проверка HTTP_REFERRER в code.php. HTTP_REFERRER предоставляет источник, из которого текущий пользователь достигает страницы. Вы можете перенаправить пользователя на index.html в случае, если HTTP_REFERRER не index.html.

<?php
$ref = $_SERVER["HTTP_REFERER"];
if ( $ref !== 'http://www.mydomain.com/index.html' )
{
    header("Location:http://www.mydomain.com/index.html");
    exit;
}
?>
0 голосов
/ 11 марта 2011

Просто установите перенаправление как:

<?php
if(!isset($_POST['submit'])) //If form has not been submitted to get to this page
{
     header('Location: http://www.domain.com/');  //Redirect
     die; //Make sure script ends processing
}


//Rest of code.php
?>

Таким образом, если кто-то заходит в code.php за пределами необходимой навигационной структуры, он просто возвращается к индексу.

Вы также можете хранить все это на одной странице, отправлять форму себе и включать код для ее обработки с помощью require () или include (), если форма была отправлена, отображать форму, если она не была ' t были отправлены или если были ошибки при отправке, и, в противном случае, отображают результаты отправки, таким образом, даже не раскрывая факт наличия внешнего файла php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...