在注册程序中常常需要php email 的正则规则,来验证验证email地址格式合法性
发现discuz他们家的判断函数倒是很实用的
function check_emailformat($email) { return (strlen($email)>6) && preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/", $email); }
a php new student
在注册程序中常常需要php email 的正则规则,来验证验证email地址格式合法性
发现discuz他们家的判断函数倒是很实用的
function check_emailformat($email) { return (strlen($email)>6) && preg_match("/^[\w\-\.]+@[\w\-\.]+(\.\w+)+$/", $email); }
在许多分页技术里,比较间的就是直接用分页函数,下面举例的是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">«First</a>' : '').($curpage > 1 ? '<a href="'.$mpurl.$pagename.'='.($curpage - 1).'" class="p_redirect">‹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">›Next</a>' : '').($to < $pages ? '<a href="'.$mpurl.$pagename.'='.$pages.'" class="p_redirect">»End</a>' : ''); $multipage = $multipage ? '<span class="p_info">Total:('.$num.')</span> '.$multipage.'' : ''; } return $multipage; }
发现一个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在线编辑器,其实没有必要提供很强悍的功能,一般是图片,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" /> </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 的乱码问题。
下面是某个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 方式传递的时候,表单
Recent Comments