php email 正则-验证email地址格式合法性

php技巧 No Comments

在注册程序中常常需要php email 的正则规则,来验证验证email地址格式合法性
发现discuz他们家的判断函数倒是很实用的

function check_emailformat($email)
{
	return (strlen($email)>6) && preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/", $email);
}

分页技术-简单的分页函数-php分页版-一个分页技巧

php技巧 No Comments

在许多分页技术里,比较间的就是直接用分页函数,下面举例的是php分页函数,实际你可以参照它改写成asp的分页函数。

这个分页技术过程是:需要知道参数:总项目数,每页项目数,当前页,分页的url

这个分页函数每个参数的意义,总项目数-这个应该不用解释吧,比如你有多少篇文章要分页?总数5566篇文章?

每页项目数,意思是,这5566篇文章,你每页的展示数量是多少?20篇文章每页?

当前页:意思是,第一页,第二页,一般这个参数由 page=1 这样传递进来

分页的url,意思是,什么脚本在分页,比如你的显示结果是:index.php?page=1,那毫无疑问这里应该设定为index.php

最后,这个分页函数在使用过程中,你可以添加一个参数:$pagename=’page’

这个一般在:同一个页面中有两个类别要分页,而需要的

举例子:比如,bbs程序里,展示这个用户,发表过的文章和这个用户发表过的图片,这是两个分页过程

有可能某一页的结果是:user.php?action=showinfo&articlepages=2&imgpages=3

这样,articlepages=2 可以传递进来,表示这个用户发表过的文章,分页:第二页

而imgpages=3 则可以表示为,这个用户发表过的图片集,分页:第三页

解释的不太清楚,实际使用的时候体会一下就明白了,呵呵

function smulti($num, $perpage, $curpage, $mpurl,$pagename='page') {
	$multipage = '';
	$mpurl .= strpos($mpurl, '?') ? '&' : '?';
	if($num > $perpage) {
		$page = 10;
		$offset = 5;
		$pages = @ceil($num / $perpage);
		if($page > $pages) {
			$from = 1;
			$to = $pages;
		} else {
			$from = $curpage - $offset;
			$to = $curpage + $page - $offset - 1;
			if($from < 1) {
				$to = $curpage + 1 - $from;
				$from = 1;
				if(($to - $from) < $page && ($to - $from) < $pages) {
					$to = $page;
				}
			} elseif($to > $pages) {
				$from = $curpage - $pages + $to;
				$to = $pages;
				if(($to - $from) < $page && ($to - $from) < $pages) {
					$from = $pages - $page + 1;
				}
			}
		}
 
		$multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="'.$mpurl.$pagename.'=1" class="p_redirect">&laquo;First</a>' : '').($curpage > 1 ? '<a href="'.$mpurl.$pagename.'='.($curpage - 1).'" class="p_redirect">&#8249;Pre</a>' : '');
		for($i = $from; $i <= $to; $i++) {
			$multipage .= $i == $curpage ? '<span class="p_curpage">'.$i.'</span>' : '<a href="'.$mpurl.$pagename.'='.$i.'" class="p_num">'.$i.'</a>';
		}
		$multipage .= ($curpage < $pages ? '<a href="'.$mpurl.$pagename.'='.($curpage + 1).'" class="p_redirect">&#8250;Next</a>' : '').($to < $pages ? '<a href="'.$mpurl.$pagename.'='.$pages.'" class="p_redirect">&raquo;End</a>' : '');
		$multipage = $multipage ? '<span class="p_info">Total:('.$num.')</span> '.$multipage.'' : '';
 
 
	}
	return $multipage;
}

 

php 伪ajax 上传文件 实现无刷新上传文件

php技巧 No Comments

发现一个php 伪ajax 上传文件示例,写得比较拖沓,我只把其中有用的部分提取出来,实现无刷新上传文件

 先看代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
 
$upload_dir = 'savedir';  //文件存储的路径
 
 
//处理上传的文件
if (isset($_POST['fileframe']))
{
	$result='ERROR';
	$result_msg = 'No FILE field found';
	if(isset($_FILES['file']))
	{
		if ($_FILES['file']['error'] == UPLOAD_ERR_OK)
{$filename = $_FILES['file']['name'];
move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir.'/'.$filename); 
$result = 'OK';
}
elseif ($_FILES['file']['error'] == UPLOAD_ERR_INI_SIZE)
$result_msg = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
else 
$result_msg = 'Unknown error';
	}
 
