【问题标题】:406 not acceptable error on form submit提交表单时出现 406 不可接受的错误
【发布时间】:2014-08-20 02:48:34
【问题描述】:

我有显示的网页脚本

406 Not Acceptable Error

在此服务器上找不到请求资源 /admincp/settings.php 的适当表示。

此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。”

问题是它适用于某些托管服务提供商。谁能告诉我为什么会出现这个错误

<?php
$act=isset($_GET['act'])?$_GET['act']:"";

if($act=='sub'){
$name = $mysqli->escape_string($_POST['site']);
$siteurl = $mysqli->escape_string($_POST['siteurl']);
$keys = $mysqli->escape_string($_POST['keywords']);
$desc = $mysqli->escape_string($_POST['descrp']);
$email = $mysqli->escape_string($_POST['email']);
$active = $mysqli->escape_string($_POST['active']);
$template = $mysqli->escape_string($_POST['template']);


$mysqli->query("UPDATE settings SET name='$name',siteurl='$siteurl',keywords='$keys',descrp='$desc',email='$email',active='$active',template='$template' WHERE id=1");

if($_FILES["file"]["name"]!=''){
           move_uploaded_file($_FILES["file"]["tmp_name"], "../images/logo.png");
    }?>

<div class="msg-ok">updated successfully.</div>  

<?php } 

if($settings = $mysqli->query("SELECT * FROM settings WHERE id='1'")){

    $setrow = mysqli_fetch_array($settings);

    $name=$setrow['siteurl'];

    $settings->close();

}else{

     printf("Error: %s\n", $mysqli->error);
}


?>
<form action="settings.php?act=sub" method="post" enctype="multipart/form-data">
<label class="artlbl">Site Name</label>
<div class="formdiv">
<input type="text" name='site' value='<?php echo $setrow['name']?>'/>
</div>
<label class="artlbl">Logo (182px x 47px)</label>
<div class="formdiv">
<input type='file' class="file" name='file'/>
</div>
<div class="clear"></div>
<label class="artlbl">Site URL (without "http://" and end "/")</label>
<div class="formdiv">
<input type="text" name='siteurl' value='<?php echo $setrow['siteurl']?>'/>
</div>
<div class="clear"></div>
<label class="artlbl">Meta Keywords (Separated by Commas)</label>
<div class="formdiv">
<textarea name='keywords' cols=40 rows=5 ><?php echo $setrow['keywords']?></textarea>
</div>
<label class="artlbl">Meta Description</label>
<div class="formdiv">
<textarea name='descrp' cols=40 rows=5 ><?php echo $setrow['descrp']?></textarea>
</div>

<label class="artlbl">Email</label>
<div class="formdiv">
<input type="text" name='email' value='<?php echo $setrow['email']?>'/>
</div>

<label class="artlbl">Approve</label>
<div class="formdiv">
<select name="active" id="active">
<?php if ($setrow['active']==1){?>
<option value="1">ON</option>
<option value="0">OFF</option>
<?php }else{?>
<option value="0">OFF</option>
<option value="1">ON</option>
<?php }?>
</select>
</div>
<div class="clear"></div>

<label class="artlbl">Template</label>
<div class="formdiv">
<select name="template" id="template">
<option value="<?php echo $setrow['template'];?>"><?php echo ucfirst($setrow['template']);?></option>
<?php
foreach(glob('../templates/*', GLOB_ONLYDIR) as $dir) {
    $TemplateDir = substr($dir, 13);
    $TemplateName = ucfirst($TemplateDir)
?>
<option value="<?php echo $TemplateDir;?>"><?php echo $TemplateName;?></option>
<?php }?>
</select>
</div>
<div class="clear"></div>

</br>
<div class="formdiv">
<div class="sbutton"><input type="submit" id="submit" value="Update Site Settings"/></div>
</div>
</form>

【问题讨论】:

  • 你的绝对正确。非常感谢您的帮助。
  • 作为答案发布请接受

标签: php html


【解决方案1】:

&lt;select name="active" id="active"&gt;,你能把nameid改成active以外的东西吗,因为active是一个关键字。

【讨论】:

  • 是否有关于这些关键字的文档?
【解决方案2】:

这个问题是 apache 的 mod_security 引起的,它会扫描请求,如果它包含链接则阻止它。

尝试在没有 http:// 部分的情况下提交 $_POST['siteurl'] 的值,这样可以解决这种情况下的问题,但您应该仍就该问题与您的托管服务提供商联系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 2013-12-07
    相关资源
    最近更新 更多