php ajax用户登陆验证程序代码

 更新时间:2016年11月25日 17:08  点击:2068
php ajax实现用户登录并且快速实现用户验证,有需要的朋友可参考参考。

核心代码

 代码如下 复制代码

<script type="text/javascript">
 
$(document).ready(function() {
 
    $("#login").click(function() {
 
        var action = $("#form1").attr('action');
 
        var form_data = {
 
            username: $("#username").val(),
 
            password: $("#password").val(),
 
            is_ajax: 1
 
        };
 
        $.ajax({
 
            type: "POST",
 
            url: action,
 
            data: form_data,
 
            success: function(response)
 
            {
 
                if(response == 'success')
 
                    $("#form1").slideUp('slow', function() {
 
                        $("#message").html("<p class='success'>登陆成功!</p>");
 
                    });
 
                else
 
                    $("#message").html("<p class='error'>用户名或密码错误.</p>");   
 
            }
 
        });
 
        return false;
 
    });
 
});
 
</script>


index.php源码

 代码如下 复制代码

<!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=utf-8" />
<title>PHP Login with jQuery AJAX</title>
<style>
body, input {
 font-family: Georgia, "Times New Roman", Times, serif;
}
#content {
 background-color: #eee;
 width: 300px;
 margin: 0 auto;
 border: 1px solid #aaa;
 -moz-border-radius: 10px;
 -moz-box-shadow: 0 0 10px #aaa;
 -webkit-border-radius: 10px;
 -webkit-box-shadow: 0 0 10px #aaa;
 padding: 10px;
}
#form1 label {
 display: block;
 font-size: 16px;
 line-height: 25px;
}
#form1 input[type=text], #form1 input[type=password] {
 padding: 2px;
 font-size: 16px;
 line-height: 20px;
 width: 250px;
}
#form1 input[type=submit] {
 font-size: 20px;
 font-weight: bold;
 padding: 5px;
}
.success {
 color: #060;
}
.error {
 color: red;
}

</style>

<script type="text/javascript" src="jquery-1.5.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
 
 $("#login").click(function() {
 
  var action = $("#form1").attr('action');
  var form_data = {
   username: $("#username").val(),
   password: $("#password").val(),
   is_ajax: 1
  };
  
  $.ajax({
   type: "POST",
   url: action,
   data: form_data,
   success: function(response)
   {
    if(response == 'success')
     $("#form1").slideUp('slow', function() {
      $("#message").html("<p class='success'>You have logged in successfully!</p>");
     });
    else
     $("#message").html("<p class='error'>Invalid username and/or password.</p>"); 
   }
  });
  
  return false;
 });
 
});
</script>
</head>

<body>
<p>&nbsp;</p>
<div id="content">
  <h1>Login Form</h1>
  <form id="form1" name="form1" action="doLogin.php" method="post">
    <p>
      <label for="username">Username: </label>
      <input type="text" name="username" id="username" />
    </p>
    <p>
      <label for="password">Password: </label>
      <input type="password" name="password" id="password" />
    </p>
    <p>
      <input type="submit" id="login" name="login" />
    </p>
  </form>
    <div id="message"></div>
</div>
</body>
</html>

dogloin.php

 代码如下 复制代码

<?php
 
 $is_ajax = $_REQUEST['is_ajax'];
 if(isset($is_ajax) && $is_ajax)
 {
  $username = $_REQUEST['username'];
  $password = $_REQUEST['password'];
  
  if($username == 'demo' && $password == 'demo')
  {
   echo "success"; 
  }
 }
 
?>

一个php 登录时用户名与密码验证实例程序,有需要学习的朋友可参考参考。

、登录时对用户输入的用户名、密码进行验证

 代码如下 复制代码


<?php

/**
 * Validator for Login.
 */
final class LoginValidator {

    private function __construct() {
       
    }

