PHP生成不重复标识符程序代码

 更新时间:2016年11月25日 17:22  点击:1878
生成唯一不重复的标识我们主要是根据当前的一个时间time然后再转换在md5值,这样几乎是可以保证标签的唯一性了,下面整理了一些关于PHP生成不重复标识符程序代码,希望能各位有帮助。

PHP倒是自带了生成唯一id的函数:uniqid() ,它是基于当前时间微秒数的,用法如下:

 代码如下 复制代码
 echo uniqid(); //13位的字符串
 echo uniqid("php_"); //当然你可以加上前缀
    echo uniqid("php_", TRUE); //如果第二个参数more_entropy为true则生成23位

字符串

但是它生成的标识有可能不是唯一的,所以很多人会:

 代码如下 复制代码

<?php
    //这是第一种简单的方法,当然用sha1()函数也可以。
    echo md5(uniqid());
    //第二种,利用时间戳的方法
    echo md5(time() . mt_rand(1,1000000));
?>

例子。

 代码如下 复制代码

<?
//生成唯一标识符

//sha1()函数, "安全散列算法(SHA1)"

function create_unique() {
    $data = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']
     .time() . rand();
    return sha1($data);
    //return md5(time().$data);

    //return $data;

}
?>

例子如下:

<?
$newhash = create_unique();
echo $newhash;
?>

我看到很多人使用 md5() 函数,即使它并不完全意味着这个目的:
 

 代码如下 复制代码

// generate unique string
echo md5(time() . mt_rand(1,1000000));

There is actually a PHP function named uniqid() that is meant to be used for this.

// generate unique string
echo uniqid();
/* prints
4bd67c947233e
*/

// generate another unique string
echo uniqid();
/* prints
4bd67c9472340
*/

你可能会注意到,尽管字符串是唯一的,前几个字符却是类似的,这是因为生成的字符串与服务器时间相关。

但实际上也存在友好的一方面,由于每个新生成的 ID 会按字母顺序排列,这样排序就变得很简单。
为了减少重复的概率,你可以传递一个前缀,或第二个参数来增加:
 

 代码如下 复制代码

// with prefix
echo uniqid('foo_');
/* prints
foo_4bd67d6cd8b8f
*/

// with more entropy
echo uniqid('',true);
/* prints
4bd67d6cd8b926.12135106
*/

// both
echo uniqid('bar_',true);
/* prints
bar_4bd67da367b650.43684647
*/

这个函数将产生比 md5() 更短的字符串,节省一些空间。

php生成全球唯一标识符(GUID)的方法

GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。
世界上的任何两台计算机都不会生成重复的 GUID 值。
需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。
GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。

 代码如下 复制代码

<?php
//php生成GUID
function getGuid() {
 $charid = strtoupper(md5(uniqid(mt_rand(), true)));
 
 $hyphen = chr(45);// "-"
 $uuid = substr($charid, 0, 8).$hyphen
 .substr($charid, 8, 4).$hyphen
 .substr($charid,12, 4).$hyphen
 .substr($charid,16, 4).$hyphen
 .substr($charid,20,12);

 return $uuid;
}
?>

magento导入csv文件到数据库方法我们会使用到一个插件了SplFileObject,利用SplFileObject可以实现大数据量导入了,当然我们自己写得也是可以的,但是不一定比这个要好呀。

这是magento脚本的另外一种写法。

个人觉得写的还行,高手莫见笑。

用SplFileObject来处理大数据的csv文件效率高

 

 代码如下 复制代码
