ajax php用户无刷新登录实例

 更新时间:2016年11月25日 17:32  点击:2252

<!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 '用户名或密码不正确!';
  }
?>

ob_start([string output_callback])- 打开输出缓冲区
  所有的输出信息不在直接发送到浏览器,而是保存在输出缓冲区里面,可选得回调函数用于处理输出结果信息。
ob_end_flush - 结束(发送)输出缓冲区的内容,关闭输出缓冲区

使用output control 函数可以让自由控制脚本中数据的输出,这在我们想在header之前输出时很有用。

 

 <?php教程
  ob_start(); //打开缓冲区
  echo "输出n"; //输出
  header(“头部信息”);

  ob_end_flush();//输出全部内容到浏览器
  ?>

  

我个人使用ob多数是在生成静态html的时候,当某个页面不会再刷新,当其他的用户再次浏览此页面时,

程序将不会再调用php以及相关的数据库教程。这时候使用ob生成html就是很好的做法。

<?php

  ob_start();

  if(@readfile($tem_path)){     //把指定路径中的内容写入缓存中。如果不存在返回false(就是某个你想转换成html的php文件)
       $content= ob_get_contents();       //得到缓存中的内容

      $fp = fopen("1.html", "w"); //创建一个文件,并打开,准备写入
      fwrite($fp, $content); //把php页面的内容全部写入1.html

  }
   fclose($fp);

  ob_clean();
?>

//初始化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();       //发送缓冲区数据,并关闭缓冲区

?>

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

[!--infotagslink--]

相关文章

  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • php无刷新利用iframe实现页面无刷新上传文件(1/2)

    利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • jQuery+PHP发布的内容进行无刷新分页(Fckeditor)

    这篇文章将使用jQuery,并结合PHP,将Fckeditor发布的内容进行分页,并且实现无刷新切换页面。 本文假设你是WEB开发人员,掌握了jQuery和PHP相关知识,并且熟知Fckeditor的配置和使用。...2015-10-23
  • 解决vue刷新页面以后丢失store的数据问题

    这篇文章主要介绍了解决vue刷新页面以后丢失store的数据问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-12
  • php根据用户语言跳转相应网页

    当来访者浏览器语言是中文就进入中文版面,国外的用户默认浏览器不是中文的就跳转英文页面。 <&#63;php $lan = substr(&#8194;$HTTP_ACCEPT_LANGUAGE,0,5); if ($lan == "zh-cn") print("<meta http-equiv='refresh' c...2015-11-08
  • php有效防止同一用户多次登录

    【问题描述】:同一用户在同一时间多次登录如果不能检测出来,是危险的。因为,你无法知道是否有其他用户在登录你的账户。如何禁止同一用户多次登录呢? 【解决方案】 (1) 每次登录,身份认证成功后,重新产生一个session_id。 s...2015-11-24
  • js检测用户输入密码强度

    一个用Javascript检测用户输入密码强度的效果代码,以下代码主要是从以下四个方面检测用户输入的密码的强度的,有兴趣的朋友可以自己添加或修改成自己想要的形式! 1. 如果输入的密码位数少于5位,那么就判定为弱。 2. 如果...2015-10-23
  • 解决vuex数据页面刷新后初始化操作

    这篇文章主要介绍了解决vuex数据页面刷新后初始化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-26
  • php ajax注册验证用户名是否存在代码

    这是注册程序是一款当用户输入完用户名是,就会自动去数据库中查询用户要注册的用户名是否己经被注册了,如果是返回提示否则提示可以注册。 conn.php文件 代...2016-11-25
  • java后台实现js关闭本页面,父页面指定跳转或刷新操作

    这篇文章主要介绍了java后台实现js关闭本页面,父页面指定跳转或刷新操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-16
  • php+ajax制作无刷新留言板

    本文就是和大家分享一款由php结合ajax实现的无刷新留言板,先给大家看一下最后的效果图:数据库连接代码如下: <&#63;php$conn = @mysql_connect("localhost","root","root") or die ("MySql连接错误");mysql_select_db("d...2015-10-30
  • 基于jquery实现表格无刷新分页

    这篇文章主要介绍了基于jquery实现表格无刷新分页,功能实现了前端排序功能,增加了前端搜索功能,感兴趣的小伙伴们可以参考一下...2016-01-08
  • Vue 中获取当前时间并实时刷新的实现代码

    这篇文章主要介绍了Vue 中获取当前时间并实时刷新,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-05-13
  • vue实现在进行增删改操作后刷新页面

    这篇文章主要介绍了vue实现在进行增删改操作后刷新页面,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-05
  • C#实现刷新桌面的方法

    这篇文章主要介绍了C#实现刷新桌面的方法,涉及C#基于shell32.dll动态链接库实现系统桌面刷新的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 微信小程序用户授权最佳实践指南

    这篇文章主要给大家介绍了关于微信小程序用户授权最佳实践的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-08
  • 纯javascript实现简单下拉刷新功能

    代码很简单,实现的功能却很实用,直接奉上代码CSS:复制代码 代码如下: <meta charset="utf-8" /> <title>Pull to Refresh</title> <meta name="viewport" content="width=device-width,height=device-height,inital-scal...2015-03-15
  • Springboot使用thymeleaf动态模板实现刷新

    这篇文章主要介绍了Springboot使用thymeleaf动态模板实现刷新,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-08-31
  • Ionic如何实现下拉刷新与上拉加载功能

    在日常项目开发中我们经常见到下拉刷新上拉加载的功能,接下来通过本文给大家介绍ionic如何实现下拉刷新与上拉加载的相关资料,需要的朋友可以参考下...2016-06-12