2015-03-10 5 views
0

У меня возникла проблема с пустым массивом $ _POST после отправки html-формы.

<form action="interview/booking_summary" method="POST"> 
    <p>Ihr Name: <input type="text" name="name" /></p> 
    <p>Ihr Alter: <input type="text" name="alter" value="23" /></p> 
    <p><input type="submit" name="submit" /></p> 
</form> 

Я думаю, что это связано с моим файлом .htaccess. Это, похоже, перенаправляет страницы (например, файл.php будет отображаться как файл (без .php suffix)

К сожалению, я просто работаю над сайтом, который я сам не программировал, поэтому я не совсем понимаю, что такое htaccess файл делает

Он имеет некоторые правила перезаписи, и я думаю, что те отвечают ...

ErrorDocument 403 /fehler/403/ 
ErrorDocument 404 /fehler/404/ 

# PHP Settings 
# php_flag magic_quotes_gpc off 
# php_flag register_globals off 

RewriteEngine On 
#Options +FollowSymlinks 
RewriteBase/

# Verhindert Probleme mit Trailing Slashes 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ $1/ [L,R=301] 

# Ordner 
RewriteRule cronjobs\/ - [L] 
RewriteRule ^([a-z]{2,2})/rss/$ /cronjobs/rss.php?language=$1 [L] 

# Admincenter 
RewriteRule ^admin/$ /admin/index.php [L] 

# Wartung 
RewriteRule ^construction/ /wartung.php [L] 

# Sprache 
RewriteRule ^de/$ /index.php?lang=de 
RewriteRule ^en/$ /index.php?lang=en 

# Allgemein 

RewriteRule ^([a-z]{0,2}/)([a-zA-Z0-9_-]+)/$ /index.php?content=$2/index&lang=$1 [L] 
RewriteRule ^([a-z]{0,2}/)([a-zA-Z0-9_-]+)/page-([0-9]+)/$ /index.php?content=$2/index&page=$3&lang=$1 [L] 
RewriteRule ^([a-z]{0,2}/)([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ /index.php?content=$2/single&id=$3&lang=$1 [L] 
RewriteRule ^([a-z]{0,2}/)([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/add-([a-zA-Z0-9_-]+)/$ /index.php?content=$2/single&id=$3&add=$4&lang=$1 [L] 
RewriteRule ^([a-z]{0,2}/)([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/page-([0-9]+)/$ /index.php?content=$2/single&id=$3&page=$4&lang=$1 [L] 
RewriteRule ^([a-z]{0,2}/)([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/edit-([a-zA-Z0-9_-]+)/$ /index.php?content=$2/single&id=$3&edit=$4&lang=$1 [L] 
RewriteRule ^([a-z]{0,2}/)([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/delete-([a-zA-Z0-9_-]+)/$ /index.php?content=$2/single&id=$3&delete=$4&lang=$1 [L] 
RewriteRule ^([a-z]{0,2}/)([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ /index.php?content=$2/single&id=$3&permalink=$4&lang=$1 [L] 

# Error Dokumente 
RewriteRule ^fehler/([0-9]+)/$ /index.php?content=error&code=$1 [L] 

RewriteRule ^booking-summary booking-summary.php [L] 


#@[email protected]# 
# Anything after the comment above is left alone 

Я пытался найти решение и наткнулся на эту тему:. PHP method="post" stopped working after I added this .htaccess... Why?

и поэтому я попытался добавить перепишите правило:

RewriteRule ^booking-summary  booking-summary.php [L] 

Но, к сожалению, это не помогло. Можете ли вы рассказать мне, как я могу сделать exeption для этого php-файла, чтобы получить доступ к массиву $ _POST?

Заранее спасибо.

Приветствия

M

+0

где резервируется-summary.php находится? –

+0

@anubhava, к сожалению, я не могу удалить или переименовать мой файл .htaccess, потому что тогда страница больше не работает. Я предполагаю, что некоторые url-пути установлены, и что-то перенаправлено.Если я перейду на localhost: 8888, который должен быть моим корнем, я получаю страницу с сообщением _Not Found. Запрошенный URL/en/не найден на этом сервере. – Merc

+0

@PanamaJack - мое booking_summary в любом случае называется правильно. Я могу печатать другие отладочные сообщения, а страница в противном случае загружается правильно (php-файл является файлом contoller для файла шаблона smarty) ... – Merc

ответ

1

Посмотрите, поможет ли это. У вас действительно нет правила, которое соответствует этому URL вашего сообщения. Если это ваш link interview/booking_summary, тогда это должно быть в правиле, потому что я не вижу там одного, который позаботится об этом уже.

Добавьте / в ваш URL-адрес формы, чтобы вам не пришлось вступать в противоречие с существующими правилами.

<form action="interview/booking_summary/" method="POST">

Тогда попробуйте это RewriteRule предоставление билетных резюме находится в папке интервью.

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^interview/booking-summary/?$ /interview/booking-summary.php [L] 
+0

О, человек. Просто понял. Ваш ответ помог, но только после того, как я узнал об этой ошибке в моем Apache-журнале, где @Johni помог мне! Спасибо всем. Не мог решить это сам! – Merc

+0

Рад, что я смог помочь вам решить эту проблему. –

-1

Возможно, это правило:

# Verhindert Probleme mit Trailing Slashes 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ $1/ [L,R=301] 

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

<form action="interview/booking_summary/" method="POST"> 
+0

спасибо за быстрый ответ. Я уже пытался это сделать, но он все еще не работает. Я пытаюсь напечатать мой $ _POST 'print_r ($ _ POST);' , но я получаю 'Array()' И моя форма выглядит следующим образом: '<действие = "/ booking_summary/интервью" метод формы = "POST">

Ваше имя: <входной тип = "текст" название = "имя" />

Ihr Alter: <тип входного = "текст" имя = "изменить" значение = "23" />

' – Merc

1

Вы должны установить HTTP код редиректа на 307, чтобы редирект с данными POST:

[R=307,L] 

307 сообщает браузеру, чтобы повторить запрос с новый URL-адрес, используя тот же метод. 302 и 303 указывает браузеру использовать GET вместо этого.

+0

Куда это положить? '# Verhindert Probleme мит слешей RewriteCond% {REQUEST_FILENAME}! -f RewriteCond% {REQUEST_URI}! (. *)/$ RewriteRule^(. *) $ $ 1/[L, R = 307]' или в новом правиле? И может также быть, что мой .htaccess файл не перезагружается локально? Потому что ваш ответ и один из @bulk не работал до сих пор ... --------------------- и, кстати. Должен ли я также отправлять «ответ» на мой вопрос, чтобы сделать мой код более удобочитаемым? ... – Merc

+0

Вам остается только изменить это: '' 'RewriteRule^бронирование-summary booking-summary.php [R = 307, L] '' ' Вы можете проверить, установлен ли' '' AllowOverride All''' для вашего хоста, если нет, ваш локальный .htaccess будет проигнорирован. – Johni

+0

Хм, все еще не работает. Я вставил ваше правило в мой htaccess -> еще не $ _POST. Я попробовал это с помощью «action =» interview/booking_summary/«' и 'action =" interview/booking_summary ", но оба дали мне пустой POST-массив. Я также попытался вставить 'AllowOverride All', но, к сожалению, я получил« Внутреннюю ошибку сервера », и моя страница больше не отображается. Но я думаю, что файл htacess не игнорируется, потому что, если я удалю его, моя страница вообще не работает. – Merc

Смежные вопросы