php 缓冲技术中常用几个实例

 更新时间:2016年11月25日 17:32  点击:1837
//初始化session
session_start();
//添加url rewrite的值
output_add_rewrite_var('var','value');
//插入一个连接
echo '<a href="file.php教程">link</a>';
//发送缓冲区数据
ob_flush();
//重置url rewrite的值
output_reset_rewrite_vars();
//插入一个连接
echo '<a href="file.php">link</a>';

/*

*/

print_r(ob_list_handlers());     //列出使用的输出句柄,将输出default output handler
ob_end_flush();        //发送缓冲区数据并关闭缓冲区
ob_start("ob_gzhandler");      //打开缓冲区,并使用ob_gzhandler
print_r(ob_list_handlers());     //列出输出句柄,将输出ob_gzhandler
ob_end_flush();        //发送缓冲区数据并关闭缓冲区
ob_start(create_function('$string','return $string;')); //打开缓冲区
print_r(ob_list_handlers());     //列出使用的输出句柄,将输出default output handler
ob_end_flush();        //发送缓冲区数据并关闭缓冲区

/*

*/

if(ob_get_level()==0)      //判断缓冲区等级,如果没有活动缓冲区
ob_start();        //打开缓冲区
for($i=0;$i<10;$i++)      //循环执行操作
{
  echo "<br>line to show.";    //输出内容
  echo str_pad('',4096)."n";    //输出生成的字符串
  ob_flush();       //发送缓冲区数据
  flush();        //刷新缓冲区
  sleep(1);       //暂停1秒
}
echo "done.";       //输出操作完成标记
ob_end_flush();       //发送缓冲区数据,并关闭缓冲区

?>

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312" />
<title>ajax php教程用户无刷新登录实例</title>
<script>
function userlogin(){
    var xmlhttp;
    var str;
    var sendstr="";
     try{
             xmlhttp=new xmlhttprequest();
         }
 catch(e){
             xmlhttp=new activexobject("microsoft.xmlhttp");
        }
 xmlhttp.onreadystatechange=function(){
          if (xmlhttp.readystate==4){
              if (xmlhttp.status==200){  
      str = xmlhttp.responsetext;  
      document.getelementbyid("userlogin").innerhtml=str; 
      }else{
      alert("系统错误,如有疑问,请与管理员联系!"+xmlhttp.status);
    }
          }
       }
 xmlhttp.open("post","config/userlogin.php",true);
 xmlhttp.setrequestheader('content-type','application/x-www-form-urlencoded');
 xmlhttp.send(sendstr);
 }
</script>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <p>
    <label for="textfield"></label>
    <input type="text" name="uname" id="uname" /><span id="userlogin"></span><br />
<input type="text" name="upwd" id="upwd" /><span id="upwds"></span>
  输入用户名</p>
  <p>
    <input type="button" name="button" id="button" value="登录" onclick="userlogin();" />
  </p>
</form>
</body>
</html>

userlogin.php文件

<?
$uid = $_post['uname'];
$pwd = $_post['upwd'];
$sql ="select * from tabname where uid='$uid' and pwd='$pwd'";
$query = mysql教程_query( $sql );
if( mysql_num_rows( $query ) )
{
    echo '登录成功';
 }
 else
 {
     echo '用户名或密码不正确!';
  }
?>

mt_rand() 使用 mersenne twister 算法返回随机整数。

语法
mt_rand(min,max)说明
如果没有提供可选参数 min 和 max,mt_rand() 返回 0 到 rand_max 之间的伪随机数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用 mt_rand(5, 15)。

*/
echo mt_rand();        //生成随机数
echo "<br/>";
echo mt_rand();        //生成随机数
echo "<br/>";
echo mt_rand(10,100);       //生成10~00之间的随机数

/*
mt_srand() 播种 mersenne twister 随机数生成器。

语法
mt_srand(seed)参数 描述
seed 必需。用 seed 来给随机数发生器播种。

说明
从 php教程 4.2.0 版开始,seed 参数变为可选项,当该项为空时,会被设为随时数。

*/

