为什么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>
答案 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>