对于练习,我试图为包含三个字段的表编写一个简单的登录代码:id,teamnname和score。
有一个db_connect.php文件,需要它的文件包含在顶部。我知道这是正常工作的(因为functions.php文件中的其他函数似乎正在工作)。这个文件定义了$ mysqli,这似乎在其他地方工作得很好。
此文件如下所示:
<?php
$mysqli = mysql_connect('host', 'database', 'password');
ob_start();
?>
但是,唯一不起作用的功能是我的process_login函数。 login.php文件不会输出&#34;连接成功&#34;以外的任何内容。从数据库连接正常工作。它应该指示&#34;无效请求&#34;或重定向页面。
以下是使用此功能的login.php脚本...
<?php
include_once 'db_connect.php';
include_once 'functions.php';
custom_session();
if (isset($_POST['teamname'])) {
$teamname = $_POST['teamname'];
if (process_login($teamname, $mysqli) == true) {
// redirect to the right place
header('Location: ../index.php?start_game');
} else {
// redirect to an error page
header('Location: ../index.php?error1')
}
} else {
// the correct POST variables were not sent to this page.
echo 'Invalid Request';
}
这是functions.php中的有问题的功能:
function process_login($teamname, $mysqli) {
if ($stmt = $mysqli->prepare("SELECT id, teamname, score FROM users WHERE teamname = ? LIMIT 1")) {
$stmt->bind_param('s', $teamname);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id, $teamname, $score);
$stmt->fetch();
if ($stmt->num_rows == 1) {
$_SESSION['id'] = $id;
$_SESSION['teamname'] = $teamname;
$_SESSION['score'] = $score;
return true;
}
}
return false;
}
我已经玩过这个,而顶部准备好的声明似乎是罪魁祸首。我直接通过数据库运行SELECT语法,所以我知道它可能是错的。我经常尝试过很多东西,并且会感激一些经验丰富的帮助。