Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.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_Mysql - Fatal编程技术网

会话未与用户名PHP关联

会话未与用户名PHP关联,php,mysql,Php,Mysql,我不明白为什么我不能将登录的用户名与会话相关联。 如果你们能帮我,我会非常感激的 下面是示例代码: session_start(); include 'includes/connect.php'; if (isset($_POST['user'], $_POST['pass'])) { //assigning parameters to variables. $user = $_POST['user']; $pass = $_POST['pass']; $s

我不明白为什么我不能将登录的用户名与会话相关联。 如果你们能帮我,我会非常感激的

下面是示例代码:

session_start();

include 'includes/connect.php';

if (isset($_POST['user'], $_POST['pass'])) {
    //assigning parameters to variables.
    $user = $_POST['user'];
    $pass = $_POST['pass'];

    $sql = 'SELECT id FROM users WHERE username=(:user) AND password=(:pass)';

    try {
        $connect = new PDO("mysql:host=$host; dbname=$dbname;", $username, $password);
        $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $values = $connect->prepare($sql);
        $values->bindParam('user', $user, PDO::PARAM_STR);
        $values->bindParam('pass', $pass, PDO::PARAM_STR);
        $values->execute();
        $row_count = $values->rowCount();
        $row = $values->fetch(PDO::FETCH_ASSOC);

        ////////////////////////////
        //user and pass section [DB]
        //$usr_db = $row['username'];
        //$pwd_db = $row['password'];
        ////////////////////////////

        if ($row_count === 1) {
            $_SESSION['Logged_in'] = $user;
            echo 'THIS TEXT REMAINS..';
        }
    } catch (PDOException $e) {
        echo 'Error: ' . $e->getMessage();
    }
}

你还没有给我们提供足够的信息来帮助你,但我要做一个有根据的猜测。您希望文本“此文本保留…”始终显示。之所以不会发生这种情况,是因为除非在每个请求上都发布用户名和密码,否则执行将永远不会达到这一点,我假设不会发生这种情况。如果像这样重新组织代码,可能会得到预期的结果

session_start();

include 'includes/connect.php';

if (isset($_POST['user'], $_POST['pass'])) {
    //assigning parameters to variables.
    $user = $_POST['user'];
    $pass = $_POST['pass'];

    $sql = 'SELECT id FROM users WHERE username=(:user) AND password=(:pass)';

    try {
        $connect = new PDO("mysql:host=$host; dbname=$dbname;", $username, $password);
        $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $values = $connect->prepare($sql);
        $values->bindParam('user', $user, PDO::PARAM_STR);
        $values->bindParam('pass', $pass, PDO::PARAM_STR);
        $values->execute();
        $row_count = $values->rowCount();
        $row = $values->fetch(PDO::FETCH_ASSOC);

        ////////////////////////////
        //user and pass section [DB]
        //$usr_db = $row['username'];
        //$pwd_db = $row['password'];
        ////////////////////////////

        if ($row_count === 1) {
            $_SESSION['Logged_in'] = $user;
        }
    } catch (PDOException $e) {
        echo 'Error: ' . $e->getMessage();
    }
}

// Moved the login check down here so it's executed on every request.
if (array_key_exists('Logged_in', $_SESSION) && $_SESSION['Logged_in'] !== null) {
    echo 'THIS TEXT REMAINS..';
}

你还没有给我们提供足够的信息来帮助你,但我要做一个有根据的猜测。您希望文本“此文本保留…”始终显示。之所以不会发生这种情况,是因为除非在每个请求上都发布用户名和密码,否则执行将永远不会达到这一点,我假设不会发生这种情况。如果像这样重新组织代码,可能会得到预期的结果

session_start();

include 'includes/connect.php';

if (isset($_POST['user'], $_POST['pass'])) {
    //assigning parameters to variables.
    $user = $_POST['user'];
    $pass = $_POST['pass'];

    $sql = 'SELECT id FROM users WHERE username=(:user) AND password=(:pass)';

    try {
        $connect = new PDO("mysql:host=$host; dbname=$dbname;", $username, $password);
        $connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $values = $connect->prepare($sql);
        $values->bindParam('user', $user, PDO::PARAM_STR);
        $values->bindParam('pass', $pass, PDO::PARAM_STR);
        $values->execute();
        $row_count = $values->rowCount();
        $row = $values->fetch(PDO::FETCH_ASSOC);

        ////////////////////////////
        //user and pass section [DB]
        //$usr_db = $row['username'];
        //$pwd_db = $row['password'];
        ////////////////////////////

        if ($row_count === 1) {
            $_SESSION['Logged_in'] = $user;
        }
    } catch (PDOException $e) {
        echo 'Error: ' . $e->getMessage();
    }
}

// Moved the login check down here so it's executed on every request.
if (array_key_exists('Logged_in', $_SESSION) && $_SESSION['Logged_in'] !== null) {
    echo 'THIS TEXT REMAINS..';
}

您不再使用会话信息,只需将会话变量“Logged_in”设置为用户名。如果您想再次获取用户名,您必须执行类似于
$user=$\u SESSION[“Logged\u in”]
的操作。我这样做是为了测试:
一旦您这样做了,这里就可以了?name=admin完成这个词!保留在页面上,直到我删除会话。“那样的话,我也想要同样的。”克劳斯格夫。我遇到的问题是,课程没有保留下来。我不知道为什么。我试过了,但文本没有留在页面上
如果(isset($_SESSION[“Logged_in”]){echo“此文本保留!”}
您不再使用会话信息,只需将会话变量“Logged_in”设置为用户名。如果您想再次获取用户名,您必须执行类似于
$user=$\u SESSION[“Logged\u in”]
的操作。我这样做是为了测试:
一旦您这样做了,这里就可以了?name=admin完成这个词!保留在页面上,直到我删除会话。“那样的话,我也想要同样的。”克劳斯格夫。我遇到的问题是,课程没有保留下来。我不知道为什么。我试过了,但文本没有留在页面上<代码>如果(isset($_SESSION[“Logged_in”]){echo“此文本保留!”}