Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.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_Html_Mysql - Fatal编程技术网

在外部php文件上返回函数

在外部php文件上返回函数,php,html,mysql,Php,Html,Mysql,为了学习php,我正在尝试开发一个简单的登录表单 我创建了一个表单和一个函数,它向mysql数据库发送一个查询,以检索用户名和密码(存储在md5加密中),并使用用户插入的数据对其进行控制 问题是这个函数(login())位于一个名为fun_login.php的外部文件中,当我从login.php页面调用它时,它会打开fun_login.php页面,而不会返回login.php(我想是因为返回值有问题) 在login.php中,我将文件fun_login.php包含在 <?php incl

为了学习php,我正在尝试开发一个简单的登录表单

我创建了一个表单和一个函数,它向mysql数据库发送一个查询,以检索用户名和密码(存储在md5加密中),并使用用户插入的数据对其进行控制

问题是这个函数(login())位于一个名为fun_login.php的外部文件中,当我从login.php页面调用它时,它会打开fun_login.php页面,而不会返回login.php(我想是因为返回值有问题)

在login.php中,我将文件fun_login.php包含在

<?php

include "fun_login.php";

?>

login.php

  <div class="container">
    <div class="row">
        <div class="col-sm-2 col-sm-offset-5">
            <form action="fun_login.php" role="form" method="post">
                <div class="form-group">
                    <label for="nome">Username:</label>
                    <input type="textarea" class="form-control" id="username" name="username">
                </div>
                <div class="form-group">
                    <label for="password">Password:</label>
                    <input type="password" class="form-control" id="password" name="password">
                </div>
                <button type="submit" class="btn btn-default" id="submitlogin" name="submitlogin">Log In</button>
            </form>
            <?php
            if(isset($_POST['submitlogin'])) {
                $control = login($_POST['username'], md5($_POST['password']));
            if($control) header("Location: ./index.php");
            else header("Location: ./login.php");
                }
            ?>
        </div>
    </div>
</div>
    <?php

function login($username, $password) {
    $myconn = mysql_connect(localhost, root, password);
    mysql_select_db('portfolio', $myconn);
    $query = "SELECT username,password,admin FROM utenti WHERE username = '" . $username . "' AND password = '" .$password . "';";
    $result = mysql_query($query, $myconn)or die('Error, insert query failed');  
        // conto il numero di occorrenze trovate nel db
$numrows = mysql_num_rows($result);

// se il database è vuoto lo stampo a video
if ($numrows == 0) return false;
// se invece trovo delle occorrenze...
else return true;   
}
?>

用户名:
密码:
登录
fun\u login.php

  <div class="container">
    <div class="row">
        <div class="col-sm-2 col-sm-offset-5">
            <form action="fun_login.php" role="form" method="post">
                <div class="form-group">
                    <label for="nome">Username:</label>
                    <input type="textarea" class="form-control" id="username" name="username">
                </div>
                <div class="form-group">
                    <label for="password">Password:</label>
                    <input type="password" class="form-control" id="password" name="password">
                </div>
                <button type="submit" class="btn btn-default" id="submitlogin" name="submitlogin">Log In</button>
            </form>
            <?php
            if(isset($_POST['submitlogin'])) {
                $control = login($_POST['username'], md5($_POST['password']));
            if($control) header("Location: ./index.php");
            else header("Location: ./login.php");
                }
            ?>
        </div>
    </div>
</div>
    <?php

function login($username, $password) {
    $myconn = mysql_connect(localhost, root, password);
    mysql_select_db('portfolio', $myconn);
    $query = "SELECT username,password,admin FROM utenti WHERE username = '" . $username . "' AND password = '" .$password . "';";
    $result = mysql_query($query, $myconn)or die('Error, insert query failed');  
        // conto il numero di occorrenze trovate nel db
$numrows = mysql_num_rows($result);

// se il database è vuoto lo stampo a video
if ($numrows == 0) return false;
// se invece trovo delle occorrenze...
else return true;   
}
?>

您收到的错误消息是什么? 在php文件的开头使用以下命令:

// Report all PHP errors 
error_reporting(E_ALL);

然后,您将知道发生了哪个错误(如果有)。

在您呼叫时

<?php
if(isset($_POST['submitlogin'])) {
    $control = login($_POST['username'], md5($_POST['password']));
if($control) header("Location: ./index.php");
else header("Location: ./login.php");
    }
?>

在您的
login.php
中,标题已经发送,因此
header('Location:')
将无法工作

您需要在显示任何输出(echo或html)之前将其放置。 如果查看错误日志,您可能会看到
警告:无法修改标题信息-标题已由


从外观上看,该文件包含在布局或其他内容中,因此您的
login()
调用必须早于此。

MD5不是“加密”;这是一个杂烩。它也完全不足以保护密码;使用像bcrypt这样的现代安全散列,最好采用PHP内置的形式,也不要使用mysql。。它是可怕的、糟糕的、危险的和不推荐的。
$myconn=mysql\u connect(localhost、root、密码)
是在任何地方定义的常量
localhost
root
password
die('Error,insert query failed')您的查询是选择查询,而不是插入查询。因此,您的
header()
调用是在输出html之后进行的,因此您将收到“headers ready sent”错误。这不是答案,请不要将其作为答案发布。这充其量只是一个评论。既然你还没有足够的声誉来发表评论,你最好在你可以发表评论之前不要发表这样的评论。因为没有答案而被否决对这个目标没有好处。@deceze,我的对手也很强硬,但我看到了他的名声。。。他/她不能继续评论,所以我们应该原谅他/她:D