php cookie登录验证代码

 更新时间:2016年11月25日 17:31  点击:1877
提供一款可以自动cookie登录方法,用户可以在登录时选择保存进程几天几个月等,我们只要进来页面时判断一下就KO了。
 代码如下 复制代码

<html>
<head>
<title>Login</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form name="form1" method="post" action="login.php">
<table width="300" border="0" align="center" cellpadding="2" cellspacing="2">
    <tr>
      <td width="150"><div align="right">用户名:</div></td>
      <td width="150"><input type="text" name="username"></td>
    </tr>
    <tr>
      <td><div align="right">密码:</div></td>
      <td><input type="password" name="passcode"></td>
    </tr>
    <tr>
      <td><div align="right">Cookie保存时间:</div></td>
      <td><select name="cookie" id="cookie">
        <option value="0" selected>浏览器进程</option>
        <option value="1">保存1天</option>
        <option value="2">保存30天</option>
        <option value="3">保存365天</option>
      </select></td>
    </tr>
</table>
<p align="center">
    <input type="submit" name="Submit" value="Submit">
    <input type="reset" name="Reset" value="Reset">
</p>
</form>
</body>
</html>

-------------------------------------------------------------------------------------------------------------------------

 代码如下 复制代码

<?php
@mysql_connect("localhost", "root","1981427")     //选择数据库之前需要先连接数据库服务器
or die("数据库服务器连接失败");
@mysql_select_db("test")      //选择数据库mydb
or die("数据库不存在或不可用");
//获取用户输入
$username = $_POST['username'];
$passcode = $_POST['passcode'];
$cookie   = $_POST['cookie'];
//执行SQL语句
$query = @mysql_query("select username, userflag from users "
."where username = '$username' and passcode = '$passcode'")
or die("SQL语句执行失败");
//判断用户是否存在,密码是否正确
if($row = mysql_fetch_array($query))
{
if($row['userflag'] == 1 or $row['userflag'] == 0)    //判断用户权限信息是否有效
{
   switch($cookie)         //根据用户的选择设置cookie保存时间
   {
    case 0:         //保存Cookie为浏览器进程
     setcookie("username", $row['username']);
     break;
    case 1:         //保存1天
     setcookie("username", $row['username'], time()+24*60*60);
     break;
    case 2:         //保存30天
     setcookie("username", $row['username'], time()+30*24*60*60);
     break;
    case 3:         //保存365天
     setcookie("username", $row['username'], time()+365*24*60*60);
     break;
   }
   header("location: main.php");      //自动跳转到main.php
}
else
{
   echo "用户权限信息不正确";
}
}
else
{
echo "用户名或密码错误";
}
?>

-------------------------------------------------------------------------------------------------------------------------

 代码如下 复制代码

<?php
session_start();
if(isset($_COOKIE['username']))
{
@mysql_connect("localhost", "root","1981427")     //选择数据库之前需要先连接数据库服务器
or die("数据库服务器连接失败");
@mysql_select_db("test")      //选择数据库mydb
or die("数据库不存在或不可用");
//获取Session
$username = $_COOKIE['username'];
//执行SQL语句获得userflag的值
$query = @mysql_query("select userflag from users "
."where username = '$username'")
or die("SQL语句执行失败");
$row = mysql_fetch_array($query);
//获得用户权限信息
$flag = $row['userflag'];
//根据userflag的值输出不同的欢迎信息
if($flag == 1)
   echo "欢迎管理员".$_SESSION['username']."登录系统";
if($flag == 0)
   echo "欢迎用户".$_SESSION['username']."登录系统";
echo "<a href="logout.php" mce_href="logout.php">注销</a>";
}
else
{
echo "您没有权限访问本页面";
}
?>

-------------------------------------------------------------------------------------------------------------------------

 代码如下 复制代码

<?php
setcookie("username");
echo "注销成功";
?>

从国外网站找到的一款php随机密码生成程序哦,先是可以定义基数,然后再利用mt_rand与substr进来取第N个字符。

Randomly generated password: m1ztpxw8

 

 代码如下 复制代码
<?php
function genPwd($length=6) {
   $password = '';
   $possible = '23456789bcdfghjkmnpqrstvwxyz';
   $i = 0;
   while ($i < $length) {
 
      $password .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
      $i++;
   }
 
   return $password;
}
?>

测试方法

 代码如下 复制代码

<?php
   $password = genPwd(8);
?>

一款不错的支持中文和其它编码截取函数,不会出现乱码情况,有需要的朋友可以参考一下。
 代码如下 复制代码
