首页 > 编程技术 > php

php记录并显示用户上次登录的时间

发布时间:2016-11-25 17:21

我们会看到有少的网站在用户登录一次之后下一次会显示你上次登录的时间了,实现这种php登录显示用户上次登录的时间的方法有很多实现技巧,如直接使用数据库记录或直接使用php cookie记录,下面我们来介绍利用cookie记录用户上次登录了。

创建脚本文件 form_login.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=gb2312"/>
    <title>用户登录</title>
 <link rel='stylesheet' type='text/css' href='style.css'>
 <style>
  #showTime{
   width:291px;
   border:1px solid #ccc;
   line-height:23px;
   position:absolute;
   left:500px;
   top:48px;
   text-align:center;
  }
 </style>
</head>
<body>
 
 <?php
 if(isset($_COOKIE['login_now'])){
  echo "<div id='showTime'>";
  echo '您上次登录的时间为:'.$_COOKIE['login_now'];
  echo "</div>";
 }
 ?>
</div> 
<div id="login">
<h2>
 <input id="fnquit" type="button" title="退出登录" />
 <a href="#" class="cur" name="Email">Email登录</a>
 </h2>
 <ul>
  <form id="myForm" name="myForm"  method="post" action='login_time.php'>
   <li>
    <input id="login_type" name="login_type" type="hidden"/>
    <tt>
     <label id="log_type" for="email">Email:</label>
    </tt>
    <div>
     <input id="username" name="username" type="text" class="cell" />
    </div>
   </li>
   <li>
    <tt>
     <label for="password">密 码:</label>
    </tt>
    <div>
     <input id="password" name="password" type="password" class="cell" />
    </div>
   </li>
   <li>
    <div>
     <input id="auto_login" name="auto_loginmberme" type="checkbox"/>
     <label for="auto_login">下次自动登录</label>
    </div>
   </li>
   <li>
    <div>
     <input id="sub" type="submit" value=''/><a href="#" target="_blank" >忘记密码?</a>
    </div>
   </li>
</form>
</ul>
</div>
 
</body>
</html>


创建脚本文件 login_time.php

 代码如下 复制代码

<?php
date_default_timezone_set('Asia/Shanghai');//设置时区为东八区
if(!empty($_POST['username'])){
    $name = $_POST['username'];
    $pwd = $_POST['password'];
    if($name = 'admin' && $pwd = 'admin'){
        setCookie('login_now',date('Y-m-d H:i:s'),time()+3600*24);
        echo "<script>alert('登录成功!');location='login_in.php'</script>";
    }else{
        echo "<script>alert('登录失败!');location='login.php'</script>";
    }
}
?>


创建脚本文件 login_in.php

 

 代码如下 复制代码
<?php
    echo "用户登录时间:".$_COOKIE['login_now']."<br>";
    echo "<a href='form_login.php'>注销返回</a>";
?>

补充:如果是数据库会更好一些因为cookie如果用户把它清除cookie了就没有下载一次了哦。

清除变量中字符中的空格我们有几种方法,因为很多时候我们使用trim是无法删除了,下面整理了几个方法,大家可参考一下。

在PHP里,我们要清除变量当中的空格,先来看下面的这一种方法:

 代码如下 复制代码

$arr = explode(" ",$a);
foreach ($arr as $value)
{
$result.=$value;
}
echo "去除空白后:".$result;

另外还有一种方法如下:

 代码如下 复制代码

$str=str_replace(" ","",$str);
$str=str_replace(chr(32),"",$str)

上面的方法只能处理英文空格的情况.
下面的方法可以处理中文只的空格,不过有个情况是如果页面指定了编码的话会出现乱码

 代码如下 复制代码

$str=str_replace(chr(32),"",$str);
$str=str_replace(chr(161),"",$str);

对于页面为UTF-8是,中文空格提交后变成了chr(227),原应为chr(161)

后面测试了使用trim(), ltrim(), rtrim()函数也可以达到我们要的效果

下面将介绍trim()系统函数的语法和使用:

string trim(string $str [, string $charlist])
trim()函数对输入的字符串进行去除开始位置和结束位置的空格(其实不只是空格)。
如果不设置第二个参数,trim()函数将会去除以下字符:
” ” : 空格;
“\t”: 制表符;
“\n”: 换行符;
“\r”: 回车符;
“\0″: 空字符;
“\x0B”: 垂直制表符;
如果设置第二个参数,trim()函数将只去除第二个参数中的字符集,而不会再去除上面默认的字符集。

 代码如下 复制代码
