解锁Web开发全貌:从前端到后端

发表时间: 2024-06-15 16:06

前言

我从事 C 开发快六年了,但基本没接触过 web 相关的东西。听别人讲 web 相关的东西时,总分不清哪个是前端,哪个是后端,前端和后端是怎么配合的?搜索了各种方法,终于搞清楚了很多类似的问题。

Web前端是用html和Javascript编写的,在浏览器端执行,不与服务器交互(如apache、nginx、tomcat等),比如使用Javascript弹出警告框。PHP、Python属于后端语言,当通过浏览器向服务器发送访问PHP文件的请求时(例如:
63342/php_basic/helloworld.php),Web服务器收到该请求后发现是PHP代码,然后经过PHP解析器解析后,发送回Web服务器,最后返回给浏览器。

本文将简单介绍前后端的工作流程,以及get、post方法的使用。

示例代码

以下代码演示了前后端协调的工作流程。

GET 方法

<html><head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title>title>    <meta charset="utf-8" />    <script type="text/javascript" src="process.php">script>    <script>        function InputCheck(){            var user = document.getElementById("user");            if(user.value==""){                alert("用户名为空!");                return false;            }            var pwd = document.getElementById("password");            if(pwd.value==""){                alert("密码不能为空!")                return false;            }        }    script>head><body>    <form name="myform" method="get" action="process.php">        <label for="user">用户名label>        <input type="text" id="user" name="user" value="user">        <br />        <label for="password">密码label>        <input type="password" id="password" name="password" value="password">        <br />        <input type="submit" id="submit" name="submit" value="提交" onclick="return InputCheck()">    form>body>html>

From的方法定义了提交方式为get,当点击“提交”按钮时,数据会传递到后台,点击后会调用javascript函数InputCheck()检查输入框是否为空,如果为空则弹出警告框,并且不会向服务器发送后续消息。

当两个输入框都有内容时,点击“提交”按钮,数据就会传到后台,具体执行哪个PHP,由Form中的action来指定,这里指定了process.php,process.php代码如下。

/** * Created by PhpStorm. * User: sweird * Date: 2016/10/10 * Time: 22:18 */header("Content-Type:text/html;charset=utf-8");//支持中文$user=$_GET["user"];$pwd=$_GET["password"];echo "这是从web服务器返回的消息,已经经过php处理的!
"
;echo "您提交的用户名是:",$user,"
"
;echo "您提交的密码是:",$pwd;?>

我们来看看运行效果,本次我们使用phpstorm进行开发,写完代码之后,点击右上角的火狐浏览器图标。

现在跳转到Firefox浏览器,按F12打开调试窗口并切换到网络接口。

然后清除用户名输入框里的内容,点击“提交”。这样会触发javascript代码弹出警告窗口,并且会发现“网络”界面的调试窗口里没有任何数据,说明此时没有向服务器发送任何数据,只是在前端进行了js检查。

然后在“用户名”输入框中输入数据,点击提交。

此时在地址栏中发现process.php已经执行完毕,并且显示出了用户名和密码,浏览器中显示的数据正是后台PHP代码打印出来的,至此前后端操作演示完毕。

POST 方法

接下来我们看一下PHP使用post方法时如何获取前端发送的数据?

从上面 get 方法的使用可以看出,当向服务器提交密码等敏感信息时,由于密码显示在 URL 中,非常不保密。这种情况下,最好的方式是使用 post 方法向后端提交数据。post 方法不会显式地输出密码,但是打开调试窗口还是可以看到密码的。

不过使用POST方式时需要把相关的PHP代码放入Wamp的www目录下,否则会出现如下错误提示:

将 PHP 移动到以下目录,然后确保服务器正常启动:

然后在浏览器中手动输入:

再次点击“提交”,出现以下成功界面:

相关代码

post_demon.php代码如下

<html><head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title>title>    <meta charset="utf-8" />    <script type="text/javascript" src="process_post_data.php">script>head><body><form name="myform" method="post" action="process_post_data.php">    <label for="user">用户名label>    <input type="text" id="user" name="user" value="user">    <br />    <label for="password">密码label>    <input type="password" id="password" name="password" value="password">    <br />    <input type="submit" id="submit" name="submit" value="提交" onclick="return InputCheck()">form>body>html>

process_post_data.php代码如下:

/** * Created by PhpStorm. * User: sweird * Date: 2016/10/13 * Time: 21:30 */header("Content-Type:text/html;charset=utf-8");$name=$_POST["user"];$pwd=$_POST["password"];echo "这是从web服务器返回的消息,已经经过php处理的!
"
;echo "您提交的用户名是:",$name,"
"
;echo "您提交的密码是:",$pwd;?>