/**
+----------------------------------------------------------
* 字符串截取,支持中文和其它编码
+----------------------------------------------------------
* @param string $str 需要转换的字符串
* @param string $start 开始位置
* @param string $length 截取长度
* @param string $charset 编码格式
* @param string $suffix 截断显示字符
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
*/
function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) {
    if(function_exists("mb_substr"))
    $slice = mb_substr($str, $start, $length, $charset);
    elseif(function_exists('iconv_substr')) {
        $slice = iconv_substr($str,$start,$length,$charset);
    }else{
        $re['utf-8']   = "/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/";
        $re['gb2312'] = "/[x01-x7f]|[xb0-xf7][xa0-xfe]/";
        $re['gbk']      = "/[x01-x7f]|[x81-xfe][x40-xfe]/";
        $re['big5']      = "/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/";
        preg_match_all($re[$charset], $str, $match);
        $slice = join("",array_slice($match[0], $start, $length));
    }
    if($suffix && $str != $slice) return $slice."...";
    return $slice;
}
/**
+----------------------------------------------------------
* 字符串截取,支持中文和其它编码
+----------------------------------------------------------
* @param string $str 需要转换的字符串
* @param string $length 截取长度
* @param string $charset 编码格式
* @param string $suffix 截断显示字符
+----------------------------------------------------------
* @return string
+----------------------------------------------------------
*/
function mStr($str, $length, $charset="utf-8", $suffix=true){
    return msubstr($str, 0, $length, $charset, $suffix);
}
这是从一个源码包下载下来的,包括上传页面到类,方法简单,只要把下面文件保存成相同的文件名就可以简单实现文件批量上传的功能了。
 代码如下 复制代码

html
<!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>无标题文档</title>
<script type="text/javascript">
function Check(){
 //alert('dddd');
 for(i=1; i<9; i++){
  if(document.getElementById('v'+i).value == ''){
   document.getElementById('v'+i).name = 'uu';
  }
 }
}

</script>

</head>

<body>
<form name="upfile" action="uploade.php" method="post" enctype="multipart/form-data">
<input type="file" name="spic[]" id="v1" /><br/>
<input type="file" name="spic[]" id="v2" /><br/>
<input type="file" name="spic[]" id="v3" /><br/>
<input type="file" name="spic[]" id="v4" /><br/>
<input type="file" name="spic[]" id="v5" /><br/>
<input type="file" name="spic[]" id="v6" /><br/>
<input type="file" name="spic[]" id="v7" /><br/>
<input type="file" name="spic[]" id="v8" /><br/>
<input type="submit" name="sub" value="提交" onclick="return Check()" />
<input type="reset" name="res" value="重填" />
</form>
</body>
</html>

uploade.php文件

<?php
//print_r($_FILES['spic']);
header('Content-Type:text/html;charset=utf-8');
//if(@$_FILES['spic'])echo "ddddddddd";;
include('upFiles.css.php');
$upfile = new UploadFiles(array('filepath'=>'./upload','allowtype'=>array('php','bmp','gif','jpg','png'),'israndfile'=>true,'maxsize'=>'1000000'));

if($upfile ->uploadeFile('spic')){
 
 $arrfile = $upfile ->getnewFile();
 foreach($arrfile as $v){
  echo $v,"<br/>";
 }
 echo "上传成功!";
}else{
 $err =  $upfile ->gteerror();
 if(is_array($err)){
  foreach($err as $v1){
   echo $v1,"<br/>";
  }
 }else{
  echo $err;
 }
 //var_dump($err);
}
//var_dump($upfile);
?>

upFiles.class.php上传类

<?php

class UploadFiles{