function make_seed()          //生成一个随机数种子
{
  list($usec,$sec)=explode(' ',microtime());      //分割当前的毫秒数
  return(float) $sec+((float)$usec*100000);      //返回值
}
mt_srand(make_seed());          //为随机数发生器播种
$randval=mt_rand();           //生成随机数
echo $randval;            //输出结果

/*
rand() 函数返回随机整数。

语法
rand(min,max)参数 描述
min,max 可选。规定随机数产生的范围。

说明
如果没有提供可选参数 min 和 max,rand() 返回 0 到 rand_max 之间的伪随机整数。例如,想要 5 到 15(包括 5 和 15)之间的随机数,用 rand(5, 15)。

*/

echo rand();        //生成随机数
echo "<br/>";
echo rand();        //生成随机数
echo "<br/>";
echo rand(5,15);       //生成5~15之间的随机数

/*
注释:在某些平台下(例如 windows)rand_max 只有 32768。如果需要的范围大于 32768,那么指定 min 和 max 参数就可以生成大于 rand_max 的数了,或者考虑用 mt_rand() 来替代它
*/

<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<title>insert title here</title>
<script type="text/网页特效">
function checkusername(input){
 var name = input.value;
 var url = 'checkusername.php教程?username=' + name;

 var xmlhttp = getxmlhttpobject();
 xmlhttp.onreadystatechange = function(){
  if (xmlhttp.readystate==4){
   $$("pmt_username").innerhtml = xmlhttp.responsetext;
  }
 }
 xmlhttp.open("get",url,true);
 xmlhttp.send(null);
}
function getxmlhttpobject(){
 var xmlhttp=null;
 try{
  // firefox, opera 8.0+, safari
  xmlhttp=new xmlhttprequest();
 }catch (e){
  // internet explorer
  try{
   xmlhttp=new activexobject("msxml2.xmlhttp");
  }catch (e){
   xmlhttp=new activexobject("microsoft.xmlhttp");
  }
 }
 return xmlhttp;
}
function checkform(form){
 try{
  assertnonempty(form.username);
  assertnonempty(form.pwd);
//  assertint(form.mobile);
 } catch(e){
  return false;
 }
 return true;
}
function assertnonempty(obj){
 if(obj.value == ''){
  var tds = gettdelems(obj);
  var text = tds[0].innerhtml;
  
  tds[1].innerhtml = text.slice(0,-1) + '不能为空';
  obj.focus();
  obj.select();
  
  throw new exception();
 }
}
function assertint(obj){
 var v = obj.value;
 if(/d{11}/.test(v)){
  alert('ok');
 } else {
  alert('error');
 }
 if(number(v) != v){
  var tds = gettdelems(obj);
  var text = tds[0].innerhtml;
  
  tds[1].innerhtml = text.slice(0,-1) + '应该是数值';
  
  obj.focus();
  obj.select();
  throw new exception();
 }
}
window.onload = function(){
// alert($$('username').type);
// $$('abc').onkeydown = mobilekeydown;
}
function gettdelems(obj){
 var tr = obj.parentnode.parentnode;
 var tds = tr.getelementsbytagname('td');
 return [tds[0],tds[2]];
}
function mobilekeydown(e){
 e = e || event;
 return e.keycode >47 && e.keycode < 59;
}

