阐述表单的概念,主要列举表单及表单元素。
表单Web网页在的表单一般用来做网络调查、用户在线注册、信息检索及网站服务提供商向用户采集信息等。表单是较为复杂的HTML元素,经常与脚本、动态网页、后台数据处理等结合在一起使用,是设计动态网页的必备元素。利用表单可以在HTML页面中插入一些表单控件(元素),如文本框、提交按钮、重置按钮、单选按钮、复选框、下拉列表框等,完成各类信息的采集。
表单标记:form标记,以<form>开始,以</form>结束。
表单定义了采集数据的范围,其所包含的数据内容将被完整地提交给服务器。
常见的表单元素:
- form: 定义供用户输入的表单。
- fieldset: 定义域。即输入区加有文字的边框。
- legend:定义域的标题,即边框上的文字。
- label:定义一个控制的标签。如输入框前的文字,用以关联用户的选择。
- input: 定义输入域,常用。可设置type属性,从而具有不同功能。
- textarea: 定义文本域(一个多行的输入控件),默认可通过鼠标拖动调整大小。
- button: 定义一个按钮。
- select: 定义一个选择列表,即下拉列表。
- option: 定义下拉列表中的选项。
使用POST和GET方式的不同提交方式分别是什么?两种提交方式的区别是什么?
<form action=”” method=”post”></form>
<form action=”” method=”get”></form>
http://url?name1=value1
POST和GET是HTTP协议中用于向服务器提交数据的两种常见方式。迁移性非常强在大三同一学期中代码审计和网络渗透都有用到,可见php设计课程的重要性!!!
GET方式是通过URL参数将数据附加在URL的末尾,以键值对的形式提交给服务器。例如:`http://example.com?name=John&age=25`。GET请求会将数据以明文形式暴露在URL中,因此不适合用于传输敏感信息。GET请求通常用于向服务器请求数据,而不会对服务器的状态进行任何修改。
POST方式是通过请求体将数据提交给服务器,在请求的头部通过Content-Type来指定数据的格式,如application/x-www-form-urlencoded或multipart/form-data。POST请求会将数据封装在请求体中,不会暴露在URL中。POST请求适合用于传输敏感信息和对服务器状态进行修改。
区别:
1. 数据位置:GET方式将数据附加在URL中,而POST方式将数据封装在请求体中。
2. 数据长度限制:GET请求对URL长度有限制,不同浏览器和服务器有不同的限制,一般在2KB到8KB之间;而POST请求没有固定的长度限制,一般受到服务器和网络的限制。
3. 数据安全性:由于GET请求将数据明文暴露在URL中,所以安全性较低,不适合传输敏感信息;而POST请求将数据封装在请求体中,相对安全性较高。
4. 缓存处理:GET请求可以被浏览器缓存,可以被收藏为书签,可以被浏览器历史记录记录下来;而POST请求不会被缓存,不能被收藏为书签,也不会在浏览器历史记录中留下痕迹。
5. 可见性:GET请求的参数会显示在URL中,用户可以看到参数值;而POST请求的参数不会显示在URL中,用户无法直接看到参数值。
根据具体的应用场景和需求,选择适合的方式来提交数据。如果是传输敏感信息或修改服务器状态,一般建议使用POST方式。如果是获取数据或进行简单的查询操作,可以使用GET方式。
正则表达式组成,使用
正则表达式是一种用于匹配和处理字符串的强大工具,它由一系列字符和特殊字符组成。
正则表达式的基本组成包括以下几个部分:
字符:除了一些特殊字符外,正则表达式可以直接使用普通字符,如字母、数字、空格等。这些字符在正则表达式中表示它们自身。
元字符:元字符是正则表达式中特殊含义的字符。例如,"."(点号)表示任意单个字符,"|"(竖线)表示或逻辑。常见的元字符还有"*"、"+"、"?"、"()"等。
字符类:字符类用于表示一组字符中的任一个字符。使用方括号"[]"来定义字符类,方括号内部可以放置单个字符或范围。例如,"[a-z]"表示小写字母的范围。
量词:量词用于指定匹配字符或字符类的数量。常见的量词有"*"(零个或多个)、"+"(一个或多个)、"?"(零个或一个)等。
锚点:锚点用于指定字符串的位置。常见的锚点有"^"(匹配字符串的起始位置)、"$"(匹配字符串的结束位置)等。
转义字符:在正则表达式中,有些字符具有特殊含义,如果要匹配这些字符本身,需要使用反斜杠""进行转义。例如,"+"可以匹配加号字符。
正则表达式的具体使用方法因编程语言和工具而异。在使用正则表达式时,可以根据具体需求构建匹配模式,并通过正则表达式引擎进行匹配、替换、提取等操作。
请注意,正则表达式的语法和规则非常灵活复杂,需要仔细学习和理解。对于复杂的模式,可能需要更深入的正则表达式知识。
核心代码和代码注释,效果截图
Login_html.php
<html>
<head>
<meta charset="utf-8">
<title>欢迎登录</title>
<style>
body{background-color:#eee;margin:0;padding:0;}
.reg{width:400px;margin:15px;padding:20px;border:1px solid #ccc;background-color:#fff;}
.reg .title{text-align:center;padding-bottom:10px;}
.reg th{font-weight:normal;text-align:right;}
.reg input{width:180px;border:1px solid #ccc;height:20px;padding-left:4px;}
.reg .button{background-color:#0099ff;border:1px solid #0099ff;color:#fff;width:80px;height:25px;margin:0 5px;cursor:pointer;}
.reg .td-btn{text-align:center;padding-top:10px;}
.error-box{width:378px;margin:15px;padding:10px;background:#FFF0F2;border:1px dotted #ff0099;font-size:14px;color:#ff0000;}
.error-box ul{margin:10px;padding-left:25px;}
</style>
</head>
<body>
<form method="post">
<table class="reg">
<tr><td class="title" colspan="2">欢迎登录</td></tr>
<tr><th>用户名:</th><td><input type="text" name="username" /></td></tr>
<tr><th>密码:</th><td><input type="password" name="password" /></td></tr>
<tr><td colspan="2" class="td-btn">
<input type="submit" value="登录" class="button" />
<input type="reset" value="重新填写" class="button" />
</td></tr>
</table>
</form>
//在课堂实验中由于忘记!导致逻辑出错。
<?php if(!empty($error)): ?>
<div class="error-box">登录失败,错误信息如下:
<ul><?php foreach($error as $v) echo "<li>$v</li>"; ?></ul>
</div>
<?php endIf ; ?>
</body>
</html>
Login.php
<?php
$error = array() ;
if(!empty($_POST)) {
$username = $_POST['username'];
$password = $_POST['password'];
include 'check.php' ;
if( ($result = checkUsername ($username)) !== true)
$error[] = $result;
if(($result = checkPassword ($password)) !== true)
$error[] = $result;
if (empty ($error)) {
if ($username!="admin" || $password!="123456")
$error[] = '用户名不存在或密码错误。' ;
else
header ('Location:user_html.php?login=1') ;
}
}
include 'login_html.php';
?>
Check.php
<?php
function checkUsername($username){
if(!preg_match('/^[\w\x{4e00}-\x{9fa5}]{2,10}$/u',$username)){
return '用户格式不符合要求';
}
return true;
}
function checkPassword($password){
if(!preg_match('/^\w{6,16}$/',$password)){
return '密码格式不符合要求';
}
return true;
}
User_html.php
<html>
<head>
<meta charset="utf-8">
<title>会员中心</title>
<style>
body{background-color:#eee;margin:0;padding:0;}
.box{width:400px;margin:15px;padding:20px;border:1px solid #ccc;background-color:#fff;}
.error-box{text-align:center;margin:15px;padding:10px;background:#FFF0F2;border:1px dotted #ff0099;font-size:14px;color:#ff0000;}
.error-box a{color:#0066ff;}
.box .title{font-size:20px;text-align:center;margin-bottom:20px;}
.box .welcome{text-align:center;}
.box .welcome a{color:#0066ff;}
.box .welcome span{color:#ff0000;}
</style>
</head>
<body>
<div class="box">
<div class="title">会员中心</div>
<?php if(isset($_GET['login'])) : ?>
<div class="welcome">您好,欢迎来到会员中心。<a href="login_html.php">退出</a></div>
<?php else : ?>
<div class="error-box">您还未登录,请先 <a href="#">登录</a> 或 <a href="#">注册新用户</a> 。</div>
<?php endif; ?>
</div>
</body>
</html>
效果图
![](https://i-blog.csdnimg.cn/blog_migrate/b3620c96e24bf4040f2bd82fb383a3b0.png)
输入错误信息,会有如上提示
![](https://i-blog.csdnimg.cn/blog_migrate/fa114536394b286d98798c5325f8fe64.png)
输入正确密码会进入页面
CSDN-Ada助手: 恭喜你写了第10篇博客!对于整数存储在内存中二进制中1的个数的探讨非常有趣。希望你可以继续保持创作的热情,继续分享你的学习和思考。下一步,或许可以探讨一下不同编程语言中实现这一功能的方法,或者是对于算法的优化和性能的提升等方面的内容。期待你的下一篇作品!
CSDN-Ada助手: 恭喜作者第11篇博客发表!对于野指针的成因及如何规避野指针这一主题的深入探讨让人受益匪浅。希望作者在今后的创作中,可以继续深挖技术细节,结合实际案例进行分析,为读者提供更多有深度、有启发的内容。期待作者更多精彩的作品!
CSDN-Ada助手: 恭喜作者在第12篇博客中分享了“青蛙跳台阶问题”的内容,能够持续创作并分享有趣的数学问题实在是令人钦佩。希望作者在未来的创作中可以继续深入探讨数学问题,并且可以结合实际生活中的案例或者趣闻来丰富内容,让读者在学习数学知识的同时也能够获得更多的乐趣。期待作者更多的精彩内容,加油!
CSDN-Ada助手: 恭喜作者发布了关于停止-等待协议SW的博客,内容十分精彩!希望作者能够继续分享关于可靠传输实现机制的知识,或者可以考虑探讨其他常见的协议,比如连续ARQ协议或选择重传协议。期待作者的下一篇作品!
CSDN-Ada助手: 恭喜您写了第16篇博客!标题中的qsort函数确实是C语言中一个非常有用的标准库函数。您的文章内容一定非常详细地介绍了它的用法和实现原理。接下来,我建议您可以考虑分享一些使用qsort函数解决实际问题的案例,或者探讨一些与qsort函数相关的高级主题,以进一步深化读者对该函数的理解。期待您的下一篇创作!