1 <?php
2 $str = "  hello world   ";
3 $str_trim = trim($str);
4 echo "$str<br />$str_trim";
5 ?>
看一下输出结果:
hello world hello world

怎么是一样的呢?第一行的空格怎么不见了。呵呵。我们在看一下网页的HTML代码吧:
hello world hello world
空格出现了吧!空格不见是因为浏览器显示时自动进行不显示多除的空格。

 代码如下 复制代码
1 <?php
2 $str = "Left hello world Right ";
3 $str_trim = trim($str,"eftL");
4 echo "$str<br />$str_trim";
5 ?>
输出结果为:
Left hello world Right hello world Right

我们将左则和eftL字符相关的都去除了,你可能注意到了,右侧的Right中的”t”也在第二个参数中,为什么没去除。仔细看一下$str最后一个字符,其实是空格。因为空格(最右侧)没有去除(在HTML中能看见),所以”t”(右侧倒数第二)将不会处理。这同时说明函数第二个参数会覆盖trim()的默认字符集。
最后说一下ltrim()和rtrim()函数:
ltrim()函数只处理字符串的左侧;
rtrim()函数只处理字符串的右侧;

通过正则表达式替换,功能更强

php去除字符串首尾空格(包括全角)

 代码如下 复制代码

<?
$str="     脚本之家 www.111cn.net     ";
$str = mb_ereg_replace('^( | )+', '', $str);
$str = mb_ereg_replace('( | )+$', '', $str);
echo mb_ereg_replace('  ', "\n  ", $str);
?>

获取给出汉字中拼音的第一个汉字字母我们可以利用汉字的一个编码来进行判断,下面我们来给大家介绍一个例子,非常的简单好用。

先来看看怎样取得单个汉字的拼音首字母,请看下面这个函数,它支持GBK和UTF8编码:

 代码如下 复制代码

function getfirstchar($s0){  
 $fchar = ord($s0{0});
 if($fchar >= ord("A") and $fchar <= ord("z") )return strtoupper($s0{0});
 $s1 = iconv("UTF-8","gb2312", $s0);
 $s2 = iconv("gb2312","UTF-8", $s1);
 if($s2 == $s0){$s = $s1;}else{$s = $s0;}
 $asc = ord($s{0}) * 256 + ord($s{1}) - 65536;
 if($asc >= -20319 and $asc <= -20284) return "A";
 if($asc >= -20283 and $asc <= -19776) return "B";
 if($asc >= -19775 and $asc <= -19219) return "C";
 if($asc >= -19218 and $asc <= -18711) return "D";
 if($asc >= -18710 and $asc <= -18527) return "E";
 if($asc >= -18526 and $asc <= -18240) return "F";
 if($asc >= -18239 and $asc <= -17923) return "G";
 if($asc >= -17922 and $asc <= -17418) return "H";
 if($asc >= -17417 and $asc <= -16475) return "J";
 if($asc >= -16474 and $asc <= -16213) return "K";
 if($asc >= -16212 and $asc <= -15641) return "L";
 if($asc >= -15640 and $asc <= -15166) return "M";
 if($asc >= -15165 and $asc <= -14923) return "N";
 if($asc >= -14922 and $asc <= -14915) return "O";
 if($asc >= -14914 and $asc <= -14631) return "P";
 if($asc >= -14630 and $asc <= -14150) return "Q";
 if($asc >= -14149 and $asc <= -14091) return "R";
 if($asc >= -14090 and $asc <= -13319) return "S";
 if($asc >= -13318 and $asc <= -12839) return "T";
 if($asc >= -12838 and $asc <= -12557) return "W";
 if($asc >= -12556 and $asc <= -11848) return "X";
 if($asc >= -11847 and $asc <= -11056) return "Y";
 if($asc >= -11055 and $asc <= -10247) return "Z";
 return null;
}

 以上函数返回单个汉字的拼音首字母。

当需要处理中文字符串时,只需要重新写一个函数,用来取得一串汉字的拼音首字母。

 代码如下 复制代码

function pinyin1($zh){
 $ret = "";
    $s1 = iconv("UTF-8","gb2312", $zh);
    $s2 = iconv("gb2312","UTF-8", $s1);
    if($s2 == $zh){$zh = $s1;}
 for($i = 0; $i < strlen($zh); $i++){
  $s1 = substr($zh,$i,1);
  $p = ord($s1);
  if($p > 160){
   $s2 = substr($zh,$i++,2);
   $ret .= getfirstchar($s2);
  }else{
   $ret .= $s1;
  }
 }
 return $ret;
}

上面这个函数就是获取汉字拼音首字母的函数,使用示例:

