我查看了以前的未定义错误问题,看看是否可以为我的问题找到帮助,但我似乎无法解决我的问题。因此,当我尝试登录用户时,我会收到一个错误,上面写着"未定义索引":不知道为什么我在我的登录php页面上收到这个消息
我有一个数据库和一个名为users的表,其中插入了数据
这是我用来连接到数据库的
conn.php
<?php
session_start();
$dbhost = "127.0.0.1"; // my database
$dbname = "fxdme";
$dbuser = "root";
$dbpass = "";
$mysqli = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname) or die("MySQL Error: " . mysqli_error("Cant Connect"));
?>
登录脚本
login.php
<?php include 'template/header.php';?>
<form action="login.php" method="POST">
User Name: <input type="text" name="username" />
Password: <input type="password" name="password"/>
<input class="submit" name="submit" type="submit" value="Log In"/>
</form>
<?php
$result=$mysqli->query('SELECT * FROM users WHERE username = "' .
$_POST['username'] . '" AND password = "' . $_POST['password'] . '"');
//set session user
$row = $result->fetch_assoc();
$_SESSION['user_id'] = $row['id'];
if ($_SESSION['user_id']) {
echo "You are logged in, $session_username. <a href='logout.php'>Log out</a>"; }
else {
echo " cant log in";
}
?>
//索引页
我的索引页index.php
//in the template header is where Im calling my conn file
<?php include 'template/header.php'; ?>
<?php
if (isset($_GET['invalid'])) {
echo "<tr><td colspan='2' align='right'>Invalid login.</td></tr>";
}
?>
我正在努力修复这个错误,所以我现在不担心sql注入。我只想能够登录,以后再担心其他事情。
如果post变量中没有username,则$_POST["username"]
将返回无效索引。
我通常会创建一组变量来保存我的后期变量,这样我就可以首先对进行数据验证和规范化
所以在你的查询语句之前
$username=(isset($_POST) && isset($_POST["username"]) ? $_POST["username"] : "";
$password=(isset($_POST) && isset($_POST["password"]) ? $_POST["password"] : "";
然后在查询中使用$username和$password。您可以将前面的语句事件化为一个函数调用,传递要检查的变量名。
function getPostVar($name) {
return (isset($_POST) && isset($_POST[$name]) ? $_POST[$name] : "";
}
$username=getPostVar("username");
$password=getPostVar("password");
显然,您的代码已经成熟,可以使用用户名为' union select * from users --
的进行sql注入
您的代码中没有任何内容可以在URL中生成查询字符串以供$_GET
获取。你什么都没有怎么能有索引?
对于您所说的内容,如果用户无法登录到您的系统,则必须使用header('location:index.php?invalid=1');
。
对您来说可能不是同一个问题,但我在转换到mysqli时遇到了同样的错误,我的fetch语句看起来和您的相同。
尝试改变。
$row = $result->fetch_assoc();
至
$row = $result->fetch_array(MYSQLI_ASSOC));