问题是某些网页确实无效。这是一个Joomla网站,例如管理员部分工作的登录表单,但在某些页面上排序或编辑内容的表单不会传递POST数据,而在其他页面上则不会。问题现在也在前端,并且它的形式与过去2年一样。 网站最近搬到了新主机,PHP 5.4 ,这要求我隐藏一些E_STRICT通知,但就是这样。 我很确定这个新版本的PHP可以解决这个问题。
以下是目前最重要的页面代码。
<form action="<?php echo $_SERVER["PHP_SELF"] ?>?option=com_jumi&fileid=7&Itemid=100&goto=jobsave" method="post" enctype="application/x-www-form-urlencoded" target="_self">
<table>
<tbody>
<tr>
<td>Category: </td>
<td>
<select name="jCat" size="1">
<?php foreach($cats as $jcat): ?>
<option value="<?php echo $jcat['pk_categorie']; ?>" <?php if($jCategory == $jcat['pk_categorie']) echo 'selected="selected"'; ?>><?php echo $jcat['nom_categorie']; ?></option>
<?php endforeach; ?>
</select>
</td>
</tr>
<tr>
<td>Job: </td>
<td><input type="text" name="jobCode" value="<?php echo $jobCode ?>" /></td>
</tr>
<tr>
<td>Title(english): </td>
<td><input type="text" name="jTitle" value="<?php echo $jTitle ?>" /></td>
</tr>
<tr>
<td>Titre(français): </td>
<td><input type="text" name="jTitleFr" value="<?php echo $jTitleFr ?>" /></td>
</tr>
<tr>
<td valign="top">Description(english): </td>
<td><textarea name="jDesc" rows="10" cols="30"><?php echo $jDesc ?></textarea></td>
</tr>
<tr>
<td valign="top">Description(français): </td>
<td><textarea name="jDescFr" rows="10" cols="30"><?php echo $jDescFr ?></textarea></td>
</tr>
<tr>
<td valign="top">Requirements(english): </td>
<td><textarea name="jRequ" rows="10" cols="30"><?php echo $jRequ ?></textarea></td>
</tr>
<tr>
<td valign="top">Requirements(français): </td>
<td><textarea name="jRequFr" rows="10" cols="30"><?php echo $jRequFr ?></textarea></td>
</tr>
<tr>
<td valign="top">Schedule(english): </td>
<td><textarea name="jSched" rows="10" cols="30"><?php echo $jSched ?></textarea></td>
</tr>
<tr>
<td valign="top">Schedule(français): </td>
<td><textarea name="jSchedFr" rows="10" cols="30"><?php echo $jSchedFr ?></textarea></td>
</tr>
<tr>
<td valign="top">Salary(english): </td>
<td><textarea name="jSalary" rows="10" cols="30"><?php echo $jSalary ?></textarea></td>
</tr>
<tr>
<td valign="top">Salary(français): </td>
<td><textarea name="jSalaryFr" rows="10" cols="30"><?php echo $jSalaryFr ?></textarea></td>
</tr>
<tr>
<td valign="top">Application Process(english): </td>
<td><textarea name="jAppli" rows="10" cols="30"><?php echo $jAppli ?></textarea></td>
</tr>
<tr>
<td valign="top">Application Process(français): </td>
<td><textarea name="jAppliFr" rows="10" cols="30"><?php echo $jAppliFr ?></textarea></td>
</tr>
<tr>
<td>Send CV to: </td>
<td>
<select name="jCV" size="1">
<?php foreach($users as $juser): ?>
<option <?php if($jCV == $juser['pk_user']) echo 'selected="selected"'; ?> value="<?php echo $juser['pk_user']; ?>"><?php echo $juser['nom_user']; ?></option>
<?php endforeach; ?>
</select>
</td>
</tr>
<tr>
<td>Status: </td>
<td>
<select name="jStatus">
<option <?php if($jStatus == 1) echo 'selected="selected"'; ?> value="1">Activate</option>
<option <?php if($jStatus == 0) echo 'selected="selected"'; ?> value="0">Deactivate</option>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="" value="Save" /></td>
</tr>
</tbody>
</table>
<input type="hidden" name="jid" value="<?php echo $jid ?>" />
<input type="hidden" name="<?php echo JUtility::getToken() ?>" value="1" />
同样,这个工作了几年,自从这次更新以来,它没有将任何帖子数据传递到页面。
编辑:接收数据的代码,我对其后的所有其他内容进行了评论,因为它与第一步POST数据缺失无关。
<?php
// jobs Admin
require('components/com_jumi/files/jobsAdmin/configuration.php');
$document =& JFactory::getDocument();
$css = JURI::base().'components/com_jumi/files/jobsAdmin/style.css';
$document =& JFactory::getDocument();
$document->addStyleSheet($css);
jimport( 'joomla.html.html.form' );
echo '<pre>' . print_r( $_POST, true ) . '</pre>';
?>
此外,我尝试将print_r作为第一个,它仍然是空的。