php 用户cookie登录验证与mysql数据登录验证的方法

 更新时间:2016年11月25日 15:09  点击:2012

php教程 用户cookie登录验证与mysql教程数据登录验证的方法

 

<?php
unset($username);
if ($_COOKIE['login']) {
    list($c_username,$cookie_hash) = split(',',$_COOKIE['login']);
    if (md5($c_username.$secret_word) == $cookie_hash) {
        $username = $c_username;
    } else {
        print "You have sent a bad cookie.";
    }
}

if ($username) {
    print "Welcome, $username.";
} else {
    print "Welcome, anonymous user.";
}
?>


 

看个完整的与数据库教程连接登录的代码

<html>

 <head>
  <title>Log-In Page</title>
 </head>

 <body>
 Please enter your user details to log-in here...

 <form action = "authenticate.php" method = "post">
 Username:<br>
 <input type = "text" name = "username">
 <br><br>
 Password:<br>
 <input type = "text" name = "password">
 <br><br>
 <input type = "submit" value = "Log In">
 </form>

 </body>

</html>

File: authenticate.php


<?php

$username = $_POST['username'];
$password = $_POST['password'];
$self =     $_SERVER['PHP_SELF'];
$referer =  $_SERVER['HTTP_REFERER'];

if( ( !$username ) or ( !$password ) )
{ header( "Location:$referer" ); exit(); }

$conn=@mysql_connect( "localhost", "userName", "password" ) or die( "Could not connect" );

$rs = @mysql_select_db( "my_database", $conn ) or die( "Could not select database" );
$sql = "select * from users where user_name="$username" and password = password( "$password" )";
 
$rs = mysql_query( $sql, $conn ) or die( "Could not execute query" );

$num = mysql_numrows( $rs );

if( $num != 0 )
{
  $msg = "<h3>Welcome $username - your log-in succeeded!</h3>";
}
else
{
  header( "Location:$referer" ); exit();
}
?>

<html>

 <head>
  <title>Log-In Authenticated</title>
  </head>

  <body>
   <?php echo( $msg ); ?>
  </body>

</html>

php教程数组与对象相互转换方法

function arrayToObject($e){
    if( gettype($e)!='array' ) return;
    foreach($e as $k=>$v){
        if( gettype($v)=='array' || getType($v)=='object' )
            $e[$k]=(object)arrayToObject($v);
    }
    return (object)$e;
}

function objectToArray($e){
    $e=(array)$e;
    foreach($e as $k=>$v){
        if( gettype($v)=='resource' ) return;
        if( gettype($v)=='object' || gettype($v)=='array' )
            $e[$k]=(array)objectToArray($v);
    }
    return $e;
}

关于数组转换为对象,在phpx有看到一些帖子讨论

$andy = array();
$andy['a'] = 1;
$andy['b'] = 2;
$andy['c'] = 3;

把andy强制转换为数组,似乎引用的方便些了,主要是变成了->

$andy = array();
$andy = (object)$andy;
$andy->a = 1;
$andy->b = 2;
$andy->c = 3;

还嫌它麻烦,再用StdClass

$andy = new StdClass;
$andy->a = 1;
$andy->b = 2;
$andy->c = 3;

stdClass 是PHP的一个基类,所有的类几乎都继承这个类,所以任何时候都可以被new,可以

让这个变量成为一个object。同时,这个基类又有一个特殊的地方, 就是没有方法。在这里

还有一点是对象和数组资源耗费的问题:PHP5的对象的独特性,对象在任何地方被调用,都

是引用地址型的,所以相对消耗的资源会少一 点。在其它页面为它赋值时是直接修改,而不

是引用一个拷贝。数组在程序的使用中应该是最方便的,然而数组的每次被引用($a = $b)

,其实都是创建了一个副本,而且,数组被unset后,还是占用了内存(没有测试过)。还有

一个函数arrayobject,可以直接将数组转化为 对象这也是一个好办法哦。
ArrayObject::__construct -- Construct a new array object