function $$(id){
 return document.getelementbyid(id);
}
function checkcode(input){
 var name = input.value;
 var url = 'checkcode.php?code=' + name;

 var xmlhttp = getxmlhttpobject();
 xmlhttp.onreadystatechange = function(){
  if (xmlhttp.readystate==4){
   $$("code").innerhtml = xmlhttp.responsetext;
  }
 }
 xmlhttp.open("get",url,true);
 xmlhttp.send(null);
}
</script>
</head>
<body>
<form method="post" action='register.php' enctype="multipart/form-data" onsubmit='return checkform(this)'>
 <table>
  <tr>
   <td>用户名:</td>
   <td><input type='text' name='username' onblur='checkusername(this)'></td>
   <td id='pmt_username'></td>
  </tr>
  <tr>
   <td>密码:</td>
   <td><input type='password' name='pwd'></td>
   <td id='pmt_pwd'></td>
  </tr>
  <tr>
   <td>重复密码:</td>
   <td><input type='password' name='pwd2'></td>
   <td></td>
  </tr>
  <tr>
   <td>姓名:</td>
   <td><input type='text' name='name'></td>
   <td></td>
  </tr>
  <tr>
   <td>性别:</td>
   <td>
    <input id='sex_m' checked type='radio' name='sex' value='男'><label for='sex_m'> 男 </label>
    <label><input type='radio' name='sex' value='女'>女</label>
   </td>
   <td></td>
  </tr>
  <tr>
   <td>年龄:</td>
   <td><input type='text' name='age'></td>
   <td id='pmt_age'></td>
  </tr>
  <tr>
   <td>手机:</td>
   <td><input type='text' name='mobile'></td>
   <td></td>
  </tr>
  <tr>
   <td>通信地址:</td>
   <td><input type='text' name='address'></td>
   <td></td>
  </tr>
  <tr>
   <td>邮件地址:</td>
   <td><input type='text' name='email'></td>
   <td></td>
  </tr>
  <tr>
   <td>用户照片:</td>
   <td><input type='file' name='photo'></td>
   <td></td>
  </tr>
  <tr>
   <td>出生日期:</td>
   <td><input type='text' name='birthday'></td>
   <td></td>
  </tr>
  <tr>
   <td>验证码:</td>
   <td><input type='text' name='verifycode' onblur='checkcode(this)'><img src='verifycode.php'></td>
   <td id='code'></td>
  </tr>
  <tr>
   <td colspan='3'><input type='submit' value='注册'> <input type='reset' value='重置'></td>
  </tr>
 </table>
</form>

</body>
</html>

checkusername.php文件

<?php
 $username = $_get['username'];
 mysql教程_connect('127.0.0.1', 'root', '') or die('could not connect: ' . mysql_error());
 mysql_select_db('test');
 
 //拼接sql语句时必须将用户输入的值做处理,替换特殊字符,用引号包含
 $username = htmlentities($username,ent_quotes);
 $sql = "select count(*) from user where username ='{$username}'";
 
 $result = mysql_query($sql);
 if($row = mysql_fetch_array($result, mysql_num)){
  $cnt = $row[0];
  if($cnt == 0) {
   echo '用户名未被使用';
  } else {
   echo '用户名已被使用,请改换用户名';
  }
 }
?>

verifycode.php验证码程序


<?php
session_start();

$rnd = array_merge(range(0,9),range('a','z'));
shuffle($rnd);

$code = implode('',$rnd);
$code = substr($code,0,4);

$_session['verifycode'] = $code;

header("content-type: image/png");
$im = @imagecreate(50, 25) or die("cannot initialize new gd image stream");
$background_color = imagecolorallocate($im, 255, 255, 255);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 5, 5, 5,  $code, $text_color);
imagepng($im);
imagedestroy($im);


?>
checkcode.php 检测用户输入的验证码是否一致
<?php
 session_start();
 
 $code = $_get['code'];
 
 echo strtoupper($code) == $_session['verifycode'] ? '验证码正确' : '验证码错误';
?>

register.php注册处理程序

<?php
session_start();

$filename = '';
if(isset($_files['photo'])){
 $uploaddir = dirname(__file__) . directory_separator . 'upload';
 $originfilename = $_files['photo']['name'];
 $extname = strtolower(substr($originfilename,strrpos($originfilename,'.')+1));
 
 $filename = time() . '.' . $extname;
 
 $validext = array('jpg','jpeg','gif','png');
 if(!in_array($extname,$validext)){
  errormsg("错误的文件类型");
 }
 
 if($_files['photo']['size'] > 100*1024){
  errormsg("文件太大,超过了100k");
 }
 $uploadfile = $uploaddir . directory_separator . $filename;
 
 if(!move_uploaded_file($_files['photo']['tmp_name'], $uploadfile)) {
  errormsg("照片上传失败");
 }
}

$code = $_post['verifycode'];
if($code != $_session['verifycode']){
 errormsg("验证码输入不正确");
}

mysql_connect('127.0.0.1', 'root', '');
mysql_select_db('test');
mysql_query('set names utf8');

