我创建了一个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 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>";
}
在这里,我尝试include
重定向到用户帐户...并且工作正常。
虽然我的导师告诉我使用include
是错误的,你应该用另一种方式实现它。
使用include
重定向到用户帐户的原因是什么?我搜索了它,但我没有找到答案。
请不要劝阻......提前谢谢。
答案 0 :(得分:1)
是的,你的导师是对的。 include()
用于包含PHP代码,而不是用于重定向。 header()
函数执行此操作,因此请使用它。使用include()
工作,但这并不意味着您应该使用它。
include
? include()
是一个“包含”来自不同文件的代码的函数。它从文件加载并执行代码,并不是专门为重定向而构建的。另一方面,header()
的唯一目的是发送原始HTTP标头,即执行重定向等。请改用它。
如果您在用于重定向的文件中有多行代码,include()
将在每次执行重定向时完全执行。如果您的应用程序大量使用重定向,这将意味着性能损失并导致应用程序滞后。此外,如果您使用include()
,则会不必要地执行多行代码。如果您使用header()
,则可以避免此问题。 (在exit()
之后立即致电header()
。)
您盲目地将用户输入注入数据库查询,从而使其易受SQL injection攻击。具有恶意意图的用户在技术上可能会造成麻烦,甚至完全删除您的数据库。将PDO / MySQLi与prepared statements一起使用可以防止这种情况发生。有关如何使用的详细信息,请参阅this question。
答案 1 :(得分:0)
试试这个
if ($usercount == 1) {
$redirect_url = "";//here goes your url where you want to redirect the user to
header("Location: " . $redirect);
exit();
}
您还应该查看MySqli
或PDO