使用';包括';用于将用户重定向到另一个PHP文件?
我创建了一个HTML登录表单,用于检查电子邮件和密码验证,然后重定向到用户帐户 我的PHP代码如下:使用';包括';用于将用户重定向到另一个PHP文件?,php,redirect,php-include,Php,Redirect,Php Include,我创建了一个HTML登录表单,用于检查电子邮件和密码验证,然后重定向到用户帐户 我的PHP代码如下: <?php require('connect.php');//for connection to the database. $email = $_POST['email']; $password = $_POST['password']; $query = "SELECT * FROM `account` WHERE pemail='$email' and passwor
<?php
require('connect.php');//for connection to the database.
$email = $_POST['email'];
$password = $_POST['password'];
$query = "SELECT * FROM `account` WHERE pemail='$email' and password='$password'";
$result1 = mysql_query($query) or die(mysql_error());
$usercount = mysql_num_rows($result1);
if ($usercount == 1){
include 'myaccount.php';
}
else{
echo "Invalid Details.";
echo "<a href='login.php'>Back to Login</a>";
}
是的,你的指导老师是正确的。用于包含PHP代码,而不是重定向。函数可以做到这一点,所以使用它。使用
include()
为什么不使用include
?
include()
是用于“包含”来自不同文件的代码的函数。它从文件中加载并执行代码,并且不是专门为重定向而构建的。另一方面,header()
的唯一目的是发送原始HTTP头,即执行重定向等。用它来代替
- 如果用于重定向的文件中有多行代码,
include()
将在每次执行重定向时完全执行它。如果应用程序大量使用重定向,这将意味着性能损失,并将导致应用程序滞后。此外,如果使用的是include()
,那么将不必要地执行几行代码。如果使用header()
,则可以避免此问题。(在header()之后调用exit()
)
代码中的更多问题:
- 您正在使用
mysql.*
函数。ext/mysql
扩展已被弃用,不应使用。使用或代替
- 您盲目地将用户输入注入数据库查询,从而使其容易受到攻击。恶意用户可能会在技术上造成问题,甚至完全删除您的数据库。将PDO/MySQLi与一起使用以防止发生这种情况。有关如何操作的更多详细信息,请参阅
试试这个
if ($usercount == 1) {
$redirect_url = "";//here goes your url where you want to redirect the user to
header("Location: " . $redirect);
exit();
}
您还应该查看MySqli
或PDO
您应该使用header()
进行重定向,而不是include()
。include
不用于重定向到其他页面。它的用法是包含给定文件的内容。但是为什么问题…include在我的项目中工作得很好…您能提供在回答中使用header()而不使用include()的原因吗?您的代码容易受到SQL注入的攻击。你应该继续读下去。你决不能在任何地方存储未加密的密码。这也行……但正如我所问的,我想回答“为什么使用include而不是header()是错误的?”这只是一个简单的解释,给你一个想法,假设您在formula.php中有一些公式,并且希望在程序的另一部分中使用这些公式,因此您可以包含formula.php,这样您就不必再次重写相同的公式,但是如果您想重定向用户,则需要使用标题。我希望这能回答您的问题非常感谢您……您能改进我的代码吗?我是PHP的学生和新手,对PHP了解不多。@krupal:请阅读。这应该能帮助你开始。