Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用';包括';用于将用户重定向到另一个PHP文件?_Php_Redirect_Php Include - Fatal编程技术网

使用';包括';用于将用户重定向到另一个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

我创建了一个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>";
}

是的,你的指导老师是正确的。用于包含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:请阅读。这应该能帮助你开始。