    /**
     * Validate the given username and password.
     * @param $username and $password to be validated
     * @return array array of {@link Error} s
     */
    public static function validate($username, $password) {
        $errors = array();
        $username = trim($username);
        if (!$username) {
            $errors[] = new Error('username', '用户名不能为空。');
        } elseif (strlen($username)<3) {
            $errors[] = new Error('username', '用户名长度不能小于3个字符。');
        } elseif (strlen($username)>30) {
            $errors[] = new Error('username', '用户名长度不能超过30个字符。');
        } elseif (!preg_match('/^[A-Za-z]+$/',substr($username, 0, 1))) {
            $errors[] = new Error('username', '用户名必须以字母开头。');
        } elseif (!preg_match('/^[A-Za-z0-9_]+$/', $username)) {
            $errors[] = new Error('username', '用户名只能是字母、数字以及下划线( _ )的组合。');
        } elseif (!trim($password)) {
            $errors[] = new Error('password', '密码不能为空。');
        } else {
            // check whether use exists or not
            $dao = new UserDao();
            $user = $dao->findByName($username);

            if ($user) {
                if (!($user->getPassword() == sha1($user->getSalt() . $password))) {
                    $errors[] = new Error('password', '用户名或密码错误。');
                }
            } else {
                $errors[] = new Error('username', '用户名不存在。');
            }
        }
        return $errors;
    }
}

?>

2、调用验证器进行验证

 代码如下 复制代码


$username = null;
$password = null;

$msg = "";

if (isset($_POST['username']) && isset($_POST['password'])) {
    $username = addslashes(trim(stripslashes($_POST ['username'])));
    $password = addslashes(trim(stripslashes($_POST ['password'])));
    // validate
    $errors = LoginValidator::validate($username, $password);
   
    if (empty($errors)) {
        // save the latest ip or login time into database, then processing page forwarding
        $dao = new UserDao();
        $user = $dao->findByName($username);
        $last_login_ip = Utils::getIpAddress();
        $user->setLastLoginIp($last_login_ip);
        $now = new DateTime();
        $user->setLastLoginTime($now);
        $dao->save($user);
        UserLogin::setUserInfo($user);
        Flash::addFlash('登录成功!');
        Utils::redirect('welcome');
    }
   
    foreach ($errors as $e) {
        $msg .= $e->getMessage()."<br>";
    }

在php中删除文件很简单只要使用unlink函数即可完成删除,如果要删除目录下所有文件我们需要利用递归操作目录进行删除。

请记住从PHP文件创建的教训,我们创建了一个文件,名为testFile.txt 。

 代码如下 复制代码

$myFile = "testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
fclose($fh);
判断是否删除了.

$myFile = "testFile.txt";
unlink($myFile);

 代码如下 复制代码

$filename = 'file.txt';
fopen($filename,'a+');
if(!unlink($filename))
{
echo "文件{$filename}删除失败";
}
else
{
echo "文件{$filename}删除成功";
}
?>

删除目录下所有文件

 代码如下 复制代码

function delFileUnderDir( $dirName="../Smarty/templates/templates_c" )
{
if ( $handle = opendir( "$dirName" ) ) {
   while ( false !== ( $item = readdir( $handle ) ) ) {
   if ( $item != "." && $item != ".." ) {
   if ( is_dir( "$dirName/$item" ) ) {
         delFileUnderDir( "$dirName/$item" );
   } else {
   if( unlink( "$dirName/$item" ) )echo "成功删除文件: $dirName/$item<br />n";
   }
   }
   }
   closedir( $handle );
}
}

在php中foreach 语句用于循环遍历数组,每进行一次循环,当前数组元素的值就会被赋值给 value 变量(数组指针会逐一地向下移动)

 代码如下 复制代码

<?php
/* php foreach循环简单例子 */   
$a = array('a'=>'网上','b'=>'朋友','c'=>'其它',);   
// 这是一个hash数组,我们现在把内容输出   
foreach ($a as $key => $value) {   
    echo $key . '->' . $value . '<br>';   
}   
?>  
<?php
$a = array('a'=>'网上','b'=>'朋友','c'=>'其它',);


开始运行foreach第一次,这时 $key='a';$value='网上';
输出后第二次运行 这时 $key='b';$value='朋友';
输出后第三次运行 这时 $key='c';$value='其它';
这时数组已经到了尾部,退出循环


 代码如下 复制代码

<?

1,"two"=>2,"three"=>3,"four"=>4);
foreach($array1 as $key=>$value)
{echo "KEY:$key value: $value n";}

$array2=array(5,6,7,8);
foreach($array2 as &$value)
{
$value=$value*2;
echo "$valuen";
}

?>

结果是

$array1=array("one"=>1,”two”=>2,”three”=>3,”four”=>4);
foreach($array1 as $key=>$value)
{echo “KEY:$key value: $value n”;}

