Php 如何在用户使用登录凭据(密码和用户名)通过$u POST方法提交表单后设置cookie?

Php 如何在用户使用登录凭据(密码和用户名)通过$u POST方法提交表单后设置cookie?,php,html,Php,Html,假设用户输入他/她的用户名和密码,然后单击submit按钮,该按钮在表单上使用$\ POST方法。要成功登录,显然用户名和密码必须与mysql数据库中的内容匹配,这是通过一系列“if”语句完成的。表单和“if”语句必须位于html标记中,以便在凭据错误时显示正确的错误消息。在用户名和密码成功满足html标记中的所有“if”语句之后,我显然想设置一个cookie。但是,我无法在html标记中设置cookie /*setcook() function can ONLY be placed HERE

假设用户输入他/她的用户名和密码,然后单击submit按钮,该按钮在表单上使用$\ POST方法。要成功登录,显然用户名和密码必须与mysql数据库中的内容匹配,这是通过一系列“if”语句完成的。表单和“if”语句必须位于html标记中,以便在凭据错误时显示正确的错误消息。在用户名和密码成功满足html标记中的所有“if”语句之后,我显然想设置一个cookie。但是,我无法在html标记中设置cookie

/*setcook() function can ONLY be placed HERE before the <html> tags, but that does not work with my php code*/
<html>
<head><title></title><body>

<?php
if (isset($_POST['username']) OR isset($_POST['password']))
{ 
/*bunch of "if" statements go here to confirm the credentials are correct and match what's in the database. if the username and password are correct, all of the "if" statements here are passed, and then i WANT to set a cookie HERE so the user is logged in but i can't*/
}

else echo <<<_END
<form action="login.php" method="post">
Username: <input type="text" name="username"/>
Password: <input type="password" name="password" />
<input type="submit" value="Submit" />"; //this is the form that the user fills out and submits
</form>
_END;
?>

</body>
</html>
/*setcook()函数只能放在标记之前,但这不适用于我的php代码*/

您不应该将这样的逻辑与HTML混合在一起。在发送任何输出之前,使用所有PHP验证凭据。然后,您可以设置任何您想要的cookies

稍后无法设置cookie的原因是cookie被设置为头的一部分,在输出开始时发送头。您可以通过启用输出缓冲来解决此问题。。。但不要这样做。这是一种不好的做法,在其他服务器上并不总是启用它,并且有可能使事情慢下来


我还建议使用PHP会话。如果这样做,您可以在任意位置设置数据,因为数据存储在服务器端。您只需确保立即启动会话,以便设置cookie,会话数据可供应用程序使用。

您不应该将这样的逻辑与HTML混合在一起。在发送任何输出之前,使用所有PHP验证凭据。然后,您可以设置任何您想要的cookies

稍后无法设置cookie的原因是cookie被设置为头的一部分,在输出开始时发送头。您可以通过启用输出缓冲来解决此问题。。。但不要这样做。这是一种不好的做法,在其他服务器上并不总是启用它,并且有可能使事情慢下来

我还建议使用PHP会话。如果这样做,您可以在任意位置设置数据,因为数据存储在服务器端。您只需确保立即启动会话,以便设置cookie,会话数据可供应用程序使用