<?php
require_once 'shell/abstract.php';
class Faarao_Import_Customer extends Mage_Shell_Abstract
{
protected $_files = array();
protected $_datas = array();
public function __construct() {
parent::__construct();
set_time_limit(0);
if($this->getArg('file')) {
$this->_files = array_merge(
$this->_files,
array_map(
'trim',
explode(',', $this->getArg('file'))
)
);
foreach ($this->_files as $key=>$file) {
$extension = self::get_extension($file);
if($extension != 'csv'){
unset($this->_files[$key]);
}
}
}
if(empty($this->_files)){
die(self::usageHelp());
}
}
// Shell script point of entry
public function run() {
self::getDataFromCsv();
if(empty($this->_datas)){
die("not found data in csv ! \r\n");
}
$emailBooks = array();
foreach ($this->_datas as $name => $datas) {
echo "filename: {$name} =======================\r\n";
$importNum = 0;
foreach ($datas as $key => $data) {
if(empty(trim($data[4]))){
continue;
}
$customerData['firstname'] = trim($data[0]);
$customerData['lastname'] = trim($data[1]);
$customerData['phone'] = trim($data[2]);
$customerData['mobile'] = trim($data[3]);
$customerData['email'] = trim($data[4]);
$customerData['company'] = trim($data[5]);
$customerData['billing_address'] = $data[6] . $data[7] . $data[8];
$customerData['billing_postcode'] = sprintf("%05d",trim($data[9]));
$customerData['billing_city'] = trim($data[10]);
$customerData['billing_country'] = trim($data[11]);
$customerData['shipping_address'] = $data[12] . $data[13] .$data[14];
if(empty($data[15]) && is_numeric($data[16])){
$customerData['shipping_postcode'] = sprintf("%05d",trim($data[16]));
$customerData['shipping_city'] = trim($data[17]);
$customerData['shipping_country'] = trim($data[18]);
}else{
$customerData['shipping_postcode'] = sprintf("%05d", trim($data[15]));;
$customerData['shipping_city'] = trim($data[16]);
$customerData['shipping_country'] = trim($data[17]);
}
// $customerData['email'] = 'zouhongzhao@126.com';
$customerData['country'] = 'Finland';
$customerData['password'] = self::randomkeys(10);
 
&nbsp;
 
echo "customer email {$customerData['email']} ...\r\n";
print_r($customerData);
$customer = Mage::getModel('customer/customer');
$customer->setWebsiteId(Mage::app()->getWebsite()->getId());
$customer->loadByEmail($customerData['email']);
if(!$customer->getId()) {
echo "insert ... \r\n";
$customer->setEmail($customerData['email']);
$customer->setFirstname($customerData['firstname']);
$customer->setLastname($customerData['lastname']);
$customer->setPassword($customerData['password']);
}else{
echo "update ... \r\n";
}
try {
$customer->save();
$customer->setConfirmation(null);
$customer->save();
//Make a "login" of new customer
Mage::getSingleton('customer/session')->loginById($customer->getId());
$importNum ++;
$emailBooks[$customerData['email']] = array(
'firstname'=>$customerData['firstname'],
'lastname'=>$customerData['lastname'],
'customer_mage_id'=>$customer->getId(),
'passwd'=>$customerData['password']
);
 
echo "customer save ok !\r\n";
}
catch (Exception $ex) {
echo "customer save fail !\r\n";
continue;
}
 
if(trim($customerData['billing_address']) == trim($customerData['shipping_address'])
&& $customerData['billing_postcode'] == $customerData['shipping_postcode']
&& $customerData['billing_city'] == $customerData['shipping_city']){
$same_address = array (
'firstname' => $customerData['firstname'],
'lastname' => $customerData['lastname'],
'street' => $customerData['billing_address'],
'company' => $customerData['company'],
'city' => $customerData['billing_city'],
'region_id' => '',
'region' => '',
'postcode' => $customerData['billing_postcode'],
'country_id' => 'FI',
'telephone' => $customerData['phone'],
);
 
$customAddress = Mage::getModel('customer/address');
//$customAddress = new Mage_Customer_Model_Address();
$customAddress->setData($same_address)
->setCustomerId($customer->getId())
->setIsDefaultBilling('1')
->setIsDefaultShipping('1')
->setSaveInAddressBook('1');
try {
$customAddress->save();
echo "sameAddress save ok !\r\n";
}
catch (Exception $ex) {
echo "sameAddress save fail !\r\n";
continue;
}
}else{
$billing_address = array (
'firstname' => $customerData['firstname'],
'lastname' => $customerData['lastname'],
'street' => $customerData['billing_address'],
'company' => $customerData['company'],
'city' => $customerData['billing_city'],
'region_id' => '',
'region' => '',
'postcode' => $customerData['billing_postcode'],
'country_id' => 'FI',
'telephone' => $customerData['phone'],
 
);
self::setBillingAddress($billing_address,$customer);
$shipping_address = array (
'firstname' => $customerData['firstname'],
'lastname' => $customerData['lastname'],
'street' => $customerData['shipping_address'],
'company' => $customerData['company'],
'city' => $customerData['shipping_city'],
'region_id' => '',
'region' => '',
'postcode' => $customerData['shipping_postcode'],
'country_id' => 'FI',
'telephone' => $customerData['phone'],
);
self::setShippingAddress($shipping_address,$customer);
}
// die;
}
echo "import num: {$importNum} =======================\r\n";
}
//save passwd
$fp = fopen('customer_record.log', 'w');
fwrite($fp, json_encode($emailBooks));
fclose($fp);
 
}
 
public function setBillingAddress($data,$customer){
$customerAddress = Mage::getModel('customer/address');
 
if ($defaultShippingId = $customer->getDefaultBilling()){
$customerAddress->load($defaultShippingId);
} else {
$customerAddress
->setCustomerId($customer->getId())
->setIsDefaultBilling('1')
->setSaveInAddressBook('1')
;
 
$customer->addAddress($customerAddress);
}
 
try {
$customerAddress
->addData($data)
->save()
;
echo "BillingAddress save ok !\r\n";
} catch(Exception $e){
// Mage::log('Address Save Error::' . $e->getMessage());
echo "BillingAddress save fail !\r\n";
}
}
 
public function setShippingAddress($data,$customer){
$customerAddress = Mage::getModel('customer/address');
 
if ($defaultShippingId = $customer->getDefaultShipping()){
$customerAddress->load($defaultShippingId);
} else {
$customerAddress
->setCustomerId($customer->getId())
->setIsDefaultShipping('1')
->setSaveInAddressBook('1')
;
 
$customer->addAddress($customerAddress);
}
 
try {
$customerAddress
->addData($data)
->save()
;
echo "ShippingAddress save ok !\r\n";
} catch(Exception $e){
// Mage::log('Address Save Error::' . $e->getMessage());
echo "ShippingAddress save fail !\r\n";
}
}
 
public function randomkeys($length) {
$returnStr='';
$pattern = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ';
for($i = 0; $i < $length; $i ++) {
$returnStr .= $pattern {mt_rand ( 0, 61 )};
}
return $returnStr;
}
public function getDataFromCsv(){
$this->_files = array_unique($this->_files);
$csvCustomers = array();
foreach ($this->_files as $filename) {
echo "current file: {$filename}\r\n";
setlocale(LC_ALL, 'en_US.UTF-8');
$content = file_get_contents($filename);
$data = mb_detect_encoding()($content, 'UTF-8', true);
// $data = iconv("CP1257","UTF-8", $content);
file_put_contents($filename, $content);
 
// fclose($handle);
// print_r($content);die;
$basename = basename($filename,".csv");
$data = array();
$tmp = array();
$spl_object = new SplFileObject($filename, 'rb');
$spl_object->seek(filesize($filename));
$start = 0;
$num = $spl_object->key();
$spl_object->seek($start);
while ($num-- && !$spl_object->eof()) {
$data[] = $spl_object->fgetcsv();
$spl_object->next();
}
foreach ($data as $key => $values) {
if($key == 0){
continue;
}
$mergeValue = explode(';',implode(';', $values));
// if(count($mergeValue) != 20){
// continue;
// }
array_push($tmp,$mergeValue);
}
 
$this->_datas[$basename] = $tmp;
}
return $this;
}
 
public function get_extension($filename){
return pathinfo($filename,PATHINFO_EXTENSION);
}
// Usage instructions
public function usageHelp()
{
return <<<USAGE
Usage: php tetuan_customer_import.php --file a.csv,b.csv
\n
USAGE;
}
}
// Instantiate
$shell = new Faarao_Import_Customer();
// Initiate script
$shell->run();

