【问题标题】:cannot set session and redirect无法设置会话和重定向
【发布时间】:2019-10-08 05:26:54
【问题描述】:

我需要在 php 中设置一个名为 BusinessID 的会话,但它在我的实时服务器上不起作用,我无法弄清楚它有什么问题

发生的情况是它执行了第一个查询但没有设置会话并重定向到dashboard.php

这是代码

<?php         
if ($link === false) {
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

// Attempt insert query execution
if(isset($_POST["register"]))
{
    $company = $_POST["company"];
    $address = $_POST["address"];
    $contact = $_POST["contact"];
    $city = $_POST["city"];
    $tags = $_POST["tags"];
    $email = $_POST["email"];
    $password = $_POST["password"];

    $sql="INSERT INTO business(`companyname`, `email`, `password`, `address`, `tel`, `city`, `tag`,`status`, `created_at`,`type`)
VALUES('$company','$email','$password','$address','$contact','$city','$tags','unblocked',CURRENT_TIMESTAMP,'Null')";

    if (mysqli_query($link, $sql)) {

        $query = "select id from business where email='$email' and password='$password'";
        $result = mysqli_query($link,$query);

        if (mysqli_fetch_assoc($result))
        {
            $_SESSION["businessID"] = $result[0]["id"];

            header("Location: dashboard.php");
        }
        else
        {
            header("Location: login.php?Invalid= Please Enter Correct User Name and Password ");
        }
    } 
    else{
        echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
    }
}
// Close connection
mysqli_close($link);
?>

【问题讨论】:

  • 警告!您对 SQL 注入攻击敞开心扉!您应该使用参数化的prepared statements,而不是像这样直接在查询中使用完全未转义的用户数据。
  • 永远不会永远不会以纯文本形式存储密码!您应该总是使用password_hash() 对密码进行哈希处理,并且只存储哈希值。然后你可以使用password_verify() 来根据哈希验证密码。
  • 无论您需要在哪里设置或获取会话,您都必须在文件中启动一次会话。包括 php session_start();在您的文件之上运行。请记住,您还必须在访问会话的其他文件上编写此函数。如果你所有的文件都是从一个文件加载的,即 index.php 你可以在文件上写一次。
  • 除了 Magnus 提到的漏洞。代码还容易受到xss攻击、csrf attck、html注入攻击、会话固定攻击……

标签: php session mysqli


【解决方案1】:

你错过了

session_start();

在php标签之后

【讨论】:

  • 会话需要重新生成以避免会话固定攻击session_regenerate_id();
【解决方案2】:

你可以在代码中先设置Session。

<?php
    // Start the session
    session_start();
?>

检查这个。 https://www.w3schools.com/php/php_sessions.asp

【讨论】:

  • 仍然无法正常工作...也许问题出在我的第二个查询向下
猜你喜欢
  • 2019-03-10
  • 1970-01-01
  • 2014-03-18
  • 2018-06-04
  • 1970-01-01
  • 2013-06-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
相关资源
最近更新 更多