<?php
$array = array('1' => 'one',
'2' => 'two',
'3' => 'three');

$arrayobject = new ArrayObject($array);

print_r($arrayobject);
?>

ArrayObject Object
(
    [1] => one
    [2] => two
    [3] => three
)

试验了一下对象转换为数组,也可以强制转换

$arr = (array)$obj;

如下例子转换结果,可对比:

Tag Object
(
    [name] => main
    [text] =>
    [parrent] =>
    [content] =>
    [props教程] => Array
        (
        )

    [inner] => Array
        (
        )

    [level] => 0
)

Array
(
    [name] => main
    [text] =>
    [parrent] =>
    [content] =>
    [props] => Array
        (
        )

    [inner] => Array
        (
        )

    [level] => 0
)

unlink() 函数删除文件。
若成功,则返回 true,失败则返回 false。
语法
unlink(filename,context)
参数 描述
filename 必需。规定要删除的文件。
context 可选。规定文件句柄的环境。Context 是可修改流的行为的一套选项。

 

<?php教程
   $file_delete = "home/meeta/my.php";
  
   if (unlink($file_delete)) {
      echo "The file was deleted successfully.", "n";
   } else {
      echo "The specified file could not be deleted. Please try again.", "n";
   }
?>

下面加了判断文件是否存在

<?php
  $myfile = "./test1.txt";
  if (file_exists($myfile)) {
    $result=unlink ($myfile);
    echo $result;
  }
  ?>

file_exists() 函数检查文件或目录是否存在。
如果指定的文件或目录存在则返回 true,否则返回 false。
语法
file_exists(path)

array preg_split ( string pattern, string subject [, int limit [, int flags]])

返回一个数组,包含 subject 中沿着与 pattern 正则表达式来匹配的边界所分割的子串。

如果指定了 limit,则最多返回 limit 个子串,如果 limit 是 -1,则意味着没有限制,可以用来继续指定可选参数 flags。

flags 可以是下列标记的任意组合(用按位或运算符 | 组合):

PREG_SPLIT_NO_EMPTY
如果设定了本标记,则 preg_split() 只返回非空的成分

看个实例

<?php教程
$word_count = $word_length = 0;

if ($fh = fopen('novel.txt','r')) {
  while (! feof($fh)) {
    if ($s = fgets($fh)) {
      $words = preg_split('/s+/',$s,-1,PREG_SPLIT_NO_EMPTY);
      foreach ($words as $word) {
        $word_count++;
        $word_length += strlen($word);
      }
    }
  }
}

print sprintf("The average word length over %d words is %.02f characters.",
              $word_count,
              $word_length/$word_count);
?>

简单应用

<?
$user_info = "+J+++G+++++w";
$fields = preg_split("/+{1,}/", $user_info);
while ($x < sizeof($fields)) :
   print $fields[$x]. "<br>";
   $x++;
endwhile;
?>

由于分割后变成了数组,所以我们要利用foreach 来遍历输出了。

<?php
   $delimitedText = "+A+++G+++++++++++C";
   $fields = preg_split("/+{1,}/", $delimitedText);
    foreach($fields as $field) echo $field."<br />";
?>

<?
$text = "a, o, p";
$fruitarray = preg_split( "/, | and /", $text );
print "<pre>n";
print_r( $fruitarray );
print "</pre>n";
?>
 

php教程 float浮点型数据应用详解

1 float round ( float $val [, int $precision ] ) 返回将 val 根据指定精度 precision (十进制小数点后数字的数目)进行四舍五入的结果。precision 也可以是负数或零(默认值)。

     echo round(4.3)  //4

2 string sprintf ( string $format [, mixed $args [, mixed $... ]] ) 返回格式化数据的字符串

view sourceprint?$a=12.338938438; 

echo sprintf("%.5f",$a) //结果:12.33894  

  

  

$a=12.3312356; 

echo sprintf("%.5f",$a);//12.33124 

echo sprintf("%f",$a);//331236  默认小数点后6位

 