补充:有一些朋友使用的是excel文档,这样这个程序就不可以使用了,我们可以使用phpexcel插件来读取excel文件并写入到数据库中去哦。

php中try catch可以帮助我们捕获程序代码的异常了,这样我们可以很好的处理一些不必要的错误了,下面本文章总结了捕获异常的一些用法例子。

pHP中try{}catch{}语句

PHP 5 添加了类似于其它语言的异常处理模块。在 PHP 代码中所产生的异常可被 throw语句抛出并被 catch 语句捕获。(注:一定要先抛才能获取)
需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常。
每一个 try 至少要有一个与之对应的 catch。
使用多个 catch可以捕获不同的类所产生的异常。
当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。
当然,PHP允许在 catch 代码块内再次抛出(throw)异常。
当一个异常被抛出时,其后(译者注:指抛出异常时所在的代码块)的代码将不会继续执行,而 PHP 就会尝试查找第一个能与之匹配的 catch。
如果一个异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么 PHP 将会产生一个严重的错误,并且输出 Uncaught Exception ... (未捕获异常)的提示信息。
先来看一下PHP内置异常类的基本属性和方法。(不包括具体实现)

 代码如下 复制代码

try{

}

catch(){

throw new Exception();

}

catch(){

//这里可以捕获到前面一个块抛出的Exception

}