echo pinyin1('这是中文字符串');

结果输出:ZSZWZFC

补充在 getfirstchar函数中我们有两种写法

第一种是我们上面用到的例子

 代码如下 复制代码

function getfirstchar($s0){  
 $fchar = ord($s0{0});
 if($fchar >= ord("A") and $fchar <= ord("z") )return strtoupper($s0{0});

而另一种是我们使用的数字方法了,也比较简单了。

 代码如下 复制代码

function getFirstChar($string) {
$firstCharOrd = ord(strtoupper($string{0}));
if (($firstCharOrd >= 65 && $firstCharOrd <= 91) || ($firstCharOrd >= 48 && $firstCharOrd <= 57))
return strtoupper($string{0});

输出json格式的数据是非常的简单,如果我们希望输入的json数据非常的整洁漂亮有格式我们要怎么来处理呢?下面一聚教程小编就为各位介绍一下吧,希望例子能帮助到各位同学哦。

php直接输出json格式

php直接输出json格式,很多新手有一个误区,以为用echo json_encode($data);这样就是输出json数据了,没错这样输出文本是json格式文本而不是json数据,正确的写法是应该加一句:

 代码如下 复制代码
<?php
 
header('Content-type:text/json');     //这句是重点,它告诉接收数据的对象此页面输出的是json数据;
$json={"name":"yovae","password":"12345"};    //虽然这行数据形式上是json格式,如果没有上面那句的话,它是不会被当做json格式的数据被处理的;
echo $json;
?>



例子

JSON 数据格式化函数

将字符串形式的 JSON 数据格式化为缩进形式。通常使用 json_encode 转换出来的 JSON 串没有缩进,有这个方法就爽多了。
这里我默认使用了 tab 缩进,如果要改成空格,替换变量 $indentStr 即可。

 代码如下 复制代码
/**
 * Indents a flat JSON string to make it more human-readable.
 * @param string $json The original JSON string to process.
 * @return string Indented version of the original JSON string.
 */
function indent ($json) {

$result = '';
$pos = 0;
$strLen = strlen($json);
$indentStr = '';
$newLine = "\n";
$prevChar = '';
$outOfQuotes = true;

for ($i=0; $i<=$strLen; $i++) {

// Grab the next character in the string.
$char = substr($json, $i, 1);
// Are we inside a quoted string?
if ($char == '"' && $prevChar != '\\') {
$outOfQuotes = !$outOfQuotes;
// If this character is the end of an element,
// output a new line and indent the next line.
} else if(($char == '}' || $char == ']') && $outOfQuotes) {
$result .= $newLine;
$pos --;
for ($j=0; $j<$pos; $j++) {
$result .= $indentStr;
}
}
// Add the character to the result string.
$result .= $char;
// If the last character was the beginning of an element,
// output a new line and indent the next line.
if (($char == ',' || $char == '{' || $char == '[') && $outOfQuotes) {
$result .= $newLine;
if ($char == '{' || $char == '[') {
$pos ++;
}
for ($j = 0; $j < $pos; $j++) {
$result .= $indentStr;
}
}
$prevChar = $char;
}

return $result;

}



好了这样输出的的json数据库非常漂亮格式化的形式了哦,在这里我就不给例子了哦,大家不防进入参考一下吧。

判断用户浏览器类型我们只要使用php中的 $_SERVER["HTTP_USER_AGENT"]就可以获取到了,但这样获取到的是非常原始的数据,我们要判断类型需要加上一段strpos($_SERVER['HTTP_USER_AGENT'],"MicroMessenger "就可以了,具体步骤如下图所示。

PHP方法:利用PHP的“_SERVER ”数组“HTTP_USER_AGENT”项,获取该页面的用户代理的信息,来完成这个工作。

 代码如下 复制代码

<?php
echo $_SERVER["HTTP_USER_AGENT"];

?>

【winows/chrome】 输出结果:

Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36
而【ios7/weixin】

下输出结果:

Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a MicroMessenger/5.0.3

在字符串中可以看出“MicroMessenger ”为微信浏览器版本,所以可以使用“MicroMessenger”参数,来判断访问来源是否为“微信浏览器”。

 代码如下 复制代码

if(strpos($_SERVER['HTTP_USER_AGENT'],"MicroMessenger "))

{

    echo "Hello Weixin";

}

Javascript方法:

function isweixin(){

    var ua = navigator.userAgent.toLowerCase();

    if(ua.match(/MicroMessenger/i)=="micromessenger") {

        return true;

    } else {

        return false;
    }

}

标签:[!--infotagslink--]

您可能感兴趣的文章: