在这里插入代码片

HTML中还有一类标签,用户能够用他们输出或抉择,向后盾服务器发送数据。

因为须要把他们放在form(表单)标签中,所以飞哥把他们称之为表单标签。

form标签
form标签界定哪些表单标签的内容须要被提交到后盾。

通常来说,表单标签都要搁置在form标签中——否则,他们的内容不会被提交到后盾(强调:常见谬误!)

<form method="post"></form>form标签中须要了解以下几个属性:

action:批示表单提交到哪里解决,或者由谁来采取行动,相应form提交,默认为以后页面。
method:批示表单以何种形式提交到后盾,罕用的是get(默认)或post,区别后文详述。
PS:什么是“默认”?当你(开发人员)不进行批示的时候,被批示对象(计算机相关利用,如浏览器、编译器、解释器等)自行应用的选项。

按钮

按钮有两种写法:

    <!--<button type="submit">按钮</button>-->    <input type="submit" value="提交" />    <input type="reset" value="重置" />type能够有三个值:

提交(submit)
重置(reset)
一般按钮(button)

文本类标签
单行文本框(text)

    <label>用户名:</label> <input type="text" name="username" value="大飞哥" /><br />

明码输入框(password)

    <label>明码:</label><input type="password" name="password" disabled value="1234" /><br />

暗藏文本域(hidden)

    <!-- 不要用它存储敏感信息 -->    <input type="hidden" name="fg" value="埋伏者" />

label是一个语义标签,成果和span差不多。按HTML标准,label通常和input配套应用;label和span的区别,相似于header和div的区别。

前面咱们会发现:大多数表单标签名都是 input,区别他们的是 type。type="text",示意这是一个文本框;type="password",示意这是一个明码输入框……

name和value
name通常都是要写的,因为

所有提交到后盾的数据都是“键值对”模式的字符串,
name是键值对中的“键”,是后盾辨别传入值的惟一起源
没有name的表单元素无奈提交到后盾
value代表用户的输出,能够给定一个初始值。value属性也能够不写,就显示一个空白的文本框。

F12演示:为了暂停页面跳转,须要:

action="/"
IndexModel上增加[IgnoreAntiforgeryToken]
在OnPost()上设置断点,须要

disabled和readonly
disabled:禁用。既不能批改,也不会往后台传值

readonly:只读。不能批改,但还是可能往后台传值。然而,并不是所有表单标签都可能失效。

PS:依据HTML5标准,disabled和readonly都能够不带属性值,即只有有这个属性,就表明该元素须要disabled或readonly。如果肯定要属性值,属性值就是disabled或readonly

多行文本框(textarea)

    <label>自我介绍:</label><br />    <textarea name="selfDescription">飞哥飞哥</textarea><br />

留神:

它的标签名是textarea,不是input
没有value属性,默认值设定在标签文本中
当前学JavaScript的时候,取值赋值会有一些差别。

常见面试题:GET和POST

HTTP协定
客户端和服务器端交互的信息分为::

Request/Response:实际上,用户在浏览器中输出URL,回车,浏览器就会向服务器发送一个申请(Request);而后,服务器就会响应(Response)这个申请,将相应的HTML文件返回给浏览器。

Header/Body:无论是Request和Response,除了URL和Html文件,还有一些额定的信息,寄存在他们的Header中。
GET和POST就是定义在Request的Header中的,向服务器阐明,用何种形式办法(method)进行申请的标记数据。

一般来说,地址栏间接输出网址,或者在网页中点击链接,默认都是GET形式;只有在form标签中定义了method="post",浏览器才会应用POST形式发送申请。咱们能够应用调试器F12,在Network中查看:

传输数据
这个时候,咱们应该了解:form表单自身并不传递数据,是浏览器将form表单中的数据进行“翻译”,而后再传递给服务器!

如果form中method属性设置为get,浏览器应用GET形式,将form表单中的数据转换成URL参数,传递给服务器。留神察看URL的变动:
http://localhost:57210/Register?username=dfg&fg=%E6%BD%9C%E4%BC%8F%E8%80%85&selfDescription=%E9%A3%9E%E5%93%A5%E9%A3%9E%E5%93%A5参数以?标记结尾;每个参数等号右边是name,左边是value;多个参数间用&分隔。如果参数值不是英文和字母,会被浏览器自动编码,后果如上所示。
如果form中method属性设置为post,浏览器应用POST形式,将form表单中的数据转换成Form Data,传递给服务器。(按HTTP协定,GET申请没有Form Data项)

前因后果:(参考HTTP的倒退)

最早的HTTP协定既没有POST,也没有Header……

