406表单提交时不接受错误

时间:2014-02-28 06:13:04

标签: php html html5

我有显示

的网页脚本
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>

2 个答案:

答案 0 :(得分:2)

<select name="active" id="active">,您可以将name以及id更改为active以外的其他内容,因为active是关键字。

答案 1 :(得分:1)

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

尝试在没有 http:// 部分的情况下提交 $ _ POST [&#39; siteurl&#39;] 的此值,这将解决此问题但是,您仍应该就该问题与您的托管服务提供商联系。