为什么php in first先执行?

时间:2017-07-06 11:38:27

标签: php

为什么php in include在html之前执行?因为用户输入来自html。最后不应该包含脚本吗?

<?php
include('login.php'); // Includes Login Script

if(isset($_SESSION['login_user'])){
header("location: profile.php");
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Login Form in PHP with Session</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="main">
<h1>PHP Login Session Example</h1>
<div id="login">
<h2>Login Form</h2>
<form action="" method="post">
<label>UserName :</label>
<input id="name" name="username" placeholder="username" type="text">
<label>Password :</label>
<input id="password" name="password" placeholder="**********" type="password">
<input name="submit" type="submit" value=" Login ">
<span><?php echo $error; ?></span>
</form>
</div>
</div>
</body>
</html>

3 个答案:

答案 0 :(得分:2)

PHP是服务器端语言,而HTML是客户端语言。这意味着PHP代码在Web服务器上执行,然后传递到客户端的浏览器。

有关客户端和服务器端编程之间差异的详细信息,请参阅this question

答案 1 :(得分:0)

PHP在服务器中处理您的请求并返回一个html文件(在本例中)。也就是说,您使用所需的所有信息发出请求,并返回已处理的信息。

答案 2 :(得分:0)

“因为用户输入来自html”

我相信你会混淆你的PHP脚本将作为响应输出的HTML,以及触发请求的HTML <form>之间的混淆。

问题中的HTML不会被PHP包含,而是将其作为对触发此PHP脚本的客户端请求的响应输出。

由于您的PHP脚本正在输出HTML表单,并且它处理来自该HTML表单的请求,因此可能会发生混淆。

PHP是关于构建最终HTML输出的工作。

<小时/> 例如:

在客户端是否是由浏览器,C#bot或JAVA应用程序运行的HTML <form>,或任何程序将http请求发送到您的服务器(PHP脚本),假设您使用这些参数发送此请求

Request URL: "http://www.example.com/index.php"
Request method: "POST"
Request parameters: "username=myname&password=123"

该请求将触发PHP解析服务器上的index.php脚本

在服务器端,您的网络服务器将在填写请求参数后执行index.php,以便您可以在代码中使用它们。

触发index.php

之前

$_POST['username'] = $_REQUEST['username'] = "myname";
$_POST['password'] = $_REQUEST['password'] = "123";

现在,当您拥有请求参数时,我们可以调用index.php

<?php
    include('login.php'); // Includes Login Script

    if(isset($_SESSION['login_user'])){
        //check if user is authentic then redirect him to the profile page.
        header("location: profile.php");
        //you should exit; your code here
        //see: https://stackoverflow.com/questions/2747791
    }
   /*now any string that is not between the php open and close tags <> is parsed as
    HTML that needs to be outputted*/
?>
<!-- for example this HTML is going to be outputted ,and the browser is going to show it
unless you used the location header -->
<!DOCTYPE html>
<html>
    <!-- your log in form here -->
</html>