SOLVED : я пропустил атрибут name в полях ввода. У меня есть простой html / php -form. И я его подаю. $ _POST всегда пуст. Если я попробую получить, то GET всегда будет пустым. То же самое для $ _REQUEST и php: // ввода. Я ничего не получаю взамен.
Там много сообщений с этой темой, но я не нашел решения для своей проблемы. У меня нет перезаписи или перенаправления. Метод_request – POST. Нет никакого столкновения с id в форме, php: // ввод также пуст, REQUEST также пуст. Я поставил Suhosin.simulation на, что означает, что он не работает. POST_MAX_SIZE = 16M. Должно быть достаточно для двух небольших текстов.
Переменные request_order и variable_order php.ini – это GP и GPS соответственно. Magic_quotes_gpc выключен. По умолчанию mime-type = text / html и каждая страница имеет кодировку UTF-8. Результатом функции php_sapi_name () является apache2handler.
PHPVersion = 5.3, Suhosin – patch 0.9.1. OS = Ubuntu 12.04 LTS, Apache = 2.2.22.
Вот два файла. Я немного упростил их, но обычно они работают без проблем. У меня есть аналогичные файлы для GET-метода.
<?php $tmpHeader = "<!DOCTYPE html><html><head>\n"; $tmpHeader .= "<meta charset=\"UTF-8\"> <meta http-equiv=\"Content-Type\" content=\"application/x-www-form-urlencoded; charset=utf-8\">\n"; $tmpHeader.= "<title>testPost</title>\n"; $tmpHeader.= "<link rel=\"stylesheet\" href=\"/css/layout.css\">\n"; $tmpHeader.= "<link rel=\"stylesheet\" href=\"/css/semantics.css\">\n"; $tmpHeader.= "<link rel=\"stylesheet\" href=\"/css/defaults.css\">\n"; $tmpHeader.="</head>"; $tmpBody = "<body id=\"defaultBody\"><section id=\"page\">\n"; $tmpBody .= "<div id=\"container\">\n"; $tmpBody .= "<form id=\"pagewrap\" name=\"pagewrap\" method=\"POST\" action=\"http://www.thuis.lb/testPost_2.php\" enctype=\"application/x-www-form-urlencoded\">\n"; $tmpBody .= "<input type=\"hidden\" id=\"context_id\" value=\"testPost\">\n"; $tmpBody.="<header id=\"pageHeader\">\n"; $tmpBody.="<div id=\"leftHeader\"><img src=\"".clientSideImages."Homerus.jpg\" alt=\"homerus\"></div>\n"; $tmpBody.="<div id=\"centralHeader\"><h1>Slogan</h1></div>\n"; $tmpBody.="</header>\n"; $pageData = "<section id=\"doc_content\">\n"; $pageData.= "<fieldset><legend>testPost</legend>\n"; $pageData.= "<div class=\"fourcolumns_odd\"><label for=\"username\">username</label></div>\n"; $pageData.= "<div class=\"fourcolumns_even\"><input type=\"text\" id=\"username\" value=\"\"></div>\n"; $pageData.= "<div class=\"fourcolumns_odd\"><label for=\"password\">password</label></div>\n"; $pageData.= "<div class=\"fourcolumns_even\"><input type=\"text\" id=\"password\" value=\"\"></div>\n"; $pageData.= "<div class=\"onecolumn\"><input type=\"submit\" id=\"submitButton\" value=\"inloggen\"></div>\n"; $pageData.= "</fieldset>\n"; $pageData.= "<input type=\"hidden\" id=\"passwordHash\" value=\"\">\n"; $pageData.="</section><!--end of section doc_content -->\n"; $tmpBody .= "<div id=\"leftWing\"><img src=\"".clientSideImages."IronPillarDelphi.jpg\" alt=\"homerus\"></div>\n"; $tmpBody.= "<div id=\"centerField\" class=\"centerVertically\">".$pageData."</div>\n"; $tmpBody.= "<div id=\"rightWing\"><img src=\"".clientSideImages."IronPillarDelphi.jpg\" alt=\"homerus\"></div>\n"; $tmpBody.="</form>\n"; $tmpBody.= "</div><!-- end of container -->\n"; $tmpBody.="</section><!-- end of page -->\n"; $tmpBody.="</body></html>\n"; logStatement('requestheaders: '); $testpostdata = file_get_contents("php://input"); log_r($testpostdata); print $tmpHeader.$tmpBody; ?>
Другой файл, которому должны быть отправлены данные $ _POST:
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <meta http-equiv="Content-Type" content="application/x-www-form-urlencoded; charset=utf-8"> <title>testPost_II</title> <link rel="stylesheet" href="/css/layout.css"> <link rel="stylesheet" href="/css/semantics.css"> <link rel="stylesheet" href="/css/defaults.css"> </head><body id="defaultBody"><section id="page"> <div id="container"> <form id="pagewrap" name="pagewrap" method="POST" action="http://www.thuis.lb/testPost.php" enctype="application/x-www-form-urlencoded"> <header id="pageHeader"> <div id="leftHeader"><img src="/images/Homerus.jpg" alt="homerus"></div> <div id="centralHeader"><h1>Slogan</h1><span>Special for ><?php print getValue('username','nothing found');?></span></div> </header> <div id="leftWing"><img src="/images/IronPillarDelphi.jpg" alt="homerus"></div> <div id="centerField" class="centerVertically"><section id="doc_content"> <input type="text" id="context_id" value="<?php var_dump($_POST);?>"> <fieldset><legend>testPost_2</legend> <div class="fourcolumns_odd"><label for="username">username</label></div> <div class="fourcolumns_even"><input type="text" id="username" value="<?php print getValue('username','Noname');?>"></div> <div class="fourcolumns_odd"><label for="password">password</label></div> <div class="fourcolumns_even"><input type="text" id="password" value="<?php echo getValue('password','Secret');?>"></div> <div class="fourcolumns_odd"><label for="request_method">request method</label></div> <div class="fourcolumns_even"><input type="text" id="username" value="<?php print $_SERVER['REQUEST_METHOD'];?>"></div> <div class="onecolumn"><input type="submit" id="submitButton" value="inloggen"></div> </fieldset> </section><!--end of section doc_content --> </div> <div id="rightWing"><img src="/images/IronPillarDelphi.jpg" alt="homerus"></div> </form> </div><!-- end of container --> </section><!-- end of page --> </body></html>
www.thuis.lb – это имя локального сервера. Он имеет IP 127.0.0.1. Thuis является голландским для дома. Есть ли что-то, что я забыл или что я делаю неправильно?
EDIT: Дополнительная информация. В более сложном первом php происходит обмен информацией с базой данных. Это работает как шарм. Совершенно никаких проблем. Поэтому я считаю, что проблема связана с безопасностью. Я добавлю файл виртуального хоста для www.thuis.lb. Хотя это почти похоже на виртуальный хост по умолчанию, это может быть проблемой.
<VirtualHost thuis.lb:80> ServerName www.thuis.lb ServerAlias thuis.lb *.thuis.lb ServerAdmin lbergman@loekbergman.nl DocumentRoot /var/www/thuis RewriteEngine On RewriteOptions Inherit <Directory /var/www/thuis/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/thuis/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel debug CustomLog /var/log/apache2/thuis/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>
EDIT II: Я могу добавить дополнительную информацию. В журнале доступа есть, например, эта строка: 127.0.0.1 – – [04 / Apr / 2013: 11: 13: 43 +0200] "POST /testPost_2.php HTTP / 1.1" 200 2020 " http: // www. thuis.lb/testPost.php "" Mozilla / 5.0 (X11; Ubuntu; Linux x86_64; rv: 19.0). Gecko / 20100101 Firefox / 19.0 ". Это показывает, что apache2 получает сообщение в хорошем состоянии. Но $ _POST в PHP все еще полностью пуст. На дисплее Firebug> Net> Заголовки есть длина содержимого 0.
У всех полей ввода формы есть атрибут имени или только атрибут id? Это может быть так же просто, как добавление атрибута имени в каждое поле ввода.
<input type="text" id="afield" value="a value">
Это не то же самое, что
<input type="text" id="afield" name="afield" value="a value">
$ _POST ['afield'] должен возвращать значение только во втором примере выше