我在提交html表单后遇到空$ _POST数组的问题。
<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文件有关。这似乎是重定向页面(例如file.php将显示为文件(没有.php后缀)
不幸的是,我只是在一个我没有自己编程的网站上工作,所以我不太了解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]
#@__HCP_END__@#
# 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]
但不幸的是,这并没有成功。 你能告诉我如何为这个php文件制作一个exeption,以便我可以访问我的$ _POST数组吗?
提前致谢。
干杯
中号
答案 0 :(得分:1)
您必须将重定向的http代码设置为307以允许重定向POST数据:
[R=307,L]
307告诉浏览器使用相同的方法使用新网址重试请求。 302和303告诉浏览器改为使用GET。
答案 1 :(得分:1)
看看这是否有帮助。您实际上没有与您的帖子URL匹配的规则。
如果这是你的link interview/booking_summary
,那么它需要在规则中,因为我没有看到那里已经处理过这个问题。
在表单网址中添加/
,这样您就不必乱用现有规则。
<form action="interview/booking_summary/" method="POST">
然后尝试这个重写提供预订摘要在面试文件夹中。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^interview/booking-summary/?$ /interview/booking-summary.php [L]
答案 2 :(得分:-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">