 private $maxsize = '1000000'; //允许上传文件最大长度
 private $allowtype = array('jpg','png','gif','jpeg');//允许上传文件类型
 private $israndfile = true;//是否随机文件名
 private $filepath;//上传路径
 private $originName;//上传的源文件
 private $tmpfileName;//临时文件名
 private $newfileName;//新文件名
 private $fileSize;//文件大小
 private $fileType;//文件类型
 private $errorNum = 0;//错误号
 private $errorMessg = array();//错误消息
  //对成员初始化
  function __construct($options = array()){
  foreach($options as $key=>$val){
   $key = strtolower($key);
   //查看传进来的数组里下标是否与成员属性相同
   //print_r(array_keys(get_class_vars(get_class($this))));
   if(!in_array($key,array_keys(get_class_vars(get_class($this))))){ 
    continue;
   }else{
    $this->setOption($key,$val);
   }
  }
 }
 private function setOption($key,$val){
     $this->$key = $val;
  //echo $this->errorNum."<br>";
 }
 //检查文件上传路径
 private function checkfilePath(){
 //echo $this->filepath;
  if(empty($this->filepath)){
   $this->setOption('errorNum',"-5");
   return false;
  }
  if(!file_exists($this->filepath) || !is_writable($this->filepath)){
   if(!@mkdir($this->filepath,0755)){
    $this->setOption('errorNum','-4');
    return false;
    }
  }
  return true;
 }
 //获取错误信息
 private function getError(){
  $str = "上传文件{$this->originName}出错---";
  switch($this->errorNum){
   case 4;  $str .= "没有文件被上传";break;
   case 3;  $str .= "文件只被部分上传";break;
   case 2;  $str .= "超过文件表单允许大小";break;
   case 1;  $str .= "超过php.ini中允许大小";break;
   case -1; $str .= "未允许的类型";break;
   case -2; $str .= "文件过大,不能超过".$this->maxsize."个字节";break;
   case -3; $str .= "上传失败";break;
   case -4; $str .= "建立文件上传目录失败";break;
   case -5; $str .= "必须指定上传路径";break;
   default; $str .= "未知错误";
  }
  return $str."<br>";
 }
 //检查文件类型
 private function checkfileType(){
 //echo $this->fileType;
  if(!in_array(strtolower($this->fileType),$this->allowtype)){
  $this->setOption('errorNum','-1');
   return false;
  }else{
   return true;
  }
 }
 //检查文件大小
 private function checkfileSize(){
  if($this->fileSize > $this->maxsize){
   $this->setOption('errorNum','-2');
   return false;
  }else{
   return true;
  }
 }
 //处理随机文件名称
 private function prorandFile(){
  $ch = $this->israndfile;
  if($ch == 'true'){
   return true;
  }else{
   return false;
  }
 }
 //
 private function setFiles($name="",$tmp_name="",$size="",$error=""){
  //检查上传路径
  if(!$this->checkfilePath()){
   //$this->errorMessg = $this->getError();
   return false;
  }
  //echo $error."<br>";
  if($error){
  $this->setOption('errorNum',$error);
   return false;
  }
  $arrstr   = explode('.',$name);
  $type     = end($arrstr);
  $this->setOption('originName',$name);
  $this->setOption('fileSize',$size);
  $this->setOption('fileType',$type);
  $this->setOption('tmpfileName',$tmp_name);
  return true;
 }
 //检查是否有文件上传
 function checkFile($formname){
  if(!@$_FILES[$formname]){
   $this->setOption('errorNum',4);
   return false;
  }else{
   return true;
  }
 }
 //上传文件
 function uploadeFile($formname){
  if(!$this->checkFile($formname)){
   $this->errorMessg = $this->getError();
   return false;
  }
  $return   = true;
  $name     = @$_FILES[$formname]['name'];
  $tmp_name = @$_FILES[$formname]['tmp_name'];
  $size     = @$_FILES[$formname]['size'];
  $error    = @$_FILES[$formname]['error'];
  //$type     = $_FILES[$formname]['type'];
  
  if(is_array($name)){
  
   $errors = array();
   for($i=0; $i<count($name); $i++){
    if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){
     if(!$this->checkfileSize() || !$this->checkfileType()){
      $errors[] = $this->getError();
      $return = false;
     }
    }else{
     $errors[] = $this->getError();
     $return = false;
    }
    if(!$return) $this->setFiles();
   }
   if($return){
    $newfileN = array();
    for($i=0; $i<count($name); $i++){
     if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){
      if(!$this->copyFile()){
       $errors[] = $this->getError();
       $return = false;
      }else{
       $newfileN[] = $this->newfileName;
      }
     }
     $this->newfileName = $newfileN;
    }
   }
   //print_r($errors);
   $this->errorMessg = $errors;
   //echo $errors;
   return $return;
  }else{
   if($this->setFiles($name,$tmp_name,$size,$error)){
    $return = true;
    if($error) var_dump($error);
    
    if($this->checkfileSize() && $this->checkfileType()){
     
    }else{
     $return = false;
    }
   }else{
    $return = false;
   }
   if(!$return){
    $this->errorMessg = $this->getError();
   }
   return $return;
  }
 }
 //获取上传后的文件名
 function getnewFile(){
   return $this->newfileName;
 }
 //把文件拷贝到指定的路径
 function copyFile(){
  $filepath = rtrim($this->filepath,'/')."/";
  if(!$this->errorNum){
   if($this->prorandFile()){
     $this->newfileName = date('Ymdhis').rand(1000,9999).".".$this->fileType;
    }else{
     $this->newfileName = $this->originName;
    }
   if(!move_uploaded_file($this->tmpfileName,$filepath.$this->newfileName)){
    $this->setOption('errorNum',-3);
    return false;
   }else{
    return true;
   }
  }else{
   return false;
  }
 }

 //上传错误后返回的消息
 function gteerror(){
    $err = $this->errorMessg;
  return $err;
 }
 }

 

