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

Php 选中“让我登录”时,不显示用户数据

Php 选中“让我登录”时,不显示用户数据,php,Php,我正在制作一个简单的登录脚本,当选中单选按钮时,该脚本应该让用户保持登录状态。 我已经设置了一个cookie,如果选中“让我登录”单选按钮,它将在24小时后过期,并且有效。。。 但是我得到了一些错误,比如:注意:未定义的索引:C:\xampp\htdocs\Webintegrator PHP\MySql&PHP\Register&Login\core\u Login.PHP中的user\u id,在第17行 &警告:mysql_result():无法跳转到第20行C:\xampp\htdocs\

我正在制作一个简单的登录脚本,当选中单选按钮时,该脚本应该让用户保持登录状态。 我已经设置了一个cookie,如果选中“让我登录”单选按钮,它将在24小时后过期,并且有效。。。 但是我得到了一些错误,比如:注意:未定义的索引:C:\xampp\htdocs\Webintegrator PHP\MySql&PHP\Register&Login\core\u Login.PHP中的user\u id,在第17行 &警告:mysql_result():无法跳转到第20行C:\xampp\htdocs\Webintegrator PHP\mysql&PHP\Register&Login\core_Login.PHP中mysql结果索引6的第0行

这些是应该从数据库中显示的用户名和姓氏

但是,在选中单选按钮“Keep me Loggin in”(保持我登录)之前,用户登录时始终会显示它们

下面是登录表单php的代码

<?php

if(isset($_POST['username']) && isset($_POST['password'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];

    $password_hash = md5($password);

    if(!empty($username) && !empty($password)){
        $query = "SELECT id FROM users WHERE username = '" . mysql_real_escape_string($username) . "' AND password = '" . mysql_real_escape_string($password_hash) . "'";
        if($query_run = mysql_query($query)){
            $query_num_rows = mysql_num_rows($query_run);

            if($query_num_rows == 0) {
                echo "Invalid username/password combination";
            } elseif ($query_num_rows == 1) {

                if(isset($_POST['remember_me'])){
                    setcookie("remember_username", $_POST['username'], time()+3600*24);
                    setcookie("remember_password", $_POST['password'], time()+3600*24);

                    $user_id = mysql_result($query_run, 0, 'id');
                    $_SESSION['user_id'] = $user_id;

                    header ('Location: index_login.php');

                } elseif(isset($_POST['keep_me'])){
                    $user_id = mysql_result($query_run, 0, 'id');
                    setcookie('keep_me_loggedin', $user_id, time()+3600*24);

                    header ('Location: index_login.php');

                } else {
                    $user_id = mysql_result($query_run, 0, 'id');
                    $_SESSION['user_id'] = $user_id;

                    header ('Location: index_login.php');                    
                }
            }
        }
    } else {
        echo "You must supply a username & password";
    }
}

?>

<form action="<?php echo $current_file; ?>" method="POST">
    Username:<input type="text" name="username" value="<?php if(isset($_COOKIE['remember_username'])) {echo $_COOKIE['remember_username'];} ?>"><br/><br/>
    Password:<input type="password" name="password" value="<?php if(isset($_COOKIE['remember_password'])) {echo $_COOKIE['remember_password'];} ?>"><br/><br/>
    <input type="radio" name="remember_me"> Remember me?<br/><br/> 
    <input type="radio" name="keep_me"> Keep me logged in?<br/><br/> 
    <input type="submit" name="submit" value="Log in">
</form>
<?php

require 'connect_login.php';
require 'core_login.php';

if(loggedin()) {
    $firstname = getuserfield('firstname');
    $surname = getuserfield('surname');
    echo "You are logged in, " . "$firstname " . "$surname " . "<a href='logout.php'>Log out</a>";
} else {
    include 'login_form.php';
}

?>
<?php

ob_start();
session_start();

$current_file = $_SERVER['SCRIPT_NAME'];

function loggedin(){
    if (isset($_SESSION['user_id']) && !empty($_SESSION['user_id']) || (isset($_COOKIE['keep_me_loggedin'])) && (!empty($_COOKIE['keep_me_loggedin']))) {
        return true;
    } else {
        return false;
    }
}

function getuserfield($field) {
    $query = "SELECT $field FROM users WHERE id = '" . $_SESSION['user_id'] . "'";

    if ($query_run = mysql_query($query)) {
        return mysql_result($query_run, 0, $field);
    }    
}


?>

似乎您只需要执行一些附加条件检查

检查$query\u run是否是有效的mysql查询结果

在尝试将isset($\u SESSION['user\u id'])粘贴到getuserfield()的查询中之前,您需要检查isset($\u SESSION['user\u id'])是否为true

编辑:

我在PHP mysql_query()页面上找到了以下内容:

这意味着您应该使用mysql\u fetch\u array()而不是mysql\u result()来访问已执行查询的结果


运行$query\u正在运行。。正如我所说,我可以使用$_SESSION['user\u id']登录和注销。但是当用户选中单选按钮“让我登录”时,我希望用户使用cookie登录。。因此,用户下次访问该页面时仍应登录。但问题是,当用户使用cookie登录时,它不会显示用户名和姓氏哦,这可能是因为您没有在elseif语句中设置
$\u SESSION['user\u id']
,而是在其他两个语句中设置了它。您应该只有一条
$\u会话['user\u id']=$user\u id
语句,而不是3条。我会在检查$_POST['memory_me']`之前放置它,正如我所说,在尝试访问它之前,您应该检查isset($_SESSION['user_id'])。当您登录/注销时它工作的原因是因为您为这些情况设置了$\u会话['user\u id']。。。但是您没有将其设置为“让我登录”案例。您可能还需要修改loggedin()例程的逻辑。特别是将| |更改为&。好的,现在我已经将
$\u会话['user\u id']
设置为在所有三种情况下都能工作。。现在,当我登录并选中单选按钮“让我登录”时,它会显示用户数据,但当我关闭浏览器并转到index_login.php页面时,它会显示与未定义索引相同的错误,并且不再显示用户数据。。这意味着cookie没有正常工作?
The returned result resource should be passed to mysql_fetch_array(), and other functions for dealing with result tables, to access the returned data.