我的登录系统出了什么问题?

时间:2018-04-01 21:39:13

标签: php mysql

我试图在PHP中创建一个登录系统,但它并没有按预期工作。代码应该生成一个随机整数并将其分配给名为" token"的cookie,然后将cookie的值上传到数据库。如果没有令牌,则会将用户重定向到404页面,或者如果令牌不等于数据库中的令牌,则它还会将用户重定向到404页面。但是当我登录时,不是将数据库中的令牌设置为cookie的值,而是将其设置为2147483647.如何让PHP代码将数据库中的令牌设置为cookie的值?

代码:

admin.php的:

include_once "connect.php";
if (!empty($_POST['user']) && !empty($_POST['pass'])) {
$user = $_POST['user'];
$pass = $_POST['pass'];
$_user = mysqli_escape_string($conn, $user);
$_pass = mysqli_escape_string($conn, $pass);
$query = "SELECT * FROM supa WHERE user='$_user' AND pass='$_pass'";
$result = mysqli_query($conn, $query);
if (mysqli_fetch_assoc($result) > 0) {
  setcookie("token", random_int(111, 8942));
  $ok = $_COOKIE['token'];
  $conn->query("INSERT INTO token (token) VALUES ('$ok')");
  echo "<script>location.href = \"panel.php\"</script>";
} else {
  echo "Wrong Cridentials";
}
}

panel.php:

include_once 'connect.php';
if (!empty($_COOKIE['token'])) {
  $token = $_COOKIE['token'];
  $query = "SELECT * FROM token WHERE token='$token'";
  $result = mysqli_query($conn, $query);
  if (mysqli_fetch_assoc($result) > 0) {

  } else {
    echo "<script>location.href = \"/\";</script>";
  }
} else {
  echo "<script>location.href = \"/\";</script>";
}

2 个答案:

答案 0 :(得分:1)

您的数据库中似乎存在类型问题。 2147483647是32位整数的最大数。

我想您必须将数据库中的类型从int更改为varchar或其他内容。

答案 1 :(得分:-1)

试试这个:

$token = random_int(111, 8942) ;
setcookie("token", $token);
$conn->query("INSERT INTO token (token) VALUES ($token)");
$url = 'panel.php' ; // preferrably: absolute path.
header("Location: $url");
exit;

下一步:查看您提问中备注中非常重要的提示。

相关问题