Header(尤其是其中的ContentType)为HTTP的倒退(扩大)立下了汗马功劳

常见谬误
在网上风行着很多说法,很多都是不筹备的。大抵上来说,谬误起因有两类:

1)没有辨别“HTTP协定”和“浏览器实现”:比如说“GET传递数据有个数/长度/大小限度”等,这些限度都是浏览器的限度,HTTP协定从未限度过URL参数。

2)没有辨别对于“荫蔽”和“平安”:POST不会在地址栏中显示Form Data,咱们能够说它更荫蔽一点,但它一样用明文(没有加密)传递,怎么就平安了呢?咱们都能用F12看到,黑客们还获取不到么?^_^ 。留神,HTTP自身是一个不平安的协定,在Web开发中,平安是一个十分重要的考量因素。大家时刻牢记飞哥的两句话:

前端没有任何安全性可言
后端永远不要置信前端
最初,总结一下,GET和POST:

本质区别:http头中method项定义不同。定义为method=POST,能够用Form Data传递数据
语义层面:GET是申请失去(读);POST是传递给服务器(写)

开发抉择
post:form表单

get:须要url参数

抉择标签
不须要用户输出(字符),只须要点击鼠标抉择即可的标签。

单选框

    <label>性别:</label>    <!-- 应用name属性进行分组 -->    <!-- 小技巧:用label包裹-->            <label><input type="radio" name="gender" value="male" disabled="disabled" checked /> 男</label>    <!-- radio和checkbox只能disabled不能readonly(实际上是bug) -->    <input type="radio" name="gender" value="female" readonly/>女 <br />

语法要点:

依然应用name和value想后盾传值,只是这里的value用户无奈批改
标签名依然是input,由属性type="radio"决定它是一个单选框
用<lable>包裹住input标签,点击整个label标签都能够作用于单选框
input中增加属性checked,就能够设置一个页面加载时的默认选中项
能够disabled,无奈readonly
具备雷同name的多个radio,就是一组,一组radio,只能选中一个——这就是radio被称之为“单”选框的起因。

复选框

<label>喜好:</label><label><input type="checkbox" name="hobby" value="table-tenis" />乒乓球</label><label><input type="checkbox" name="hobby" value="chess" />象棋</label><label><input type="checkbox" name="hobby" value="LOL" />LOL</label>

语法要点:同radio的1-5,其余:

同组的checkbox能够选中多个,所以它被称之为“复”选框
被选中的checkbox的键(名)值对,才会传递到后盾;未被选中的checkbox,整个键值对都不会传,而不是传一个空值什么的!
如果说没有给checkbox的value赋值,选中之后往后台传递的值为:on

下拉列表

    <label>年龄:</label>    <select name="age">        <!-- 往后台传递的是value -->        <option value="1">one</option>        <option value="2" selected>two</option>        <option value="3">three</option>    </select><br />

语法要点:

name在select标签外面
有value,就传value,没有就传文本text
默认选中项用 selected 属性标识
能够在select中增加multiple,将其变成可多选菜单

文件上传
除了应用type="file"指定input用于文件上传,还须要在form中设置:enctype="multipart/form-data"

<form method="post" enctype="multipart/form-data">

<input type="file" name="icon" /><button type="reset">reset</button>

</form>

否则,form元素默认应用:enctype="application/x-www-form-urlencoded",就只会向后盾发送文件名,而不是文件内容:

form中指定
F12中查看
enctype="multipart/form-data"

enctype="application/x-www-form-urlencoded"

HTML5新标签/属性
批改input标签的type为:

color:让用户能够抉择色彩
date/datetime/month/week……:让用户抉择日期/工夫等
email/tel/url:能够验证用户的输出是否合乎Email/电话/URL的格局要求
number/range:用户能够输出数字和比例
……
目前逐步开始应用的一些属性:

novalidate:用于form,禁用掉HTML5自带的验证
formaction:用于提交按钮,能够指定点击该按钮将form表单提交到那个网址解决(笼罩form中的设置),在一个form中能够有多个按钮时有用
multiple:次要应用在文件上传框(type="file")中,用户按住ctrl键,能够抉择多个需上传文件
placeholder :文本输入框有用,可用做提醒
用得并不多。次要是因为:

须要浏览器反对
款式并不难看
用途仿佛并不大,^_^

作业
参考以下页面,尽可能多的实现其HTML局部的内容:

注册和登录
联系方式和个人资料
内容(任选其一)发布页面
首页
其余页面
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...
http://github.com/hdfgfgh546/...
https://github.com/hdfgfgh546...
https://www.github.com/hdfgfg...