为了进一步处理异常,我们需要使用PHP中try{}catch{}----包括Try语句和至少一个的catch语句。任何调用 可能抛出异常的方法的代码都应该使用try语句。Catch语句用来处理可能抛出的异常。以下显示了我们处理getCommandObject()抛出的异常的方法:

 代码如下 复制代码
< ?php  
try {  
$mgr = new CommandManager();  
$cmd = $mgr->getCommandObject("realcommand");  
$cmd->execute();  
} catch (Exception $e) {  
print $e->getMessage();  
exit();  
}  
?>  

可以看到,通过结合使用throw关键字和PHP中try{}catch{},我们可以避免错误标记“污染”类方法返回的值。因为“异常”本身就是一种与其它任何对象不同的PHP内建的类型,不会产生混淆。

如果抛出了一个异常,try语句中的脚本将会停止执行,然后马上转向执行catch语句中的脚本。

例子如下:
包含文件错误抛出异常

 代码如下 复制代码

<?php
// 错误的演示
try {
require ('test_try_catch.php');
} catch (Exception $e) {
echo $e->getMessage();
}


// 正确的抛出异常
try {
if (file_exists('test_try_catch.php')) {
require ('test_try_catch.php');
} else {
throw new Exception('file is not exists');
}
} catch (Exception $e) {
echo $e->getMessage();
}

如果异常抛出了却没有被捕捉到,就会产生一个fatal error。

多个catch捕获多个异常

PHP将查询一个匹配的catch代码块。如果有多个catch代码块,传递给每一个catch代码块的对象必须具有不同类型,这样PHP可以找到需要进入哪一个catch代码块。当try代码块不再抛出异常或者找不到catch能匹配所抛出的异常时,PHP代码就会在跳转最后一个catch的后面继续执行。多个异常的捕获的示例如下:

 代码如下 复制代码

