2096次阅读
处理用户请求

说到用户请求,就很快想起了之前学表单的时候有提到过两种提交方式,get和post两种方式,可以用$_GET和$_POST来接收,先看看get请求的例子:

<?php 
  if(isset($_GET['param'])) {
    echo "get param : " . $_GET['param'];
  } else {
    echo "no param found";
  }
?>	
check the result

get请求的特点是参数会放在url中,所谓url就是浏览器地址栏的网址啦。所以我们直接修改url,比如http://www.calfnote.com/papers/note/php/11php/resources/case01.php?param=123就能看到效果啦,问号后面的param=123就是get的参数。注意,代码中的isset方法可以判断参数是否存在。

那么post请求如何发出呢,这就要用到表单了,再来看个例子:

<?php 
  if(isset($_POST['username'])) {
    echo "get param : " . $_POST['username'] . '<br/>';
  } else {
    echo "no param found<br/>";
  }
?>
<form action="" method="post">
  <input type="text" name="username" />
  <input type="submit" value="提交" />
</form>	
check the result

我们设置表单的method为post,这样我们就能够根据表单中元素的name来接收参数了,还是很简单的。注意,这里表单的action没填,默认是提交到本页面,提交到其他页面就填上相应的地址就行。

那么我们就来看看登陆和注册要怎么做吧,首先,我们需要三个页面,一个登陆页login.php,一个注册页register.php,还有一个登陆和注册成功的跳转页welcome.php,而且,我们还需要一个处理请求的页面handler.php,登陆的时候,我们拿到用户名和密码,去数据库中判断一下是否存在该用户,如果存在就登陆成功,否则提示登陆失败,注册就是在数据库中增加一条记录,Come on,看看代码:

login.php:

<form action="handler.php" method="post">
  <input type="text" name="username" placeholder="请输入用户名" /><br/>
  <input type="password" name="password" placeholder="请输入密码" /><br/>
  <input type="hidden" name="type" value="login" /><br/>
  <input type="submit" value="登陆" /><br/>
</form>
没账号?去<a href="register.php">注册</a>	
check the result

register.php:

<form action="handler.php" method="post">
  <input type="text" name="username" placeholder="请输入用户名" /><br/>
  <input type="password" name="password" placeholder="请输入密码" /><br/>
  <input type="hidden" name="type" value="register" /><br/>
  <input type="submit" value="注册" /><br/>
</form>
有账号?直接<a href="login.php">登陆</a>	
check the result

welcome.php:

欢迎您	

handler.php:

<?php
  require_once dirname ( __FILE__ ) . '/../../../../common/SQLHelper.class.php';
  if(isset($_POST['type'])) {
    $type = $_POST['type'];
    if(isset($_POST['username']) && isset($_POST['password'])) {
      $sqlHelper = new SQLHelper();
      $username = $_POST['username'];
      $password = $_POST['password'];
      if($type == "login") {
        $sql = "select * from test where username='". $username ."' and passwd='". $password ."'";
        $res = $sqlHelper->execute_dql_array($sql);
        if(count($res) > 0) {
          header("Location: welcome.php");
        } else {
          header("Location: login.php");
        }
      } else if($type == "register") {
        $sql = "insert into test (username, passwd) values ('" . $username . "', '" . $password . "')";
        $res = $sqlHelper->execute_dqm($sql);
        if($res == 1) {
          header("Location: welcome.php");
        } else {
          header("Location: login.php");
        }
      }
    } else {
      header("Location: login.php");
    }
  } else {
    header("Location: login.php");
  }
?>	

注意,在表单中,我们用到了type=hidden,这种控件不会在页面上显示,但是它放在表单中却能够将一些参数带过去,这里我们就是通过它传递type参数,value为login表示是从login.php中请求过来,value为register表示是从register.php中请求过来。这样在handler.php中就能够判断啦,handler.php里面的逻辑不解释了,需要注意的是,header("Location: login.php");可以跳转到其他页面。

好了,虽然页面有点挫,但是现在是学习后台,弄清楚跳转控制就行了,有时间再来好好做做前端,一个网站就ok了。

如果您觉得此教程不错,想支持一下,您可以通过支付宝扫码给我们一点,不要超过100元哦!
评论请先登录