3 string number_format ( float $number , int $decimals , string $dec_point , string $thousands_sep )

view sourceprint?$number = 1234.5678; 

  

$english_format_number = number_format($number, 2, '.', ''); 

echo  $english_format_number ; // 1234.57

以上这些都自动做了四舍五入,有时候需求不需要四舍五入呢,怎么办,没有想到好办法,谁知道可以告诉一声。

自己写了个麻烦点的函数,记录下

view sourceprint?function getFloatValue($f,$len) 

  $tmpInt=intval($f); 

  

  $tmpDecimal=$f-$tmpInt; 

  $str="$tmpDecimal"; 

  $subStr=strstr($str,'.'); 

  if(strlen($subStr)<$len+1) 

 { 

  $repeatCount=$len+1-strlen($subStr); 

  $str=$str."".str_repeat("0",$repeatCount); 

  

 } 

  

  return    $tmpInt."".substr($str,1,1+$len); 

  

echo getFloatValue(12.99,4) //12.9900 

echo getFloatValue(12.9232555553239,4) //12.9232

[!--infotagslink--]

相关文章

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

    PHPEMS(PHP Exam Management System)在线模拟考试系统基于PHP+Mysql开发,主要用于搭建模拟考试平台,支持多种题型和展现方式,是国内首款支持题冒题和自动评分与教师评分相...2016-11-25
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • php中登录后跳转回原来要访问的页面实例

    在很多网站用户先访问一个要登录的页面,但当时没有登录后来登录了,等待用户登录成功之后肯定希望返回到上次访问的页面,下面我就来给大家介绍登录后跳转回原来要访问的页...2016-11-25
  • php中用curl模拟登录discuz以及模拟发帖

    本文章完美的利用了php的curl功能实现模拟登录discuz以及模拟发帖,本教程供参考学习哦。 代码如下 复制代码 <?php $discuz_url = &lsquo;ht...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
  • Ruby on Rails实现最基本的用户注册和登录功能的教程

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

    一个用Javascript检测用户输入密码强度的效果代码,以下代码主要是从以下四个方面检测用户输入的密码的强度的,有兴趣的朋友可以自己添加或修改成自己想要的形式! 1. 如果输入的密码位数少于5位,那么就判定为弱。 2. 如果...2015-10-23
  • 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中SSO Cookie登录分析和实现

    什么是SSO?单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护...2015-11-08
  • php有效防止同一用户多次登录

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

    什么是SSO?单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护...2015-11-08
  • vue实现用户登录切换

    这篇文章主要为大家详细介绍了vue实现用户登录切换,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-04-22
  • vue项目中js-cookie的使用存储token操作

    这篇文章主要介绍了vue项目中js-cookie的使用存储token操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-14
  • php ajax注册验证用户名是否存在代码

    这是注册程序是一款当用户输入完用户名是,就会自动去数据库中查询用户要注册的用户名是否己经被注册了,如果是返回提示否则提示可以注册。 conn.php文件 代...2016-11-25
  • 修改mysql密码phpmyadmin不能登录

    出现phpmyadmin不能登录是我在修改我mysql服务器密码之后导致的,后来百度了相关的原因,原来是修改了mysql密码之后我们还需要在phpmyadmin目录中去修改config.inc.php中...2016-11-25
  • Vue-Element-Admin集成自己的接口实现登录跳转

    关于这个Vue-element-admin中的流程可能对于新的同学不是很友好,所以本文将结合实例代码,介绍Vue-Element-Admin集成自己的接口实现登录跳转,感兴趣的小伙伴们可以参考一下...2021-06-23
  • 浅谈js二维码扫码登录是什么原理

    这篇文章主要介绍了浅谈js二维码扫码登录是什么原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
  • 什么是cookie?js手动创建和存储cookie

    什么是cookie? cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。你可以使用 JavaScript 来创建和取回 cookie 的值。 有关cookie的例子: 名字 cookie 当访...2014-05-31
  • 微信小程序用户授权最佳实践指南

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