echo '<html><head><title>-</title></head><body>';
echo '<script language="JavaScript" type="text/javascript">'."\n";
echo 'var parDoc = window.parent.document;';
 
if ($result == 'OK')
{
 echo 'parDoc.getElementById("upload_status").innerHTML = "文件[ '.$filename.' ]上传完成";';
 echo 'parDoc.getElementById("file").form.reset();';
echo 'parDoc.getElementById("file").disabled = false;';
 }
 else
 {
 echo 'parDoc.getElementById("upload_status").innerHTML = "ERROR: '.$result_msg.'";';
 }
 
 echo "\n".'</script></body></html>';
 exit();
}
?>
<!-- Beginning of main page -->
<html><head>
<title>IFRAME 无刷新上传文件示例</title>
</head>
<body>
 
<h1>上传文件:</h1>
<p>文件在选择完成后即刻进行上传 </p>
 
<form action="<?=$PHP_SELF?>" target="upload_iframe" method="post" enctype="multipart/form-data">
 <input type="hidden" name="fileframe" value="true">
 <!-- Target of the form is set to hidden iframe -->
 <!-- From will send its post data to fileframe section of this PHP script (see above) -->
 
 <label for="file">text file uploader:</label><br>
 <!-- JavaScript is called by OnChange attribute -->
 <input type="file" name="file" id="file" onChange="jsUpload(this)">
</form>
<script type="text/javascript">
/* This function is called when user selects file in file dialog */
function jsUpload(upload_field)
{
 // this is just an example of checking file extensions
 // if you do not need extension checking, remove 
 // everything down to line
 // upload_field.form.submit();
 
 var re_text = /\.txt|\.xml|\.zip/i;
 var filename = upload_field.value;
 
 /* Checking file type */
 if (filename.search(re_text) == -1)
 {
 alert("File does not have text(txt, xml, zip) extension");
 upload_field.form.reset();
 return false;
 }
 
 upload_field.form.submit();
upload_status.innerHTML = "文件上传中...";
 upload_field.disabled = true;
 return true;
}
</script>
<iframe name="upload_iframe" style="width: 400px; height: 100px; display: none;">
</iframe>
<!-- For debugging purposes, it's often useful to remove
"display: none" from style="" attribute -->
 
<br>
上传状态:<br>
<span id="upload_status">请选择文件</span>
<br><br>
 
Example by <a href="http://blog.asdjkl.net/">jason's blog</a>
</body>
</html>

我只是给出一个php ajax 文件无刷新上传的例子,这里面还有其他很多工作要补充的
比如:文件存储的目录,文件的类别判断,文件上传成功后做好记录,等等这些工作,根据你的实际需要进行调整。

php 在线编辑器-一个从Ucenter home中剥离的在线编辑器

php技巧 3 Comments

我其实和很多人一样一直在找一个简单可用用的php在线编辑器,其实没有必要提供很强悍的功能,一般是图片,swf,链接,也就够了。
在研究uch的过程中感觉它的在线编辑器还是不错的,而且调用还是挺间的。
看了一下,我觉得包含这样这份文件,你就可以用这个php在线编辑器了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//先说如何使用
<form id="postform" name="postform" method="post" action="test.php">
 <textarea class="userData" name="message" id="uchome-ttHtmlEditor" style="height:100%;width:100%;display:none;border:0px"></textarea>
  <iframe src="editor.php?charset=utf-8&allowhtml=1" name="uchome-ifrHtmlEditor" id="uchome-ifrHtmlEditor" scrolling="no" border="0" frameborder="0" style="width:100%;border: 1px solid #C5C5C5;" height="200"></iframe>
  <input type="hidden" name="confirmgo" value="go" />
  <input type="submit" name="posteditsubmit_btn" id="posteditsubmit_btn" onclick="edit_save();" value="提交" class="submit" />&nbsp;
  </form>
  <?php
  if ($_POST['confirmgo']=='go') {
  	$message = $_POST['message'];
  	echo '拿到-->'.$message.'<--';
  	exit();
  }
 ?>

简单吧,你很简单的从message这个值拿到用户输入的东西了。
当然,至于一些过滤什么的,请自行考虑。
下面说说包含的文件
1.editor.php
2.source/script_common.js
3.image/editor 这个目录的所有文件

4.请研究一下js文件里的函数,一些无关函数完全可以删掉,进行进一步的精简。总共php+js的大小大约是40k 50k不到。

