

开发常见问题
一,解决AJAX的乱码问题
专门把设置页面编码的那句话写到一个单独的页面中,然后在每个PHP页调用就行了
<?php header("Content-Type:text/html;charset=gb2312"); ?>//如把这写到单独的char.php中
二、使用JS脚本获取,输出标签内容
1. 获取表单元素的值
例:var user = form.name.value; //该方法缺点是只能获取表单元素的值
2. 获取页面任意元素的值
格式:document.getElementByid('id').innerText;
例:var fid = document.getElementById('formid').innerText;
三、使用浮动框架做关联菜单
原理是在加一个框架,设置框架大小,在框架里显示另一个页面的内容
1. 如二个下拉菜单,当在第一个下拉菜单选择一个父类时,在第二个下拉菜单自动显示该父类的子类
<iframe id="meunu1" name="menu1" src="menu.php" width="300" height="22" frameborder="0" scrolling="no" style="margin-top:0px; margin-left: 0px;top:0px;"></iframe>
选择一个类不刷新,自动显示子类
<select id ="smallclass" name="smallclass" onchange="changestype(this.value)">
<option value="0">请选择类别</option>
<?php
if(!empty($_GET['id'])) {
$sql="select * from tb_class where supid =".$_GET['id'];
$rst=$conn->execute($sql);
if($rst->RecordCount() == 0) {
?>
<option value="0">没有子类</option>
<?php
}else{
while(!$rst->EOF) {
?>
<option value="<? echo $rst->fields['id'];?>"><? echo $rst->fields['name'];?></option>
<?php
$rst->Movenext();
}
}
}
?>
</select>
四、禁用面面缓存
原因是有时每次操作都要提交到服务器,但浏览器会把3次以上重复的操作在本地缓存完成
方法:在</title>后加如下语句
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
五、在新窗口中使用session与防止站外链接,通过预定义变量
在新窗口打开的页面丢失登录的session,需要重新登录
<?
session_start();
if(empty(isset($_SESSION['admin']))) {
echo "<script>alert('您没有登录或超时');history.back;</script>";
}
$ref = $_SERVER['HTTP_REFERER'];
if($ref == '') {
echo '对不起,不允许从地址栏访问!';
exit();
}else{
$url = parse_url($ref);
if($url[host] != '127.0.0.1' && $url[host] != 'localhost') {
echo '不允许盗链';
exit();
}
}
六、判断上传文件格式
function f_postfix($f_type,$f_upfiles) { //判断文件后缀的函数,$f_type是允许文件的后缀类型, $f_upfiles是上传文件名
$is_pass =false;
$tmp_upfiles = split("\.",$f_upfiles);
$temp_num = count($tmp_upfiles);
if(in_array(strtolower($tmp_upfiles[$tmp_num -1]),$f_type))
$is_pass = $tmp_upfiles[$tmp_num -1];
return $is_pass;
}
function uppic($fileinfo) { //上传的函数
$p_type = array("jpg","jpeg","bmp","gif");
$Root =$_SERVER['DOCUMENT_ROOT'].'/tm/sl/27/';
$default_path = 'pics/null.jpg';
$picture_path = 'pics/';
$reback =false;
if($fileinfo[size] > 0 and $fileinfo[size] <700000) {
if(($postf = f_postfix($p_type,$fileinfo[name])) != false) {
$picture_path .=time().".".$postf;
if($fileinfo[tmp_name]) {
move_uploaded_file($fileinfo[tmp_name],$Root.$picture_path);
$reback = $picture_path;
}
}
}else{
$raback = $default_path;
}
return $reback;
}
七、打开Smarty缓存文件
开发时要将Smarty缓存关闭,开发完再打开,避免出莫名其妙的问题
$smarty->caching = true;
27.17 发布网站
注册域名——申请空间——将域名解析到服务器——上传网站