$array2=array(5,6,7,8);
foreach($array2 as &$value)
{
$value=$value*2;
echo “$valuen”;
}

?>

为了便于理解,我们假定这里的$array是一个一维的相关数组,$key是数组的索引,$value是这个索引的值,它们的名字可以随意,之所以叫$key和$value是为了便于理解。为了能让你更好的理解foreach的工作过程,我们来创建一个数组:
$array = array('first'=>'ibm','second','hp');
现在我们模拟PHP服务用foreach对$array进行遍历:

 代码如下 复制代码
foreach ($array as $key=>$value)
{
echo $key.'=>'$value;
}

第一次循环,$key = 'first',$value = 'ibm',这个时候,实际foreach对$array执行了一个我们看不见的操作

foreach循环中使用引用要注意

发现了一个容易出错,但是不懂得原理却解释不明白的问题

 代码如下 复制代码
foreach ($array as &$row) {
$row = explode(‘/’, $row);
}
foreach ($array as $row) {
//do something
}

这么写,在第二个循环会出逻辑错误,加入第二个循环中do something的地方是输出$row,循环到最后一个的时候的输出是倒数第二个元素,而不是最后一个

要这么写

 代码如下 复制代码

foreach ($array as &$row) {
$row = explode(‘/’, $row);
}
unset($row);
foreach ($array as $row) {
//do something
}

或者第一个循环这么写

foreach ($array as $key => $row) {
$array[$key] = explode(‘/’, $row);
}

本文章来总结关于php ob_start(ob_gzhandler)进行网页压缩传输的实现有需要的朋友可参考一下。

先来看ob_start用法

使用PHP ob_start()函数打开browser的cache,这样可以保证cache的内容在你调用flush(),ob_end_flush()(或程序执行完毕)之前不会被输出

 代码如下 复制代码

<?php  

ob_start(); //打开缓冲区  
phpinfo(); //使用phpinfo函数  
$info=ob_get_contents(); //得到缓冲区的内容并且赋值给$info  
$file=fopen(’info.txt’,'w’); //打开文件info.txt  
fwrite($file,$info); //写入信息到info.txt  
fclose($file); //关闭文件info.txt  

?> 

PHP ob_start()函数一个很大的特点;也可以使用ob_start的参数,在cache被写入后,然后自动运行命令,比如ob_start(”ob_gzhandler”);而我们最常用的做法是用ob_get_contents()得到cache中的内容

面的代码是一个压缩网页的例子,我 们利用ob_gzip函数,使用ob_start将输出内容压缩后放到“缓冲区”后再输出。

 代码如下 复制代码

//启用压缩   
if(function_exists('ob_gzip'))   
{   
   ob_start('ob_gzip');   
}   
//准备一些待压缩的内容   
for($i=0; $i<100; $i++)   
{   
    echo('这里是测试内容 <br>');   
}   
//输出压缩成果   
ob_end_flush();   
  
  
//这是ob_gzip压缩函数   
function ob_gzip ($content)   
{   
    if( !headers_sent()  && extension_loaded ("zlib")  && strstr ( $_SERVER["HTTP_ACCEPT_ENCODING"], "gzip")){   
        $content = gzencode($content,9);   
        header ("Content- Encoding: gzip");   
        header ("Vary: Accept- Encoding");   
        header ("Content- Length: ".strlen ($content));   
    }   
    return ($content) ;   
}

[!--infotagslink--]

相关文章

  • C#开发Windows窗体应用程序的简单操作步骤

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • 不打开网页直接查看网站的源代码

      有一种方法,可以不打开网站而直接查看到这个网站的源代码..   这样可以有效地防止误入恶意网站...   在浏览器地址栏输入:   view-source:http://...2016-09-20
  • php 调用goolge地图代码

    <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
  • 微信小程序 页面传值详解

    这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • C#使用Process类调用外部exe程序

    本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • JS实现自定义简单网页软键盘效果代码

    本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
  • php 取除连续空格与换行代码

    php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
  • php简单用户登陆程序代码

    php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p>&nbsp;</p> <p>&nbsp;</p> <form name="form1...2016-11-25
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • JS实现双击屏幕滚动效果代码

    本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • JS日期加减,日期运算代码

    一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
  • uniapp微信小程序:key失效的解决方法

    这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • 将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文

    时常会写用c#一些程序,但如何将他们和photoshop一样的大型软件打成一个压缩包,以便于发布....2020-06-25