用户名:  密码:   
您当前的位置:首页 > 网页设计 >  PHP > 

第27讲16.17节 常见问题

上次修改时间: 2016-06-08 15:07:42      来源:网络总结      作者:钢铁长陈
上一页      路径:DSD\Learn\PHP相关\      下一页

开发常见问题

一,解决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 发布网站
注册域名——申请空间——将域名解析到服务器——上传网站