$username = addslashes($_post['username']);
$pwd = md5($_post['pwd']);
$name = addslashes($_post['name']);
$sex = addslashes($_post['sex']);
$age = intval($_post['age']);
$mobile = addslashes($_post['mobile']);
$address = addslashes($_post['address']);
$email = addslashes($_post['email']);
$photo = $filename;
$birthday = addslashes($_post['birthday']);

$sql = "insert into user(username,pwd,name,sex,age,mobile,address,email,photo,birthday)
 values('$username','$pwd','$name','$sex',$age,'$mobile','$address','$email','$photo','$birthday')";

if(!mysql_query($sql)){
 errormsg('数据库教程写入不成功!');
}

$sql = 'select * from user';
$res = mysql_query($sql);
echo '
 <table>
  <tr>
   <td>用户名</td>
   <td>姓名</td>
   <td>性别</td>
   <td>年龄</td>
   <td>手机</td>
   <td>通信地址</td>
   <td>邮件地址</td>
   <td>出生日期</td>
<!--   <td>照片</td> -->
  </tr>
';
while($row = mysql_fetch_assoc($res)){
 $photo = $row['photo'] ? "<img src='./upload/{$row['photo']}'>" : '';
 echo "
  <tr>
   <td>{$row['username']}</td>
   <td>{$row['name']}</td>
   <td>{$row['sex']}</td>
   <td>{$row['age']}</td>
   <td>{$row['mobile']}</td>
   <td>{$row['address']}</td>
   <td>{$row['email']}</td>
   <td>{$row['birthday']}</td>
<!--   <td>$photo</td> -->
  </tr>
 ";
 
}

echo '</table>';


function errormsg($str){
 die('<script type="text/javascript">alert("' . $str . '");</script>');
}


?>

最简单数据库结构

drop database if exists test;
create database test character set utf8 collate utf8_general_ci;

use test;

create table user(
 username char(10) primary key
 ,pwd char(32) not null
 ,name char(10) not null
 ,sex char(1) not null
 ,mobile char(11)
 ,age smallint
 ,address varchar(50)
 ,email varchar(30)
 ,photo varchar(20)
 ,birthday date
);

http://down.111cn.net/down/code/php/qitayuanma/2010/1220/22331.html

 php教程 session 变量用于存储有关用户会话的信息,或更改用户会话的设置。session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。
php session 变量
当您运行一个应用程序时,您会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 http 地址不能维持状态。

通过在服务器上存储用户信息以便随后使用,php session 解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久储存信息,可以把数据存储在数据库教程中。

session 的工作机制是:为每个访问者创建一个唯一的 id (uid),并基于这个 uid 来存储变量。uid 存储在 cookie 中,亦或通过 url 进行传导。

*/

class my_session
{
 function my_session()
 {
  // destroy sessions started with session.auto_start
  if( session_id() )
  {
   session_unset();
   session_destroy();
  }
 
  session_start();
 }

 function set($name, $value)
 {
  $_session[$name] = $value;
 }

 function get($name)
 {
  if(isset($_session[$name]))
   return $_session[$name];
  else
   return false;
 }

 function del($name)
 {
  unset($_session[$name]);
 }

 function destroy()
 {
  $_session = array();
  session_destroy();
 }
 
}

[!--infotagslink--]