?>

在递归扫描文件夹树的问题上,还是 Glob 函数的表现好一点,很准确的说。 > Scandir 函数会莫名其妙扫描两次 ../ 处的文件,也就是说如果小邪有俩文件。


> ../b.php教程 和 ../a.php,结果就会在扫描报告上面出现两次,很是奇怪。

 

 代码如下 复制代码

//Update at 2010.07.25 - 以下代码作废
$path = '..';
function get_filetree_scandir($path){
$tree = array();
foreach(scandir($path) as $single){
if(is_dir('../'.$single)){
$tree = array_merge($tree,get_filetree($single));
}
else{
$tree[] = '../'.$single;
}
}
return $tree;
}
print_r(get_filetree_scandir($path));

//Update at 2010.07.25 - 以下为新代码
$path = './';
function get_filetree_scandir($path){
$result = array();
$temp = array();
if (!is_dir($path)||!is_readable($path)) return null; //检测目录有效性
$allfiles = scandir($path); //获取目录下所有文件与文件夹
foreach ($allfiles as $filename) { //遍历一遍目录下的文件与文件夹
if (in_array($filename,array('.','..'))) continue; //无视 . 与 ..
$fullname = $path.'/'.$filename; //得到完整文件路径
if (is_dir($fullname)) { //是目录的话继续递归
$result[$filename] = get_filetree_scandir($fullname); //递归开始
}
else {
$temp[] = $filename; //如果是文件,就存入数组
}
}
foreach ($temp as $tmp) { //把临时数组的内容存入保存结果的数组
$result[] = $tmp; //这样可以让文件夹排前面,文件在后面
}
return $result;
}
print_r(get_filetree_scandir($path));

[!--infotagslink--]

相关文章

  • phpems SQL注入(cookies)分析研究

    PHPEMS(PHP Exam Management System)在线模拟考试系统基于PHP+Mysql开发,主要用于搭建模拟考试平台,支持多种题型和展现方式,是国内首款支持题冒题和自动评分与教师评分相...2016-11-25
  • php中登录后跳转回原来要访问的页面实例

    在很多网站用户先访问一个要登录的页面,但当时没有登录后来登录了,等待用户登录成功之后肯定希望返回到上次访问的页面,下面我就来给大家介绍登录后跳转回原来要访问的页...2016-11-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
  • JS基于Mootools实现的个性菜单效果代码

    本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
  • php中用curl模拟登录discuz以及模拟发帖

    本文章完美的利用了php的curl功能实现模拟登录discuz以及模拟发帖,本教程供参考学习哦。 代码如下 复制代码 <?php $discuz_url = &lsquo;ht...2016-11-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
  • JS使用cookie实现DIV提示框只显示一次的方法

    本文实例讲述了JS使用cookie实现DIV提示框只显示一次的方法。分享给大家供大家参考,具体如下:这里运用JavaScript的cookie技术,控制网页上的提示DIV只显示一次,也就是当用户是第一次打开网页的时候才显示,第二次自动隐藏起...2015-11-08
  • PHP实现清除wordpress里恶意代码

    公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
  • 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
  • PHP开发微信支付的代码分享

    微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
  • Ruby on Rails实现最基本的用户注册和登录功能的教程

    这里我们主要以has_secure_password的用户密码验证功能为中心,来讲解Ruby on Rails实现最基本的用户注册和登录功能的教程,需要的朋友可以参考下...2020-06-30
  • PHP常用的小程序代码段

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • 几种延迟加载JS代码的方法加快网页的访问速度

    本文介绍了如何延迟javascript代码的加载,加快网页的访问速度。 当一个网站有很多js代码要加载,js代码放置的位置在一定程度上将会影像网页的加载速度,为了让我们的网页加载速度更快,本文总结了一下几个注意点...2013-10-13
  • php怎么用拼音 简单的php中文转拼音的实现代码

    小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06