thinkphp框架有感(一)
一:每一个html表单都需要在控制器中进行调用,否则无法对表单中的数据进行控制。
二:html中,<form>标签里的action地址应指向控制器中所对应的方法名。
三:在浏览器中如果要通过某个控制器访问视图,应访问到该控制器中的各个方法。
如:http://localhost/tpone/index.php/Home/Index/register
不知为何我直接访问http://localhost/tpone/index.php/无法实现页面跳转的功能,但访问到方法层时就可以.
四:model
并不是必须要建,我目前对model不是很收悉,这次的程序完成品中,我最后是将所有的操作数据库代码写在了controller中,没有建立model.
五:多用var_dump()进行调试,它可以判断出具体问题到底出在哪。
六:之前整个程序中困扰我最厉害的是各个文件的调用路径和配置问题,好吧,其实我现在这方面也比较模糊.
这次”thinkphp框架实现注册登录程序“的最终成品一共由四个文件组成,一个控制器,三个html页面.
具体功能:
1,注册页面输入信息,信息会被写入后台数据库.
2,登录界面输入正确的用户名和密码后会跳转到新的页面将数据库中所有注册人的信息展示出来(除了密码).
3,登录和注册页面之间可通过按钮相互跳转.
IndexController.class.php文件:
- <?php
- namespace Home/Controller;
- use Think/Controller;
- class IndexController extends Controller
- {
- //登录控制器
- public function Index()
- {
- $this->display(index);//加载view/index目录下的index.html文件
- }
- function login()
- {
- $User = M("User"); // 进行数据库表的实例化,User是我的表名。得到$User对象。
- $data['user'] = $_POST["user"];
- $data['password'] = $_POST["password"];
- if($data['user'] == "" || $data['password'] == "")
- {
- echo "<script>alert('请输入用户名或密码!'); history.back();</script>"; //js程序,弹出对话框显示信息,并返回上个页面
- }
- else
- {
- $result = $User ->query("select user,password from user where user = '$_POST[user]' and password = '$_POST[password]'");//调用$User对象的query方法来执行sql语句。和数据库中的用户名和密码比对,看是否正确
- if($result)
- {
- $this->success('登录成功', 'result');
- }
- else
- {
- $this->error('用户名或密码不正确!');
- }
- }
- }
- //--------------------------------------------------------------------------------------------------------------
- //注册控制器
- public function Register()
- {
- $this->display(register);//加载view/index目录下的register.html文件
- }
- function zhuce()
- {
- $User = M("User"); // 进行数据库表的实例化,User是我的表名。得到$User对象。
- $data['user'] = $_POST["user"];
- $data['password'] = $_POST["password"];
- $data['passwordcheck'] = $_POST["passwordcheck"];
- $data['sex'] = $_POST["sex"];
- $data['subject'] = $_POST["subject"];
- if($data['user'] == "" || $data['password'] == ""|| $data['passwordcheck'] == ""|| $data['sex'] == ""|| $data['subject'] == "")
- {
- echo "<script>alert('请填写完整!');history.back(); </script>"; //js程序,弹出对话框显示信息,并返回上个页面
- }
- else
- if($data['password'] == $data['passwordcheck']) //密码和确认密码是否一致
- {
- $result = $User ->query("select user from user where user = '$_POST[user]'");
- if($result) //如果为真,则已存在
- {
- echo "<script>alert('用户名已存在');history.back();</script>";
- }
- else
- {
- $User->add($data);
- if($User)
- echo "<script>alert('注册成功!');history.back();</script>";
- else
- throw_exception("数据库添加失败");
- }
- }
- else
- {
- echo "<script>alert('密码不一致!');history.back();</script>";
- }
- }
- //--------------------------------------------------------------------------------------------------------------
- //登录后显示结果控制器
- function result()
- {
- $User = M("User");
- $data=$User->select();
- $this->data=$data;
- $this->display();
- } //Vevb.com
- }
- ?>
index.html文件:
- <!DOCTYPE
- html
- PUBLIC
- "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html
- xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta
- http-equiv="Content-Type"
- content="text/html; charset=utf-8"
- />
- <title>登录页面</title>
- <style
- type="text/css">
- #form1
- {
- width:250px;
- height:250px;
- margin:20px
- auto;
- border:1px
- #039
- solid;
- padding:20px
- 20px;
- }
- </style>
- <script
- type='text/javascript'>
- function
- freshVerify()
- {
- document.getElementByIdx_x_x_xx('verifyImg').src='__URL__/verify/'+Math.random();
- }
- </script>
- </head>
- <body>
- <form
- name="form1" id="form1" method="post"
- action="__URL__/login">
- 登录帐号:<br/><br/>
- 姓名:<input type="text" name="user"/>
- <br/><br/>
- 密码:<input type="password"
- name="password"/>
- <br/><br/>
- <input type="submit"
- name="submit" value="登录"/>
- <a href="register.html">注册</a>
- </form>
- </body>
- </html>
register.html文件:
- <!DOCTYPE
- html
- PUBLIC
- "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html
- xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta
- http-equiv="Content-Type"
- content="text/html; charset=utf-8"
- />
- <title>注册页面</title>
- <style
- type="text/css">
- #form1
- {
- width:250px;
- height:250px;
- margin:20px
- auto;
- border:1px
- #039
- solid;
- padding:20px
- 20px;
- }
- </style>
- <script
- type='text/javascript'>
- function
- freshVerify()
- {
- document.getElementByIdx_x_x_xx('verifyImg').src='__URL__/verify/'+Math.random();
- }
- </script>
- </head>
- <body>
- <form
- name="form1" id="form1" method="post" action="__URL__/zhuce">
- 注册帐号:<br/><br/>
- 姓名:<input type="text" name="user" maxlength="16"/><br /><br />
- 性别:<input type="radio" name="sex" value="男" maxlength="16" />男
- <input
- type="radio"
- name="sex" value="女" maxlength="16"/>女<br /><br />
- 专业:<input
- type="text"
- name="subject" maxlength="16"/><br /><br />
- 密码:<input type="password"
- name="password"
- maxlength="16"/><br /><br />
- 确认密码:<input type="password"name="passwordcheck" maxlength="16"/><br /><br />
- <input type="submit" name="btn1"
- id="btn1"
- value="提交" />
- <a
- href="index.html">登录</a>
- </form>
- </body>
- </html>
result.thml文件:
- <html>
- <head>
- <title>信息页面</title>
- </head>
- <body>
- <b>目前已注册的用户</b><br/><br />
- <foreach name="data" item="vo">
- <li>用户名:{$vo.user}
- 性别:{$vo.sex}
- 专业:{$vo.subject}<br/><br />
- </li>
- </foreach>
- </body>
- </html>
新闻热点
疑难解答
图片精选