相关文章

  • C# 10个常用特性汇总

    这篇文章主要介绍了C# 10个常用特性,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-09
  • OPPO R9s如何开启Real原声技术?OPPO R9s开启Real原声技术教程

    本篇文章介绍了OPPO R9s如何开启Real原声技术的方法,有需要的小伙伴可以进来看一看。 OPPO R9s如何开启Real原声技术?Real原声技术是R9s自带的音质提升技术,开启之后...2016-12-31
  • 详解php常用数组函数实例

    这篇文章介绍了php中常用的数组与函数,非常具有价值,有兴趣的同学可以参考一下 本文实例总结了php常用数组函数。分享给大家供大家参考,具体如下: 1. array array_mer...2016-12-31
  • PHP编程常用技巧四则

    PHP编程常用技巧四则:   1.配置PHP文件目录   作为服务器端解释执行的脚本语言,PHP程序放置在某个服务器可以访问的目录下,一般可以通过修改Apache的httpd.conj...2016-11-25
  • 常用的css hack简单写法与兼容性介绍

    本文章来收藏了大量的关于在css中hack的用法及在不同浏览器下hack语法写法,有需要了解的朋友可参考一下。 区别不同浏览器的CSS hack写法: 区别IE6与FF: b...2017-07-06
  • 学习动态网页PHP技术常见问题汇总解答

    1:为什么我得不到变量 我在一网页向另一网页POST数据name,为什么输出$name时却得不到任何值? 在PHP4.2以后的版本中reGISter_global默认为off 若想取得从另一页...2016-11-25
  • mysql缓冲和缓存设置详解

    本文主要给大家讲解的是mysql优化过程中比较重要的2个参数缓冲和缓存的设置,希望大家能够喜欢...2017-01-09
  • 从零开始的html教程之CSS篇(3):常用的字体与文本属性

    一聚教程网 从零开始的html教程之CSS篇(2),介绍了css中常用的文字文本属性。这系列教程讲解CSS叠层样式表的知识,希望大家喜欢! 一、css常用的字体属性 1.字体的设置...2017-01-22
  • C#开发中经常用的加密解密方法示例

    这篇文章主要给大家介绍了关于C#开发中经常用的加密解密方法的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧...2020-06-25
  • php 缓存技术实例

    本文章要讲的php 缓存技术是讲把数据生成一个临时缓存文件保存到硬盘,然后根据缓存文件设定的时间删除缓存文件再次生成新的缓存文件哦。 代码如下 复制...2016-11-25
  • 超级详细实用的pycharm常用快捷键

    本文详细总结了Pycharm的常用快捷键,下文介绍使用方法和场景, 并不需要记忆这些快捷键, 你只需要知道有这些快捷键, 再需要用的时候查看一下, 用的多了自然也就记住了,需要的朋友可以参考下...2021-05-13
  • php 常用数组操作函数

    <?php array_values() //返回数组中所有元素 array_walk() //使用自定义函数遍历数组都一个单元 arsort(); //保留数组下标于值的关系进行倒序排列 asort() //保留...2016-11-25
  • php常用数据函数

    PHP的功能描述 ABS装置( )返回绝对值的第3号 acos ( )返回arccosine的第3号 acosh ( )返回逆双曲余弦的4号 阿辛( )返回反正弦的第3号 asinh ( )返回逆双曲正弦的4号...2016-11-25
  • C#手工双缓冲技术用法实例分析

    这篇文章主要介绍了C#手工双缓冲技术用法,实例分析了手工双缓冲技术的实现技巧,需要的朋友可以参考下...2020-06-25
  • photoshop三个日系常用调色技巧心得

    今天小编在这里就来给各位photoshop的这一款软件的使用者们来说说三个日系常用调色的技巧心得,各位想知道具体调色技巧的使用者们,那么大家就快来跟着来看一下吧。 ...2016-10-10
  • 三种Web开发主流技术的评价之PHP

    PHP是一个什么原因出现的呢?它是一个技术人员希望能用一个快速的方面来完成他自己的个人主页中的一个小应用。而在他一发不可收时出现了php,它使一个人能在多种操作系统...2016-11-25
  • .net WINFORM的GDI双缓冲的实现方法

    下面小编就为大家分享一篇.net WINFORM的GDI双缓冲的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-09-22
  • ThinkAjax中异步传输技术实现代码

    本实例介绍了在利用thinkajax中的无刷新技术来实例异步传输,有需要的朋友可以参考一下。 ThinkPHP的官方文档没有给出ThinkAjax的使用方法,令很多初学者使用起来有...2016-11-25
  • Web服务器识别技术揭秘

    但是Web服务器在配置方面很灵活,网关可以故意弄乱文件类型来隐藏关于所有技术方面的信息。识别服务器也是一门艺术,比如Java服务器所使用的服务页面(jsp)这种文件类...2016-01-27
  • PHP关于简单的页面缓冲技术

    其实说它为技术,也许不能说是真正的技术。这只不过是我自已想出来的页面处理的方法,当然与别人的想法可能是一致的。不过我还是想给它一个好听的名字。那么我这里所指的...2016-11-25