<?php
    class MyException extends Exception{
           //重定义构造器使第一个参数message变为必须被指定的属性
           public function __construct($message, $code=0){
               //可以在这里定义一些自己的代码
               //建议同时调用parent::construct()来检查所有的变量是否已被赋值
               parent::__construct($message, $code);
           }
           //重写父类中继承过来的方法,自定义字符串输出的样式
           public function __toString(){
               return __CLASS__.":[".$this->code."]:".$this->message."<br>";
           }
           //为这个异常自定义一个处理方法
           public function customFunction(){
               echo "按自定义的方法处理出现的这个类型的异常";
           }
    }
 
    //创建一个用于测试自定义扩展的异常类MyException
    class TestException{
        public $var;           //用来判断对象是否创建成功的成员属性
        function __construct($value=0){              //通过构造方法的传值决定抛出的异常
            switch($value){                          //对传入的值进行选择性的判断
                case 1:                              //掺入参数1,则抛出自定义的异常对象
                    throw new MyException("传入的值“1”是一个无效的参数",5);break;
                case 2:                              //传入参数2,则抛出PHP内置的异常对象
                    throw new MyException("传入的值“2”不允许作为一个参数",6);break;
                default:                             //传入参数合法,则不抛出异常
                    $this->var=$value;break;          //为对象中的成员属性赋值
            }
        }
    }
 
    //示例1,在没有异常时,程序正常执行,try中的代码全部执行并不会执行任何catch区块
    try{
        $testObj =new TestException();           //使用默认参数创建异常的擦拭类对象
        echo "********<br>";                     //没有抛出异常这条语句就会正常执行
    }catch(MyException $e){                      //捕获用户自定义的异常区块
        echo "捕获自定义的异常:$e<br>";          //按自定义的方式输出异常消息
        $e->customFunction();                    //可以调用自定义的异常处理方法
    }catch(Exception $e){                        //捕获PHP内置的异常处理类的对象
        echo "捕获默认的异常:".$e->getMessage()."<br>";       //输出异常消息
    }
    var_dump($testObj);        //判断对象是否创建成功,如果没有任何异常,则创建成功
 
    //示例2,抛出自定义的异常,并通过自定义的异常处理类捕获这个异常并处理
    try{
        $testObj1 =new TestException(1);         //传1时,抛出自定义异常
        echo "********<br>";                     //这个语句不会被执行
    }catch(MyException $e){                      //这个catch区块中的代码将被执行
        echo "捕获自定义的异常:$e<br>";         
        $e->customFunction();                   
    }catch(Exception $e){                        //这个catch区块不会执行
        echo "捕获默认的异常:".$e->getMessage()."<br>";      
    }
    var_dump($testObj1);        //有异常产生,这个对象没有创建成功
 
    //示例2,抛出自内置的异常,并通过自定义的异常处理类捕获这个异常并处理
    try{
        $testObj2 =new TestException(2);         //传入2时,抛出内置异常
        echo "********<br>";                     //这个语句不会被执行
    }catch(MyException $e){                      //这个catch区块中的代码将被执行
        echo "捕获自定义的异常:$e<br>";         
        $e->customFunction();                   
    }catch(Exception $e){                        //这个catch区块不会执行
        echo "捕获默认的异常:".$e->getMessage()."<br>";      
    }
    var_dump($testObj2);        //有异常产生,这个对象没有创建成功
?>

 在上面的代码中,可以使用两个异常处理类:一个是自定义的异常处理类MyException;另一个则是PHP中内置的异常处理类Exception。分别在try区块中创建测试类TestException的对象,并根据构造方法中提供的不同数字参数,抛出自定义异常类对象、内置的异常类对象和不抛出任何异常的情况,跳转到对应的catch区块中执行。如果没有异常发生,则不会进入任何一个catch块中执行,测试类TestException的对象创建成功

清除变量中字符中的空格我们有几种方法,因为很多时候我们使用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);
?>

我们会看到有少的网站在用户登录一次之后下一次会显示你上次登录的时间了,实现这种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了就没有下载一次了哦。

[!--infotagslink--]

相关文章

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

    这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
  • C++调用C#的DLL程序实现方法

    本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
  • 微信小程序 页面传值详解

    这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
  • C#使用Process类调用外部exe程序

    本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
  • 使用GruntJS构建Web程序之构建篇

    大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
  • uniapp微信小程序:key失效的解决方法

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

    本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • 将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文

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

    本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
  • C#生成随机数功能示例

    这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • 微信小程序自定义tabbar组件

    这篇文章主要为大家详细介绍了微信小程序自定义tabbar组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-14
  • 微信小程序二维码生成工具 weapp-qrcode详解

    这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
  • 微信小程序 网络请求(GET请求)详解

    这篇文章主要介绍了微信小程序 网络请求(GET请求)详解的相关资料,需要的朋友可以参考下...2016-11-22
  • php生成唯一数字id的方法汇总

    关于生成唯一数字ID的问题,是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢?当然不是,其实有两种方法可以解决。 1. 如果你只用php而不用数据库的话,那时间戳+随...2015-11-24
  • 微信小程序如何获取图片宽度与高度

    这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
  • jQuery为动态生成的select元素添加事件的方法

    下面小编就为大家带来一篇jQuery为动态生成的select元素添加事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-09-01
  • Python爬取微信小程序通用方法代码实例详解

    这篇文章主要介绍了Python爬取微信小程序通用方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-29
  • 微信小程序(应用号)开发新闻客户端实例

    这篇文章主要介绍了微信小程序(应用号)开发新闻客户端实例的相关资料,需要的朋友可以参考下...2016-10-25
  • PHP自动生成后台导航网址的最佳方法

    经常制作开发不同的网站的后台,写过很多种不同的后台导航写法。 最终积累了这种最写法,算是最好的吧...2013-09-29