怎么样,这个php在线编辑器简单吧?

php ajax 初步应用以及php ajax乱码问题。

php技巧 No Comments

php ajax 的应用主要是用在一些不需要刷新的数据提交上,随便起一个例子
顺便看看php ajax 的乱码问题。

下面是某个xxx.js的源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/**
 * 初始化一个xmlhttp对象
 */
function InitAjax()
{
 var ajax=false; 
 try { 
  ajax = new ActiveXObject("Msxml2.XMLHTTP"); 
 } catch (e) { 
  try { 
   ajax = new ActiveXObject("Microsoft.XMLHTTP"); 
  } catch (E) { 
   ajax = false; 
  } 
 }
 if (!ajax && typeof XMLHttpRequest!='undefined') { 
  ajax = new XMLHttpRequest(); 
 } 
 return ajax;
}
 
 
function go()
{
 
var currSelectValue = document.getElementById("username").value; 
 
 //接收表单的URL地址
 var url = "./index.php";
 
//需要POST的值,把每个变量都通过&来联接
 var postStr  = "username="+ currSelectValue;
 
//实例化Ajax
 var ajax = InitAjax();
 
 //通过Post方式打开连接
 ajax.open("POST", url, true); 
 
 //定义传输的文件HTTP头信息
 ajax.setrequestheader("content-length",postStr.length); 
 ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
 
 //发送POST数据
 ajax.send(postStr);
 
 //获取执行状态
 ajax.onreadystatechange = function() { 
  //如果执行状态成功,那么就把返回信息写到指定的层里
  if (ajax.readyState == 4 && ajax.status == 200) { 
 
	 msg.innerHTML = ajax.responseText; 
 
  } 
 }
 
}
 
//对应的index.php 也许是这个样子
 
<?php
header("Content-Type:text/html;charset=GBK"); //指定php输出编码为gbk 防止乱码
 
$username = $_POST['username'];
 
$username = iconv('utf-8','gbk',$username); //请记住ajax进来的参数都是utf-8格式的,一般需要转换
 
exit('你的名字是:'.$username);
 
?>
 
 
//对应的html也许是这个样子
<input type="text" id="username" value="" /> //输入username的地方
 
<div id="msg"></div>
 
//其他代码省略。

这就是一个相对完整的php ajax应用了,当然上面的程序什么也没干
它的经过是这样:
在input框里输入一些字符(你可以试试中文以便验证回显是否乱码)
然后通过类似 onclick=”go()” 这样的方式去执行 go 函数
go函数里面写得很详细了,它把需要的参数组织起来,做成一个 url,然后通过Post方式打开连接。
这个链接执行了index.php这个php程序。取得username直接返回,反馈的信息会显示在msg.innerHTML

这里要说一句,思想要放开点,如果你把exit那句代码改成
exit(’
我的名字是:‘.$username.’‘); 它将会先回车一行,然后显示 我的名字是:xxxx
xxxx还是红色的字体哦。

所以,相当于你几乎可以做任何事情。

上面是php ajax 的post方式传递,还有另外一种get方式传递

get只传递比较少的值
上面的xxx.js大约改成这样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function go()
{
 
var currSelectValue = document.getElementById("username").value; 
 
 //接收表单的URL地址
 var url = "./index.php?username="+currSelectValue;
 
//实例化Ajax
 var ajax = InitAjax();
 
 //通过Post方式打开连接
 ajax.open("GET", url, true); 
 
 //定义传输的文件HTTP头信息
 ajax.setrequestheader("content-length",postStr.length); 
 ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
 
 
 
 //获取执行状态
 ajax.onreadystatechange = function() { 
  //如果执行状态成功,那么就把返回信息写到指定的层里
  if (ajax.readyState == 4 && ajax.status == 200) { 
 
	 msg.innerHTML = ajax.responseText; 
 
  } 
 }
 
//发送空
 ajax.send(null);
 
}

其实差不多的。

php ajax使用注意:
1.多个参数传递需要用&连接起来
2.POST 方式传递的时候,表单

里面不需要 method=”post” action=”" 这些东西
3.参数经过ajax 传到php里,必然是utf8的,请注意转码。
一般情况下是可以防止php ajax乱码的。

Icons by N.Design Studio. Designed By Ben Swift. Powered by WordPress and Free WordPress Themes
Entries RSS Comments RSS Log in