昨晚,云安全有一个小伙伴请我吃饭,说他要来态势感知,给我当小弟。一番寒暄得知,他最近过得不好,不喜欢Java太多的框架,不喜欢SDN控制器。其实,他是个很聪明的小伙子,高考满分750,他考了600多分,可以上末流985大学。英语单词,过目不忘,诗词歌赋,随手拈来。大家都开玩笑,为啥想不开要做程序员啊~
今天看到一个有趣的段子值得分享,他说电影院里中间有一个人站起来了,后面的人只好跟着站起来,但是看的电影并没有改变;有一个人使用抢票软件加速买票,后来大家都使用抢票软件了,但是票的数量并没有改变;有一个人上补习班成绩好了,后来大家都上补习班,但是高校录取的人数并没有改变~
一、PHP的全局变量
元素 | 例子 | 说明 |
---|---|---|
$_SERVER['QUERY_STRING'] | name=ailx10&skill=php,java | URL中问号之后的内容 |
$_SERVER['PHP_SELF'] | /ailx10/info.php | URL完整路径名 |
$_SERVER['REQUEST_METHOD'] | POST/GET | 请求的方法 |
$SERVER['SERVER_NAME'] | domain | 网站的域名 |
... | ... | ... |
二、访问表单参数
- 注意,表单中的name=
hack[]
- 这里需要有
[]
,表示是一个数组
<form method="POST" action="test7.2.php">
<select name="hack[]" multiple>
<option value="ailx10"> ailx10 </option>
<option value="ailx11"> ailx11 </option>
<option value="ailx12"> ailx12 </option>
<option value="ailx13"> ailx13 </option>
</select>
<input type="submit" name="submit">
</form>
你的选择黑客是:
<br/>
<?php
if(isset($_POST['hack'])){
foreach ($_POST['hack'] as $selected){
print "$selected <br/>";
}
}
三、使用函数处理表单
- 多使用函数,脑子会变得更加灵活~
- 多使用函数,写代码就像写故事~
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if(validata_form()){
process_form();
}else{
show_form();
}
}else{
show_form();
}
function show_form(){
print <<<_HTML_
<form method="POST" action="$_SERVER[PHP_SELF]">
黑客姓名:<input type="text" name="name"><br>
通行密码:<input type="password" name="password"><br>
<input type="submit" value="提交">
</form>
_HTML_;
}
function process_form(){
print "欢迎主人:". $_POST['name'];
}
function validata_form(){
if(strlen($_POST['password']) <6){
return false;
}else{
return true;
}
}
四、验证数据
1、将错误信息输出,这里密码长度要求为6
2、必填的元素,判断用户名的长度是否为0
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if($form_errors = validata_form()){
show_form($form_errors);
}else{
process_form();
}
}else{
show_form();
}
function show_form($errors=""){
if($errors){
print "错误信息如下:<ul><li>";
print implode("</li><li>",$errors);
print "</li></ul>";
}
print <<<_HTML_
<form method="POST" action="$_SERVER[PHP_SELF]">
黑客姓名:<input type="text" name="name"><br>
通行密码:<input type="password" name="password"><br>
<input type="submit" value="提交">
</form>
_HTML_;
}
function process_form(){
print "欢迎主人:". $_POST['name'];
}
function validata_form(){
$errors = array();
if(strlen($_POST['name']) == 0)
{
$errors[] = "用户名是必填项~";
$errors[] = "你忘记了输入用户名";
}
if(strlen($_POST['password']) <6) {
$errors[] = "你输入的密码不正确~";
$errors[] = "密码长度为:" . strlen($_POST['password']);
}
return $errors;
}
3、数值验证
- 这里比较输入的年龄,是不是整数
- 如果不是整数,那么会提示年龄输入错误
- 这里使用的是PHP恒等运算符
===
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if($form_errors = validata_form()){
show_form($form_errors);
}else{
process_form();
}
}else{
show_form();
}
function show_form($errors=""){
if($errors){
print "错误信息如下:<ul><li>";
print implode("</li><li>",$errors);
print "</li></ul>";
}
print <<<_HTML_
<form method="POST" action="$_SERVER[PHP_SELF]">
黑客姓名:<input type="text" name="name"><br>
黑客年龄:<input type="text" name="age"><br>
黑客邮箱:<input type="text" name="mail"><br>
<input type="submit" value="提交">
</form>
_HTML_;
}
function process_form(){
print "注册成功:". $_POST['name'];
}
function validata_form(){
$errors = array();
if(strlen($_POST['name']) == 0)
{
$errors[] = "用户名是必填项~";
$errors[] = "你忘记了输入用户名";
}
$ok = filter_input(INPUT_POST,'age',FILTER_VALIDATE_INT);
if(is_null($ok) || ($ok === false))
{
$errors[] = "年龄是整数哦~";
$errors[] = "仔细检查一下年龄是不是输错了";
}
return $errors;
}
4、数字范围
- 年龄太小不要学习黑客~
- 年龄太大不要学习黑客~
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if($form_errors = validata_form()){
show_form($form_errors);
}else{
process_form();
}
}else{
show_form();
}
function show_form($errors=""){
if($errors){
print "错误信息如下:<ul><li>";
print implode("</li><li>",$errors);
print "</li></ul>";
}
print <<<_HTML_
<form method="POST" action="$_SERVER[PHP_SELF]">
黑客姓名:<input type="text" name="name"><br>
黑客年龄:<input type="text" name="age"><br>
黑客邮箱:<input type="text" name="mail"><br>
<input type="submit" value="提交">
</form>
_HTML_;
}
function process_form(){
print "注册成功:". $_POST['name'];
}
function validata_form(){
$errors = array();
if(strlen($_POST['name']) == 0)
{
$errors[] = "用户名是必填项~";
$errors[] = "你忘记了输入用户名";
}
$age_valid = filter_input(INPUT_POST,'age',FILTER_VALIDATE_INT,
array('options'=>array('min_range'=>18,
'max_range'=>65)));
if(is_null($age_valid) || ($age_valid === false))
{
$errors[] = "未成年人不要注册~";
$errors[] = "退休的大爷不要瞎闹~";
$errors[] = "仔细检查一下年龄是不是输错了";
}
return $errors;
}
5、字符串验证
- 用户输入的字符串,需要去掉前后的空格
- trim函数可以去除首尾的空白~
6、电子邮件地址
- PHP这块做的非常友善~
- 电子邮件格式什么的都是自带了校验方法~
filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL)
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if($form_errors = validata_form()){
show_form($form_errors);
}else{
process_form();
}
}else{
show_form();
}
function show_form($errors=""){
if($errors){
print "错误信息如下:<ul><li>";
print implode("</li><li>",$errors);
print "</li></ul>";
}
print <<<_HTML_
<form method="POST" action="$_SERVER[PHP_SELF]">
黑客姓名:<input type="text" name="name"><br>
黑客年龄:<input type="text" name="age"><br>
黑客邮箱:<input type="text" name="email"><br>
<input type="submit" value="提交">
</form>
_HTML_;
}
function process_form(){
print "注册成功:". $_POST['name'];
}
function validata_form(){
$errors = array();
if(strlen(trim($_POST['name'])) == 0)
{
$errors[] = "用户名是必填项~";
$errors[] = "你忘记了输入用户名";
}
$age_valid = filter_input(INPUT_POST,'age',FILTER_VALIDATE_INT,
array('options'=>array('min_range'=>18,
'max_range'=>65)));
if(is_null($age_valid) || ($age_valid === false))
{
$errors[] = "未成年人不要注册~";
$errors[] = "退休的大爷不要瞎闹~";
$errors[] = "仔细检查一下年龄是不是输错了";
}
$email_valid = filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL);
if(! $email_valid){
$errors[] = "你输入的邮箱格式不对呀~";
$errors[] = "不要瞎搞哦~";
}
return $errors;
}
本篇完,谢谢大家~