Intereting Posts
IMAP: PHP: как я могу получить и сохранить номер сообщения для удаления определенной почты Записан У этого пользователя есть подпись, которая отображается под каждым сообщением, но вы не можете ее просматривать. Laravel 4: перенаправление на заданный URL-адрес PHP подготовил операторы и транзакции в цикле не удалось очистить содержимое с веб-сайта PHP-эквивалент объектов ASP.NET Application / Cache Получить контейнер Symfony в EntityRepository Могу ли я запускать php-скрипт под разрешениями пользователя с помощью FastCGI и APACHE? Как отображать и правильно указывать древовидную структуру одного узла? Автоматическое заполнение JQuery со значением и идентификатором Значки шрифтов Symfony2 – Assetic – css Чтобы использовать функцию sleep () или cron Размещение функций администратора CakePHP / MVC Как объединить и обработать 2 формы symfony в одном? нечувствительный к регистру xpath в php

Можно ли перенаправить почтовые данные?

У меня есть сайт, на котором все запросы перенаправляются молча (через .htaccess ) в index.php а затем PHP используется для отображения правильной страницы (путем разбора REQUEST_URI ).

Мне было интересно, можно ли также отправлять данные POST на поддельный адрес?

У меня в настоящее время моя форма …

 <form action="/send-mail" method="post"> 

И мое правило .htaccess

 # redirect mail posting to index RewriteRule send-mail index.php?send-mail [NC,L] 

Мой index.php проверяет isset($_GET['send-mail']) который отлично работает.

Тем не менее, это, похоже, снижает все данные POST, которые должны быть отправлены на него.

Есть ли способ сохранить данные сообщения? Я не хочу использовать GET, потому что он не может отправлять столько информации, хотя это может быть не проблема с простой формой запроса.

Вот мой .htaccess для перенаправления на index.php

 # serve files and dirs if they exist please, otherwise send to index RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule . index.php 

Попробуй это:

 # redirect mail posting to index RewriteRule send-mail index.php?send-mail [NC,P] 

«P» действует как «L» в том, что он прекращает обработку правил, но также сообщает модулю, что запрос должен быть передан в прокси-модуль неповрежденным (что означает, что данные POST сохранены).

Вы должны иметь возможность просто перенаправлять на index.php , а затем в этом скрипте обращаться к $_SERVER['REQUEST_URI'] чтобы увидеть исходный запрос, с «send-mail» нетронутым.

Кстати, «не могу отправить столько информации» не является причиной использования POST. Причина использования POST заключается в том, что запрос будет изменять данные на вашем сайте, а не просто извлекать данные.

Предположим, вы разместили гиперссылку на своей странице с запросом GET, например « /delete_user?id=1234 », а затем некоторая поисковая система невинно следует по ссылке, поскольку она индексирует ваш сайт. Вот почему запросы GET не подходят для запросов, которые изменяют данные.

До тех пор, пока вы используете только внутреннюю переписку, а не перенаправление HTTP, вы не должны терять POST-данные. Вот правило, которое я использую на своем сайте:

 RewriteRule ^(.*)$ index.php/$1 [L] 

Попробуйте использовать расширение HTTPLiveHeaders для Firefox (или что-то подобное) и отслеживать весь запрос страницы. Убедитесь, что вы не получаете перенаправление HTTP. Если вы получаете ответ HTTP / 1.1 3xx и адрес Location: http: // address , это проблема. Правило перезаписи, которое вы опубликовали, не должно вызывать этого. Если вы перенаправлены, вероятно, есть либо ошибка в вашем PHP-коде, либо другое правило перезаписи, которое применяется.

Чтобы избежать проблем с некоторыми прокси-серверами и перезаписыванием Apache, передайте данные POST или установите заголовок Content-Length: 0 для запросов с пустым телом.

Недавно у меня были проблемы с Apache, конвертирующим мой запрос в GET при выполнении POST с пустым телом. Итак, вместо этого:

  curl -X POST https://example.com/api/user/123456789 

передать заголовок Content-Length :

  curl -X POST https://example.com/api/user/123456789 -H 'Content-Length: 0' 

или передать что-то в теле:

  curl -X POST https://example.com/api/user/123456789 -d '' 

Я хочу перенаправить user_login.php на seo дружественный URL-адрес, например / user-login, с данными формы сообщения, и это сработало для меня.

 RewriteCond %{THE_REQUEST} ^[AZ]{3,}\s/user_login\.php [NC] RewriteRule ^ user-login [QSA,R=301] RewriteRule ^user-login$ user_login.php [QSA,L] 

В файле вида

 <form action="<?php $siteurl;?>/user-login" method="post" id="user_login">